RbYAML 0.1.0 → 0.2.0

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 (81) hide show
  1. data/lib/rbyaml.rb +14 -256
  2. data/lib/rbyaml.rb.~1.2.~ +383 -0
  3. data/lib/rbyaml/composer.rb +9 -11
  4. data/lib/rbyaml/{composer.rb.~1.2.~ → composer.rb.~1.3.~} +28 -25
  5. data/lib/rbyaml/constants.rb +95 -0
  6. data/lib/rbyaml/constructor.rb +180 -89
  7. data/lib/rbyaml/{constructor.rb.~1.2.~ → constructor.rb.~1.9.~} +137 -95
  8. data/lib/rbyaml/dumper.rb +12 -9
  9. data/lib/rbyaml/dumper.rb.~1.3.~ +36 -0
  10. data/lib/rbyaml/emitter.rb +14 -28
  11. data/lib/rbyaml/{emitter.rb.~1.2.~ → emitter.rb.~1.6.~} +22 -33
  12. data/lib/rbyaml/error.rb +4 -57
  13. data/lib/rbyaml/error.rb.~1.2.~ +75 -0
  14. data/lib/rbyaml/events.rb +8 -14
  15. data/lib/rbyaml/{events.rb.~1.2.~ → events.rb.~1.4.~} +29 -6
  16. data/lib/rbyaml/nodes.rb +5 -5
  17. data/lib/rbyaml/{nodes.rb.~1.2.~ → nodes.rb.~1.3.~} +13 -9
  18. data/lib/rbyaml/parser.rb +70 -108
  19. data/lib/rbyaml/parser.rb.~1.4.~ +632 -0
  20. data/lib/rbyaml/representer.rb +19 -157
  21. data/lib/rbyaml/representer.rb.old +317 -0
  22. data/lib/rbyaml/{representer.rb.~1.2.~ → representer.rb.~1.5.~} +60 -26
  23. data/lib/rbyaml/resolver.rb +6 -6
  24. data/lib/rbyaml/{resolver.rb.~1.1.~ → resolver.rb.~1.6.~} +20 -20
  25. data/lib/rbyaml/rubytypes.rb +391 -0
  26. data/lib/rbyaml/scanner.rb +123 -225
  27. data/lib/rbyaml/{scanner.rb.~1.2.~ → scanner.rb.~1.5.~} +466 -378
  28. data/lib/rbyaml/serializer.rb +9 -9
  29. data/lib/rbyaml/{serializer.rb.~1.2.~ → serializer.rb.~1.4.~} +19 -17
  30. data/lib/rbyaml/stream.rb +48 -0
  31. data/lib/rbyaml/tag.rb +72 -0
  32. data/lib/rbyaml/tokens.rb +22 -16
  33. data/lib/rbyaml/{tokens.rb.~1.2.~ → tokens.rb.~1.3.~} +44 -4
  34. data/lib/rbyaml/types.rb +146 -0
  35. data/lib/rbyaml/util.rb.~1.3.~ +38 -0
  36. data/lib/rbyaml/yaml.rb +22 -32
  37. data/lib/rbyaml/{yaml.rb.~1.2.~ → yaml.rb.~1.5.~} +17 -17
  38. data/test/load_one.rb +6 -0
  39. data/test/load_one_yaml.rb +6 -0
  40. data/test/output_events.rb +9 -0
  41. data/test/test_add_ctor.rb +51 -0
  42. data/test/test_add_ctor.rb.~1.1.~ +30 -0
  43. data/test/test_bm.rb +2 -2
  44. data/test/test_bm.rb.~1.1.~ +28 -0
  45. data/test/test_gems.rb +10 -0
  46. data/test/test_one.rb.~1.1.~ +5 -0
  47. data/test/test_one_syck.rb +5 -0
  48. data/test/test_rbyaml.rb +63 -32
  49. data/test/test_rbyaml.rb.~1.6.~ +59 -0
  50. data/test/{test_rbyaml.rb.~1.2.~ → test_rbyaml_old.rb} +13 -4
  51. data/test/test_time_events.rb +24 -0
  52. data/test/test_time_nodes.rb +24 -0
  53. data/test/test_time_tokens.rb +24 -0
  54. data/test/yaml/gems_new.yml +147456 -0
  55. data/test/yaml/test1.rb +8 -0
  56. data/test/yaml/test10.rb +14 -0
  57. data/test/yaml/test11.rb +13 -0
  58. data/test/yaml/test12.rb +9 -0
  59. data/test/yaml/test13.rb +9 -0
  60. data/test/yaml/test14.rb +13 -0
  61. data/test/yaml/test15.rb +12 -0
  62. data/test/yaml/test16.rb +11 -0
  63. data/test/yaml/test16.rb.~1.1.~ +11 -0
  64. data/test/yaml/test17.rb +10 -0
  65. data/test/yaml/test18.rb +13 -0
  66. data/test/yaml/test19.rb +9 -0
  67. data/test/yaml/test19.yml +1 -1
  68. data/test/yaml/test2.rb +8 -0
  69. data/test/yaml/test20.rb +11 -0
  70. data/test/yaml/test20.rb.~1.1.~ +9 -0
  71. data/test/yaml/test20.yml +1 -1
  72. data/test/yaml/test3.rb +13 -0
  73. data/test/yaml/test4.rb +13 -0
  74. data/test/yaml/test5.rb +8 -0
  75. data/test/yaml/test6.rb +10 -0
  76. data/test/yaml/test7.rb +15 -0
  77. data/test/yaml/test8.rb +15 -0
  78. data/test/yaml/test9.rb +13 -0
  79. metadata +61 -16
  80. data/lib/rbyaml/dumper.rb.~1.2.~ +0 -43
  81. data/lib/rbyaml/parser.rb.~1.2.~ +0 -494
