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
@@ -0,0 +1,146 @@
1
+ # -*- mode: ruby; ruby-indent-level: 4 -*- vim: sw=4
2
+ #
3
+ # Classes required by the full core typeset
4
+ #
5
+ module RbYAML
6
+ #
7
+ # Default private type
8
+ #
9
+ class PrivateType
10
+ def self.tag_subclasses?; false; end
11
+ attr_accessor :type_id, :value
12
+ verbose, $VERBOSE = $VERBOSE, nil
13
+ def initialize( type, val )
14
+ @type_id = type; @value = val
15
+ @value.taguri = "x-private:#{ @type_id }"
16
+ end
17
+ def to_yaml_node( repr )
18
+ @value.to_yaml_node( repr )
19
+ end
20
+ ensure
21
+ $VERBOSE = verbose
22
+ end
23
+
24
+ #
25
+ # Default domain type
26
+ #
27
+ class DomainType
28
+ def self.tag_subclasses?; false; end
29
+ attr_accessor :domain, :type_id, :value
30
+ verbose, $VERBOSE = $VERBOSE, nil
31
+ def initialize( domain, type, val )
32
+ @domain = domain; @type_id = type; @value = val
33
+ @value.taguri = "tag:#{ @domain }:#{ @type_id }"
34
+ end
35
+ def to_yaml_node( repr )
36
+ @value.to_yaml_node( repr )
37
+ end
38
+ ensure
39
+ $VERBOSE = verbose
40
+ end
41
+
42
+ #
43
+ # Builtin collection: !omap
44
+ #
45
+ class Omap < ::Array
46
+ yaml_as "tag:yaml.org,2002:omap"
47
+ def yaml_initialize( tag, val )
48
+ if Array === val
49
+ val.each do |v|
50
+ if Hash === v
51
+ concat( v.to_a ) # Convert the map to a sequence
52
+ else
53
+ raise YAML::Error, "Invalid !omap entry: " + val.inspect
54
+ end
55
+ end
56
+ else
57
+ raise YAML::Error, "Invalid !omap: " + val.inspect
58
+ end
59
+ self
60
+ end
61
+ def self.[]( *vals )
62
+
63
+ o = Omap.new
64
+ 0.step( vals.length - 1, 2 ) do |i|
65
+ o[vals[i]] = vals[i+1]
66
+ end
67
+ o
68
+ end
69
+ def []( k )
70
+ self.assoc( k ).to_a[1]
71
+ end
72
+ def []=( k, *rest )
73
+ val, set = rest.reverse
74
+ if ( tmp = self.assoc( k ) ) and not set
75
+ tmp[1] = val
76
+ else
77
+ self << [ k, val ]
78
+ end
79
+ val
80
+ end
81
+ def has_key?( k )
82
+ self.assoc( k ) ? true : false
83
+ end
84
+ def is_complex_yaml?
85
+ true
86
+ end
87
+ def to_yaml_node( repr )
88
+ RbYAML::quick_emit_node( self.object_id, repr ) do |out|
89
+ out.seq( taguri, self.collect {|v| Hash[*v]}, to_yaml_style )
90
+ end
91
+ end
92
+ end
93
+
94
+ #
95
+ # Builtin collection: !pairs
96
+ #
97
+ class Pairs < ::Array
98
+ yaml_as "tag:yaml.org,2002:pairs"
99
+ def yaml_initialize( tag, val )
100
+ if Array === val
101
+ val.each do |v|
102
+ if Hash === v
103
+ concat( v.to_a ) # Convert the map to a sequence
104
+ else
105
+ raise YAML::Error, "Invalid !pairs entry: " + val.inspect
106
+ end
107
+ end
108
+ else
109
+ raise YAML::Error, "Invalid !pairs: " + val.inspect
110
+ end
111
+ self
112
+ end
113
+ def self.[]( *vals )
114
+ p = Pairs.new
115
+ 0.step( vals.length - 1, 2 ) { |i|
116
+ p[vals[i]] = vals[i+1]
117
+ }
118
+ p
119
+ end
120
+ def []( k )
121
+ self.assoc( k ).to_a
122
+ end
123
+ def []=( k, val )
124
+ self << [ k, val ]
125
+ val
126
+ end
127
+ def has_key?( k )
128
+ self.assoc( k ) ? true : false
129
+ end
130
+ def is_complex_yaml?
131
+ true
132
+ end
133
+ def to_yaml_node( repr )
134
+ RbYAML::quick_emit_node( self.object_id, opts ) do |out|
135
+ out.seq( taguri, self.collect {|v| Hash[*v]}, to_yaml_style )
136
+ end
137
+ end
138
+ end
139
+
140
+ #
141
+ # Builtin collection: !set
142
+ #
143
+ class Set < ::Hash
144
+ yaml_as "tag:yaml.org,2002:set"
145
+ end
146
+ end
@@ -0,0 +1,38 @@
1
+ class Object
2
+ def __is_str; false end
3
+ def __is_sym; false end
4
+ def __is_a; false end
5
+ def __is_int; false end
6
+ end
7
+
8
+ class String
9
+ def __is_str; true end
10
+ end
11
+
12
+ class Symbol
13
+ def __is_sym; true end
14
+ end
15
+
16
+ class Array
17
+ def __is_a; true end
18
+ end
19
+
20
+ class Integer
21
+ def __is_int; true end
22
+ end
23
+
24
+ class Fixnum
25
+ def __is_ascii_num
26
+ self <= ?9 && self >= ?0
27
+ end
28
+ end
29
+
30
+ module RbYAML
31
+ class PrivateType
32
+ attr_accessor :type_id, :value
33
+ def initialize( type, val )
34
+ @type_id = type;
35
+ @value = val
36
+ end
37
+ end
38
+ end
@@ -48,24 +48,24 @@ module RbYAML
48
48
  _load(stream, SafeLoader)
