ya2yaml 0.30 → 0.31

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (4) hide show
  1. data/README.rdoc +6 -1
  2. data/lib/ya2yaml.rb +2 -0
  3. data/test/test.rb +15 -0
  4. metadata +3 -3
@@ -1,6 +1,6 @@
1
1
  = Ya2YAML - An UTF8 safe YAML dumper
2
2
 
3
- Project Contact: Akira FUNAI <mailto:funai.akira@gmail.com>
3
+ Project Contact: Akira FUNAI <akira -at- funai -dot- com>
4
4
 
5
5
  Ya2YAML is "yet another to_yaml". It emits YAML document with complete UTF8 support (string/binary detection, "\u" escape sequences and Unicode specific line breaks). I hope someone might find it useful until Syck/RbYAML come out with UTF8/16 support.
6
6
 
@@ -67,6 +67,7 @@ A String which contains any non-UTF8 character will be regarded as "binary" and
67
67
  :printable_with_syck => true,
68
68
  :escape_b_specific => true,
69
69
  :escape_as_utf8 => true
70
+ :preserve_order => true
70
71
  )
71
72
 
72
73
  # or simply set this for a safe roundtrip with Syck.
@@ -98,6 +99,10 @@ A String which contains any non-UTF8 character will be regarded as "binary" and
98
99
  - default: false
99
100
  - When set to true, Ya2YAML uses Ruby-like escape sequences in UTF8 code instead of "\uXXXX" style in UCS code. It also suppresses use of "\L" and "\P" (escape sequences for LS and PS).
100
101
 
102
+ - :preserve_order
103
+ - default: false
104
+ - When set to true, the order of keys in hashes will be the natural hash order rather than sorted alphabetically or explicitelly (usefull for syck/psych roundtrip and ruby >= 1.9.2)
105
+
101
106
  - :syck_compatible
102
107
  - default: false
103
108
  - When set to true, These options are set to true at once. You have to set this to false when you set them individually.
@@ -54,6 +54,8 @@ class Ya2YAML
54
54
  o = (x_order <=> y_order)
55
55
  (o != 0) ? o : (x.to_s <=> y.to_s)
56
56
  }
57
+ elsif @options[:preserve_order]
58
+ hash_keys = obj.keys
57
59
  else
58
60
  hash_keys = obj.keys.sort {|x, y| x.to_s <=> y.to_s }
59
61
  end
@@ -137,6 +137,21 @@ class TC_Ya2YAML < Test::Unit::TestCase
137
137
  }
138
138
  end
139
139
 
140
+ def test_preserve_order
141
+ h = {}
142
+ h['a'] = 1
143
+ h['c'] = 3
144
+ h['b'] = 2
145
+ y = h.ya2yaml(
146
+ :preserve_order => true
147
+ )
148
+ assert_equal(
149
+ "--- \na: 1\nc: 3\nb: 2\n",
150
+ y,
151
+ 'the natural hash order should be preserved'
152
+ )
153
+ end if RUBY_VERSION >= "1.9"
154
+
140
155
  def test_normalize_line_breaks
141
156
  [
142
157
  ["\n\n\n\n", "--- \"\\n\\n\\n\\n\"\n"],
metadata CHANGED
@@ -4,15 +4,15 @@ version: !ruby/object:Gem::Version
4
4
  prerelease: false
5
5
  segments:
6
6
  - 0
7
- - 30
8
- version: "0.30"
7
+ - 31
8
+ version: "0.31"
9
9
  platform: ruby
10
10
  authors:
11
11
  - Akira FUNAI
12
12
  autorequire:
13
13
  bindir: bin
14
14
  cert_chain:
15
- date: 2010-08-28 00:00:00 +09:00
15
+ date: 2012-02-20 00:00:00 +09:00
16
16
  default_executable:
17
17
  dependencies: []
18
18