@@ -1,39 +1,60 @@
1
1
  require 'base64'
2
2
  require 'set'
3
3
 
4
+ require 'rbyaml/util'
5
+
4
6
  require 'rbyaml/error'
5
7
  require 'rbyaml/nodes'
6
8
  require 'rbyaml/composer'
7
9
 
10
+ class Symbol
11
+ def __call(obj,*args)
12
+ obj.send(self,*args)
13
+ end
14
+ end
15
+
16
+ class Proc
17
+ def __call(obj,*args)
18
+ call(obj,*args)
19
+ end
20
+ end
21
+
22
+ class Method
23
+ def __call(obj,*args)
24
+ call(*args)
25
+ end
26
+ end
27
+
28
+
8
29
  module RbYAML
9
30
  class ConstructorError < MarkedYAMLError
10
31
  end
11
32
 
12
- module BaseConstructor
13
- include Composer
14
-
33
+ class BaseConstructor
15
34
  @@yaml_constructors = {}
16
35
  @@yaml_multi_constructors = {}
36
+ @@yaml_multi_regexps = {}
17
37
 
18
- def initialize_constructor
38
+ def initialize(composer)
39
+ @composer = composer
19
40
  @constructed_objects = {}
20
41
  @recursive_objects = {}
21
42
  end
22
43
 
23
44
  def check_data
24
45
  # If there are more documents available?
25
- check_node
46
+ @composer.check_node
26
47
  end
27
48
 
28
49
  def get_data
29
50
  # Construct and return the next document.
30
- construct_document(get_node) if check_node
51
+ construct_document(@composer.get_node) if @composer.check_node
31
52
  end
32
53
 
33
54
  def each_document
34
55
  # Iterator protocol.
35
- while check_node
36
- yield construct_document(get_node)
56
+ while @composer.check_node
57
+ yield construct_document(@composer.get_node)
37
58
  end
38
59
  end
39
60
 
@@ -43,57 +64,65 @@ module RbYAML
43
64
  @recursive_objects = {}
44
65
  data
45
66
  end