49
49
  end
50
50
 
51
- def self._emit(events, stream=nil, dumper=Dumper,default_style=nil,default_flow_style=nil,canonical=nil, indent=nil, width=nil,line_break=nil)
51
+ def self._emit(events, stream=nil, dump=Dumper, opts={})
52
52
  if stream.nil?
53
53
  require 'stringio'
54
54
  stream = StringIO.new
55
55
  end
56
- dumper = dumper.new(stream,default_style,default_flow_style,canonical,indent,width,line_break)
56
+ dumper = dump.new(stream,opts)
57
57
  for event in events
58
58
  dumper.emit(event)
59
59
  end
60
60
  stream.string if StringIO === stream
61
61
  end
62
62
 
63
- def self._serialize_all(nodes,stream=nil,dumper=Dumper,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)
63
+ def self._serialize_all(nodes,stream=nil, dump=Dumper, opts={})
64
64
  if stream.nil?
65
65
  require 'stringio'
66
66
  stream = StringIO.new
67
67
  end
68
- dumper = dumper.new(stream,default_style,default_flow_style,canonical,indent,width,line_break,version,tags,explicit_start,explicit_end)
68
+ dumper = dump.new(stream,opts)
69
69
  dumper.serializer.open
70
70
  for node in nodes
71
71
  dumper.serializer.serialize(node)
@@ -74,16 +74,16 @@ module RbYAML
74
74
  stream.string if StringIO === stream
75
75
  end
76
76
 
77
- def self._serialize(node, stream=nil, dumper=Dumper, *kwds)
78
- _serialize_all([node], stream, dumper, *kwds)
77
+ def self._serialize(node, stream=nil, dump=Dumper, opts={})
78
+ _serialize_all([node], stream, dump, opts)
79
79
  end
80
80
 
81
- def self._dump_all(documents,stream=nil,dumper=Dumper,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)
81
+ def self._dump_all(documents,stream=nil, dump=Dumper, opts={})
82
82
  if stream.nil?
83
83
  require 'stringio'
84
84
  stream = StringIO.new
85
85
  end
86
- dumper = dumper.new(stream,default_style,default_flow_style,canonical,indent,width,line_break,version,tags,explicit_start,explicit_end)
86
+ dumper = dump.new(stream,opts)
87
87
  dumper.serializer.open
88
88
  for data in documents
89
89
  dumper.representer.represent(data)
@@ -92,42 +92,32 @@ module RbYAML
92
92
  stream.string if StringIO === stream
93
93
  end
94
94
 
95
- def self._dump(data, stream=nil, dumper=Dumper, *kwds)
96
- _dump_all([data], stream, dumper, *kwds)
95
+ def self._dump(data, stream=nil,dump=Dumper, opts={})
96
+ _dump_all([data], stream, dump, opts)
97
97
  end
98
98
 
99
- def self._safe_dump_all(documents, stream=nil, *kwds)
100
- _dump_all(documents, stream, SafeDumper, *kwds)
101
- end
102
-
103
- def self._safe_dump(data, stream=nil, *kwds)
104
- _dump_all([data], stream, SafeDumper, *kwds)
105
- end
106
-
107
- def self._add_implicit_resolver(tag, regexp, first=nil, loader=Loader, dumper=Dumper)
108
- loader.add_implicit_resolver(tag, regexp, first)
109
- dumper.add_implicit_resolver(tag, regexp, first)
99
+ def self._add_implicit_resolver(tag, regexp, first=nil, resolver=BaseResolver)
100
+ resolver.add_implicit_resolver(tag, regexp, first)
110
101
  end
