lancepantz / clj-yaml

YAML encoding and decoding for Clojure via SnakeYAML
Other
91 stars 52 forks source link

Use raw map key when it cannot be keywordized #17

Closed elliot42 closed 10 years ago

elliot42 commented 10 years ago

YAML allows the keys in a map to be arbitrary nodes: scalar, sequence or mapping. [1] Prior to this commit, the keywordize option was incorrectly setting map keys to nil for any keys that could not be keywordized via (keyword k). For example, a valid integer key "123: 456" would be parsed as {nil 456}, because (keyword 123) evals to nil.

This commit fixes the issue by keywordizing any map key that can be keyworded, and otherwise using the raw key if (keyword k) is nil.

This fixes Github lancepantz/clj-yaml issue #15. [2]

[1] http://www.yaml.org/spec/1.2/spec.html#id2764044 [2] https://github.com/lancepantz/clj-yaml/issues/15

elliot42 commented 10 years ago

Oops, this should only be including specific commits, not my entire HEAD of my master. Will resubmit with specific commits.