67
+
68
+ class RecursiveProxy
69
+ attr_writer :value
70
+ def method_missing(*args)
71
+ @value.send(*args)
72
+ end
73
+ def class
74
+ @value.class
75
+ end
76
+ def to_s
77
+ @value.to_s
78
+ end
79
+ end
46
80
 
47
81
  def construct_object(node)
48
82
  return @constructed_objects[node] if @constructed_objects.include?(node)
49
- raise ConstructorError.new(nil,nil,"found recursive nod",node.start_mark) if @recursive_objects.include?(node)
50
- @recursive_objects[node] = nil
51
- constructor = nil
52
- ruby_cls = RbYAML::tagged_classes[node.tag]
53
- if @@yaml_constructors.include?(node.tag)
54
- constructor = @@yaml_constructors[node.tag]
55
- elsif !ruby_cls.nil? && self.respond_to?(:construct_ruby_object) && (ruby_cls.method_defined?(:yaml_initialize) || ruby_cls.respond_to?(:yaml_new))
56
- constructor = lambda { |node| send(:construct_ruby_object,RbYAML::tagged_classes[node.tag],node) }
57
- else
58
- through = false
59
- for tag_prefix in @@yaml_multi_constructors.keys
83
+ @constructed_objects[node] = RecursiveProxy.new
84
+ constructor = @@yaml_constructors[node.tag]
85
+ if !constructor
86
+ ruby_cls = RbYAML::tagged_classes[node.tag]
87
+ if ruby_cls && (ruby_cls.method_defined?(:yaml_initialize) || ruby_cls.respond_to?(:yaml_new))
88
+ constructor = lambda { |obj,node| send(:construct_ruby_object,ruby_cls,node) }
89
+ else
60
90
  through = true
61
- if Regexp.new("^"+Regexp.escape(tag_prefix)) =~ node.tag
62
- tag_suffix = node.tag[tag_prefix.length..-1]
63
- if Symbol === @@yaml_multi_constructors[tag_prefix]
64
- constructor = lambda { |node| send(@@yaml_multi_constructors[tag_prefix],tag_suffix, node) }
65
- else
66
- constructor = lambda { |node| @@yaml_multi_constructors[tag_prefix].call(tag_suffix, node) }
91
+ for tag_prefix,reg in @@yaml_multi_regexps
92
+ if reg =~ node.tag
93
+ tag_suffix = node.tag[tag_prefix.length..-1]
94
+ constructor = lambda { |obj, node| @@yaml_multi_constructors[tag_prefix].__call(self,tag_suffix, node) }
95
+ through = false
96
+ break
67
97
  end
68
- break
69
98
  end
70
- end
71
- if !through
72
- if @@yaml_multi_constructors.include?(nil)
73
- if Symbol === @@yaml_multi_constructors[nil]
74
- constructor = lambda { |node| send(@@yaml_multi_constructors[nil],node.tag, node) }
99
+ if through
100
+ ctor = @@yaml_multi_constructors[nil]
101
+ if ctor
102
+ constructor = lambda { |obj, node| ctor.__call(self,node.tag,node) }
75
103
  else
76
- constructor = lambda { |node| @@yaml_multi_constructors[nil].call(node.tag, node) }
104
+ ctor = @@yaml_constructors[nil]
105
+ if ctor
106
+ constructor = lambda { |obj, node| ctor.__call(self,node)}
107
+ else
108
+ constructor = lambda { |obj, node| construct_primitive(node) }
109
+ end
77
110
  end
78
- elsif @@yaml_constructors.include?(nil)
79
- constructor = @@yaml_constructors[nil]
80
- else
81
- constructor = lambda { |node| construct_primitive(node) }
82
111
  end
83
112
  end
84
113
  end
85
- data = (Symbol === constructor) ? send(constructor,node) : constructor.call(node)
114
+ data = constructor.__call(self,node)
115
+ @constructed_objects[node].value = data
86
116
  @constructed_objects[node] = data
87
- @recursive_objects.delete(node)
88
117
  data
89
118
  end
90
119
 
91
120
  def construct_primitive(node)
92
- if ScalarNode === node
121
+ if node.__is_scalar
93
122
  construct_scalar(node)