111
102
 
112
- def self._add_path_resolver(tag, path, kind=nil, loader=Loader, dumper=Dumper)
113
- loader.add_path_resolver(tag, path, kind)
114
- lumper.add_path_resolver(tag, path, kind)
103
+ def self._add_path_resolver(tag, path, kind=nil, resolver=BaseResolver)
104
+ resolver.add_path_resolver(tag, path, kind)
115
105
  end
116
106
 
117
- def self._add_constructor(tag, constructor, loader=Loader)
118
- loader.add_constructor(tag, constructor)
107
+ def self._add_constructor(tag, constructor, ctor=Constructor)
108
+ ctor.add_constructor(tag, constructor)
119
109
  end
120
110
 
121
- def self._add_multi_constructor(tag_prefix, multi_constructor, loader=Loader)
122
- loader.add_multi_constructor(tag_prefix, multi_constructor)
111
+ def self._add_multi_constructor(tag_prefix, multi_constructor, ctor=Constructor)
112
+ ctor.add_multi_constructor(tag_prefix, multi_constructor)
123
113
  end
124
114
 
125
- def self._add_representer(data_type, representer, dumper=Dumper)
126
- dumper.add_representer(data_type, representer)
115
+ def self._add_representer(data_type, representer, rep=BaseRepresenter)
116
+ rep.add_representer(data_type, representer)
127
117
  end
128
118
 
129
- def self._add_multi_representer(data_type, multi_representer, dumper=Dumper)
130
- dumper.add_multi_representer(data_type, multi_representer)
119
+ def self._add_multi_representer(data_type, multi_representer, rep=BaseRepresenter)
120
+ rep.add_multi_representer(data_type, multi_representer)
131
121
  end
132
122
 
133
123
  def self._dump_ruby_object(data, dumper=Dumper)
@@ -12,32 +12,32 @@ require 'rbyaml/dumper'
12
12
  module RbYAML
13
13
  def self._scan(stream, loader=Loader)
14
14
  l = loader.new(stream)
15
- yield l.get_token while l.check_token
15
+ yield l.scanner.get_token while l.scanner.check_token
16
16
  end
17
17
 
18
18
  def self._parse(stream, loader=Loader)
19
19
  l = loader.new(stream)
20
- yield l.get_event while l.check_event
20
+ yield l.parser.get_event while l.parser.check_event
21
21
  end
22
22
 
23
23
  def self._compose(stream, loader=Loader)
24
24
  l = loader.new(stream)
25
- l.get_node if l.check_node
25
+ l.composer.get_node if l.composer.check_node
26
26
  end
27
27
 
28
28
  def self._compose_all(stream, loader=Loader)
29
29
  l = loader.new(stream)
30
- yield l.get_node while l.check_node
30
+ yield l.composer.get_node while l.composer.check_node
31
31
  end
32
32
 
33
33
  def self._load_all(stream, loader=Loader)
34
34
  l = loader.new(stream)
35
- yield l.get_data while l.check_data
35
+ yield l.constructor.get_data while l.constructor.check_data
36
36
  end
37
37
 
38
38
  def self._load(stream, loader=Loader)
39
39
  l = loader.new(stream)
40
- l.get_data if l.check_data
40
+ l.constructor.get_data if l.constructor.check_data
41
41
  end
42
42
 
43
43
  def self._safe_load_all(stream)
@@ -60,17 +60,17 @@ module RbYAML
60
60
  stream.string if StringIO === stream
61
61
  end
62
62
 
63
- def self._serialize_all(nodes,stream=nil,dumper=Dumper,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)
63
+ def self._serialize_all(nodes,stream=nil,dumper=Dumper,default_style=nil,default_flow_style=nil,canonical=nil,indent=nil,width=nil,line_break=nil,explicit_start=true,explicit_end=nil,version=nil,tags=nil)
64
64
  if stream.nil?
65
65
  require 'stringio'
66
66
  stream = StringIO.new
67
67
  end
68
- dumper = dumper.new(stream,default_style,default_flow_style,canonical,indent,width,line_break,version,tags,explicit_start,explicit_end)
69
- dumper.open
68
+ dumper = dumper.new(stream,default_style,default_flow_style,canonical,indent,width,line_break,explicit_start,explicit_end,version,tags)
69
+ dumper.serializer.open
70
70
  for node in nodes