94
- elsif SequenceNode === node
123
+ elsif node.__is_sequence
95
124
  construct_sequence(node)
96
- elsif MappingNode === node
125
+ elsif node.__is_mapping
97
126
  construct_mapping(node)
98
127
  else
99
128
  puts node.tag
@@ -101,8 +130,8 @@ module RbYAML
101
130
  end
102
131
 
103
132
  def construct_scalar(node)
104
- if !ScalarNode === node
105
- if MappingNode === node
133
+ if !node.__is_scalar
134
+ if node.__is_mapping
106
135
  for key_node in node.value.keys
107
136
  if key_node.tag == "tag:yaml.org,2002:value"
108
137
  return construct_scalar(node.value[key_node])
@@ -114,52 +143,50 @@ module RbYAML
114
143
  node.value
115
144
  end
116
145
 
146
+ def construct_private_type(node)
147
+ # construct_scalar(node)
148
+ PrivateType.new(node.tag,node.value)
149
+ end
150
+
117
151
  def construct_sequence(node)
118
- raise ConstructorError.new(nil,nil,"expected a sequence node, but found #{node.tid}",node.start_mark) if !SequenceNode === node
119
- sequence = []
120
- for child in node.value
121
- sequence << construct_object(child)
122
- end
123
- sequence
152
+ raise ConstructorError.new(nil,nil,"expected a sequence node, but found #{node.tid}",node.start_mark) if !node.__is_sequence
153
+ node.value.map {|child| construct_object(child) }
124
154
  end
125
155
 
126
156
  def construct_mapping(node)
127
- raise ConstructorError.new(nil,nil,"expected a mapping node, but found #{node.tid}",node.start_mark) if !MappingNode === node
157
+ raise ConstructorError.new(nil,nil,"expected a mapping node, but found #{node.tid}",node.start_mark) if !node.__is_mapping
128
158
  mapping = {}
129
159
  merge = nil
130
- for key_node in node.value.keys
160
+ for key_node,value_node in node.value
131
161
  if key_node.tag == "tag:yaml.org,2002:merge"
132
162
  raise ConstructorError.new("while constructing a mapping", node.start_mark,"found duplicate merge key", key_node.start_mark) if !merge.nil?
133
- value_node = node.value[key_node]
134
- if MappingNode === value_node
163
+ if value_node.__is_mapping
135
164
  merge = [construct_mapping(value_node)]
136
- elsif SequenceNode === value_node
165
+ elsif value_node.__is_sequence
137
166
  merge = []
138
167
  for subnode in value_node.value
139
- if !MappingNode === subnode
168
+ if !subnode.__is_mapping
140
169
  raise ConstructorError.new("while constructing a mapping",node.start_mark,"expected a mapping for merging, but found #{subnode.tid}", subnode.start_mark)
141
170
  end
142
- merge << construct_mapping(subnode)
171
+ merge.unshift(construct_mapping(subnode))
143
172
  end
144
- merge.reverse!
145
173
  else
146
174
  raise ConstructorError.new("while constructing a mapping", node.start_mark,"expected a mapping or list of mappings for merging, but found #{value_node.tid}", value_node.start_mark)
147
175
  end
148
176
  elsif key_node.tag == "tag:yaml.org,2002:value"
149
177
  raise ConstructorError.new("while construction a mapping", node.start_mark,"found duplicate value key", key_node.start_mark) if mapping.include?("=")
150
- value = construct_object(node.value[key_node])
178
+ value = construct_object(value_node)
151
179
  mapping["="] = value
152
-
153
180
  else
154
181
  key = construct_object(key_node)
182
+ value = construct_object(value_node)
183
+ mapping[key] = value
155
184
  # raise ConstructorError.new("while constructing a mapping", node.start_mark,"found duplicate key", key_node.start_mark) if mapping.include?(key)
156
185
  end
157
- value = construct_object(node.value[key_node])
158
- mapping[key] = value
159
186
  end
160
187
  if !merge.nil?
161
188
  merge << mapping
162
- mapping = {}
189
+ mapping = { }
163
190
  for submapping in merge
164
191
  mapping.merge!(submapping)
165
192
  end
@@ -168,14 +195,8 @@ module RbYAML
168
195
  end
169
196
 
170
197
  def construct_pairs(node)
171
- raise ConstructorError.new(nil,nil,"expected a mapping node, but found #{node.tid}",node.start_mark) if !MappingNode === node
172
- pairs = []
173
- for key_node in node.value.keys
174
- key = construct_object(key_node)
175
- value = construct_object(node.value[key_node])
176
- pairs << [key, value]
177
- end
178
- pairs
198
+ raise ConstructorError.new(nil,nil,"expected a mapping node, but found #{node.tid}",node.start_mark) if !node.__is_mapping
199
+ node.value.collect {|key_node,value_node| [construct_object(key_node), construct_object(value_node)] }
179
200
  end
180
201
 
181
202
  def self.add_constructor(tag, constructor)
@@ -184,20 +205,19 @@ module RbYAML
184
205
 
185
206
  def self.add_multi_constructor(tag_prefix, multi_constructor)
186
207
  @@yaml_multi_constructors[tag_prefix] = multi_constructor
208
+ @@yaml_multi_regexps[tag_prefix] = Regexp.new("^"+Regexp.escape(tag_prefix))
187
209
  end
188
210
  end
189
211
 
190
- module SafeConstructor
191
- include BaseConstructor
192
-
212
+ class SafeConstructor < BaseConstructor
193
213
  def construct_yaml_null(node)
194
214
  construct_scalar(node)
195
215
  nil
196
216
  end
197
217
 
198
218
  BOOL_VALUES = {
199
- "y" => true,
200
- "n" => false,
219
+ # "y" => true,
220
+ # "n" => false,
201
221
  "yes" => true,
202
222
  "no" => false,
203
223
  "true" => true,
@@ -208,23 +228,32 @@ module RbYAML
208
228
 
209
229
  def construct_yaml_bool(node)
210
230
  value = construct_scalar(node)
211
- SafeConstructor::BOOL_VALUES[value.downcase]
231
+ BOOL_VALUES[value.downcase]
212
232
  end
213
233
 
214
234
  def construct_yaml_int(node)
215
235
  value = construct_scalar(node).to_s
216
236
  value = value.gsub(/_/, '')
217
237
  sign = +1
218
- sign = -1 if value[0] == ?-
219
- value = value[1..-1] if "+-".include?(value[0])
238
+ first = value[0]
239
+ if first == ?-
240
+ sign = -1
241
+ value.slice!(0)
242
+ elsif first == ?+
243
+ value.slice!(0)
244
+ end
245
+ base = 10
220
246
  if value == "0"
221
247
  return 0
222
248
  elsif value[0..1] == "0b"
223
- return sign*value[2..-1].to_i(2)
249
+ value.slice!(0..1)
250
+ base = 2
224
251
  elsif value[0..1] == "0x"
225
- return sign*value[2..-1].to_i(16)
252
+ value.slice!(0..1)
253
+ base = 16
226
254
  elsif value[0] == ?0
227
- return sign*value[1..-1].to_i(8)
255
+ value.slice!(0)
256
+ base = 8
228
257
  elsif value.include?(?:)
229
258
  digits = (value.split(/:/).map {|val| val.to_i}).reverse
230
259
  base = 1
@@ -237,6 +266,7 @@ module RbYAML
237
266
  else
238
267
  return sign*value.to_i
239
268
  end
269
+ return sign*value.to_i(base)
240
270
  end
241
271
 
242
272
  INF_VALUE = +1.0/0.0
@@ -246,12 +276,17 @@ module RbYAML
246
276
  value = construct_scalar(node).to_s
247
277
  value = value.gsub(/_/, '')
248
278
  sign = +1
249
- sign = -1 if value[0] == ?-
250
- value = value[1..-1] if "+-".include?(value[0])
279
+ first = value[0]
280
+ if first == ?-
281
+ sign = -1
282
+ value.slice!(0)
283
+ elsif first == ?+
284
+ value.slice!(0)
285
+ end
251
286
  if value.downcase == ".inf"
252
- return sign*SafeConstructor::INF_VALUE
287
+ return sign*INF_VALUE
253
288
  elsif value.downcase == ".nan"
254
- return SafeConstructor::NAN_VALUE
289
+ return NAN_VALUE
255
290
  elsif value.include?(?:)
256
291
  digits = (value.split(/:/).map {|val| val.to_f}).reverse
257
292
  base = 1
@@ -268,14 +303,21 @@ module RbYAML
268
303
 
269
304
  def construct_yaml_binary(node)
270
305
  value = construct_scalar(node)
271
- Base64.decode64(value.to_s)
306
+ Base64.decode64(value.split(/[\n\x85]|(?:\r[^\n])/).to_s)
272
307
  end
273
308
 
274
309
  TIMESTAMP_REGEXP = /^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:(?:[Tt]|[ \t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\.([0-9]*))?(?:[ \t]*(?:Z|([-+][0-9][0-9]?)(?::([0-9][0-9])?)?))?)?$/
310
+
311
+ YMD_REGEXP = /^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)$/
275
312
 