71
- dumper.serialize(node)
71
+ dumper.serializer.serialize(node)
72
72
  end
73
- dumper.close
73
+ dumper.serializer.close
74
74
  stream.string if StringIO === stream
75
75
  end
76
76
 
@@ -78,17 +78,17 @@ module RbYAML
78
78
  _serialize_all([node], stream, dumper, *kwds)
79
79
  end
80
80
 
81
- def self._dump_all(documents,stream=nil,dumper=Dumper,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)
81
+ def self._dump_all(documents,stream=nil,dumper=Dumper,default_style=nil,default_flow_style=nil,canonical=nil,indent=nil,width=nil,line_break=nil,explicit_start=true,explicit_end=nil,version=nil,tags=nil)
82
82
  if stream.nil?
83
83
  require 'stringio'
84
84
  stream = StringIO.new
85
85
  end
86
- dumper = dumper.new(stream,default_style,default_flow_style,canonical,indent,width,line_break,version,tags,explicit_start,explicit_end)
87
- dumper.open
86
+ dumper = dumper.new(stream,default_style,default_flow_style,canonical,indent,width,line_break,explicit_start,explicit_end,version,tags)
87
+ dumper.serializer.open
88
88
  for data in documents
89
- dumper.represent(data)
89
+ dumper.representer.represent(data)
90
90
  end
91
- dumper.close
91
+ dumper.serializer.close
92
92
  stream.string if StringIO === stream
93
93
  end
94
94
 
@@ -111,7 +111,7 @@ module RbYAML
111
111
 
112
112
  def self._add_path_resolver(tag, path, kind=nil, loader=Loader, dumper=Dumper)
113
113
  loader.add_path_resolver(tag, path, kind)
114
- lumper.add_path_resolver(tag, path, kind)
114
+ dumper.add_path_resolver(tag, path, kind)
115
115
  end
116
116
 
117
117
  def self._add_constructor(tag, constructor, loader=Loader)
@@ -0,0 +1,6 @@
1
+ $:.unshift File.join(File.dirname(__FILE__), "..", "lib")
2
+
3
+ require 'rbyaml'
4
+ require 'pp'
5
+
6
+ pp open(File.expand_path(ARGV[0]),"r") {|f| RbYAML.load(f)}
@@ -0,0 +1,6 @@
1
+ $:.unshift File.join(File.dirname(__FILE__), "..", "lib")
2
+
3
+ require 'yaml'
4
+ require 'pp'
5
+
6
+ pp open(File.expand_path(ARGV[0]),"r") {|f| YAML.load(f)}
@@ -0,0 +1,9 @@
1
+ $:.unshift File.join(File.dirname(__FILE__), "..", "lib")
2
+
3
+ require 'rbyaml'
4
+
5
+ x = File.read(ARGV[0])
6
+ RbYAML::Parser.new(RbYAML::Scanner.new(StringIO.new(x))).each_event { |eve|
7
+ puts "org.jvyaml.events.#{eve.class.to_s.split('::').last}"
8
+ }
9
+
@@ -0,0 +1,51 @@
1
+ $:.unshift File.join(File.dirname(__FILE__), "..", "lib")
2
+
3
+ require 'ostruct'
4
+ require 'rbyaml'
5
+
6
+ class TrueClass; def to_sym; :true end; end and class FalseClass; def to_sym; :false end; end
7
+
8
+ data = <<-"END"
9
+ ---
10
+ x: 1
11
+ y: 2
12
+ z: 3
13
+ END
14
+
15
+ datay = <<-"END"
16
+ ---
17
+ &verily
18
+ lemurs:
19
+ unite: *verily
20
+ beneath:
21
+ - patagonian
22
+ - bread
23
+ - products
24
+ thusly: [1, 2, 3, 4]
25
+ END
26
+
27
+ datax = <<-"END"
28
+ ---
29
+ foo: 1
30
+ bar:
31
+ baz: [1, 2, 3]
32
+ quux: 42
33
+ doctors:
34
+ - William Hartnell
35
+ - Patrick Troughton
36
+ - Jon Pertwee
37
+ - Tom Baker
38
+ - Peter Davison
39
+ - Colin Baker
40
+ - Sylvester McCoy
41
+ - Paul McGann
42
+ - Christopher Eccleston
43
+ - David Tennant
44
+ a: {x: 1, w: 2, z: 3}
45
+ END
46
+
47
+ RbYAML.add_builtin_ctor("map") {|ctor,node|
48
+ OpenStruct.new(ctor.construct_mapping(node))
49
+ }
50
+
51
+ puts RbYAML.load(data)