276
313
  def construct_yaml_timestamp(node)
277
- value = construct_scalar(node)
278
- match = SafeConstructor::TIMESTAMP_REGEXP.match(node.value)
314
+ if (match = YMD_REGEXP.match(node.value))
315
+ values = match.captures.map {|val| val.to_i}
316
+ return Date.new(values[0],values[1],values[2])
317
+ end
318
+ unless (match = TIMESTAMP_REGEXP.match(node.value))
319
+ return construct_private_type(node)
320
+ end
279
321
  values = match.captures.map {|val| val.to_i}
280
322
  fraction = values[6]
281
323
  if fraction != 0
@@ -292,11 +334,11 @@ module RbYAML
292
334
  # Note: we do not check for duplicate keys, because its too
293
335
  # CPU-expensive.
294
336
  raise ConstructorError.new("while constructing an ordered map", node.start_mark,
295
- "expected a sequence, but found #{node.tid}", node.start_mark) if !SequenceNode === node
337
+ "expected a sequence, but found #{node.tid}", node.start_mark) if !node.__is_sequence
296
338
  omap = []
297
339
  for subnode in node.value
298
340
  raise ConstructorError.new("while constructing an ordered map", node.start_mark,
299
- "expected a mapping of length 1, but found #{subnode.tid}",subnode.start_mark) if !MappingNode === subnode
341
+ "expected a mapping of length 1, but found #{subnode.tid}",subnode.start_mark) if !subnode.__is_mapping
300
342
  raise ConstructorError.new("while constructing an ordered map", node.start_mark,
301
343
  "expected a single mapping item, but found #{subnode.value.length} items",subnode.start_mark) if subnode.value.length != 1
302
344
  key_node = subnode.value.keys[0]
@@ -316,7 +358,8 @@ module RbYAML
316
358
  end
317
359
 
318
360
  def construct_yaml_str(node)
319
- construct_scalar(node).to_s
361
+ val = construct_scalar(node).to_s
362
+ val.empty? ? nil : val
320
363
  end
321
364
 
322
365
  def construct_yaml_seq(node)
@@ -359,7 +402,7 @@ module RbYAML
359
402
  end
360
403
  end
361
404
 
362
- BaseConstructor::add_constructor('tag:yaml.org,2002:null',:construct_yaml_null)
405
+ SafeConstructor::add_constructor('tag:yaml.org,2002:null',:construct_yaml_null)
363
406
  BaseConstructor::add_constructor('tag:yaml.org,2002:bool',:construct_yaml_bool)
364
407
  BaseConstructor::add_constructor('tag:yaml.org,2002:int',:construct_yaml_int)
365
408
  BaseConstructor::add_constructor('tag:yaml.org,2002:float',:construct_yaml_float)
@@ -371,11 +414,10 @@ module RbYAML
371
414
  BaseConstructor::add_constructor('tag:yaml.org,2002:str',:construct_yaml_str)
372
415
  BaseConstructor::add_constructor('tag:yaml.org,2002:seq',:construct_yaml_seq)
373
416
  BaseConstructor::add_constructor('tag:yaml.org,2002:map',:construct_yaml_map)
374
- BaseConstructor::add_constructor(nil,:construct_undefined)
417
+ BaseConstructor::add_constructor(nil,:construct_private_type)
375
418
 
376
419
  BaseConstructor::add_multi_constructor("!ruby/object:",:construct_ruby)
377
420
 
378
- module Constructor
379
- include SafeConstructor
421
+ class Constructor < SafeConstructor
380
422
  end
381
423
  end
@@ -1,3 +1,4 @@
1
+ require 'rbyaml/constants'
1
2
  require 'rbyaml/emitter'
2
3
  require 'rbyaml/serializer'
3
4
  require 'rbyaml/representer'
@@ -6,30 +7,32 @@ require 'rbyaml/resolver'
6
7
  module RbYAML
7
8
  class CommonDumper
8
9
  attr_accessor :emitter, :serializer, :representer, :resolver
9
- def initialize(stream,default_style=nil,default_flow_style=nil,canonical=nil,indent=nil,width=nil,line_break=nil,explicit_start=nil,explicit_end=nil,version=nil,tags=nil,emitter=Emitter,serializer=Serializer,representer=Representer,resolver=Resolver)
10
+ def initialize(stream,opts={})
10
11
  super()
11
- @emitter = emitter.new(stream,canonical,indent,width,line_break)
12
- @resolver = resolver.new
13
- @serializer = serializer.new(@emitter,@resolver,explicit_start,explicit_end,version,tags)
14
- @representer = representer.new(@serializer,default_style,default_flow_style)
12
+ opts = DEFAULTS.merge(opts)
13
+ @emitter = opts[:Emitter].new(stream,opts)
14
+ @resolver = opts[:Resolver].new
15
+ @serializer = opts[:Serializer].new(@emitter,@resolver,opts)
16
+ @representer = opts[:Representer].new(@serializer,opts)
15
17
  end
16
18
  end
17
19
 
18
20
  class BaseDumper < CommonDumper
19
21
  attr_accessor
20
- def initialize(stream,default_style=nil,default_flow_style=nil,canonical=nil,indent=nil,width=nil,line_break=nil,explicit_start=nil,explicit_end=nil,version=nil,tags=nil,emitter=Emitter,serializer=Serializer,representer=BaseRepresenter,resolver=BaseResolver)
21
- super
22
+ def initialize(stream,opts={})
23
+ super(stream,DEFAULTS.merge({:Representer=>RbYAML::BaseRepresenter, :Resolver=>RbYAML::BaseResolver}).merge(opts))
22
24
  end
23
25
  end
24
26
 
25
27
  class SafeDumper < CommonDumper
26
- def initialize(stream,default_style=nil,default_flow_style=nil,canonical=nil,indent=nil,width=nil,line_break=nil,explicit_start=nil,explicit_end=nil,version=nil,tags=nil,emitter=Emitter,serializer=Serializer,representer=SafeRepresenter,resolver=Resolver)
28
+ def initialize(stream,opts={})
29
+ super(stream,DEFAULTS.merge({:Representer=>RbYAML::SafeRepresenter}).merge(opts))
27
30
  super
28
31
  end
29
32
  end
30
33
 
31
34
  class Dumper < CommonDumper
32
- def initialize(stream,default_style=nil,default_flow_style=nil,canonical=nil,indent=nil,width=nil,line_break=nil,explicit_start=nil,explicit_end=nil,version=nil,tags=nil,emitter=Emitter,serializer=Serializer,representer=Representer,resolver=Resolver)
35
+ def initialize(stream,opts={})
33
36
  super
34
37
  end
35
38
  end