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.
- data/lib/rbyaml.rb +14 -256
- data/lib/rbyaml.rb.~1.2.~ +383 -0
- data/lib/rbyaml/composer.rb +9 -11
- data/lib/rbyaml/{composer.rb.~1.2.~ → composer.rb.~1.3.~} +28 -25
- data/lib/rbyaml/constants.rb +95 -0
- data/lib/rbyaml/constructor.rb +180 -89
- data/lib/rbyaml/{constructor.rb.~1.2.~ → constructor.rb.~1.9.~} +137 -95
- data/lib/rbyaml/dumper.rb +12 -9
- data/lib/rbyaml/dumper.rb.~1.3.~ +36 -0
- data/lib/rbyaml/emitter.rb +14 -28
- data/lib/rbyaml/{emitter.rb.~1.2.~ → emitter.rb.~1.6.~} +22 -33
- data/lib/rbyaml/error.rb +4 -57
- data/lib/rbyaml/error.rb.~1.2.~ +75 -0
- data/lib/rbyaml/events.rb +8 -14
- data/lib/rbyaml/{events.rb.~1.2.~ → events.rb.~1.4.~} +29 -6
- data/lib/rbyaml/nodes.rb +5 -5
- data/lib/rbyaml/{nodes.rb.~1.2.~ → nodes.rb.~1.3.~} +13 -9
- data/lib/rbyaml/parser.rb +70 -108
- data/lib/rbyaml/parser.rb.~1.4.~ +632 -0
- data/lib/rbyaml/representer.rb +19 -157
- data/lib/rbyaml/representer.rb.old +317 -0
- data/lib/rbyaml/{representer.rb.~1.2.~ → representer.rb.~1.5.~} +60 -26
- data/lib/rbyaml/resolver.rb +6 -6
- data/lib/rbyaml/{resolver.rb.~1.1.~ → resolver.rb.~1.6.~} +20 -20
- data/lib/rbyaml/rubytypes.rb +391 -0
- data/lib/rbyaml/scanner.rb +123 -225
- data/lib/rbyaml/{scanner.rb.~1.2.~ → scanner.rb.~1.5.~} +466 -378
- data/lib/rbyaml/serializer.rb +9 -9
- data/lib/rbyaml/{serializer.rb.~1.2.~ → serializer.rb.~1.4.~} +19 -17
- data/lib/rbyaml/stream.rb +48 -0
- data/lib/rbyaml/tag.rb +72 -0
- data/lib/rbyaml/tokens.rb +22 -16
- data/lib/rbyaml/{tokens.rb.~1.2.~ → tokens.rb.~1.3.~} +44 -4
- data/lib/rbyaml/types.rb +146 -0
- data/lib/rbyaml/util.rb.~1.3.~ +38 -0
- data/lib/rbyaml/yaml.rb +22 -32
- data/lib/rbyaml/{yaml.rb.~1.2.~ → yaml.rb.~1.5.~} +17 -17
- data/test/load_one.rb +6 -0
- data/test/load_one_yaml.rb +6 -0
- data/test/output_events.rb +9 -0
- data/test/test_add_ctor.rb +51 -0
- data/test/test_add_ctor.rb.~1.1.~ +30 -0
- data/test/test_bm.rb +2 -2
- data/test/test_bm.rb.~1.1.~ +28 -0
- data/test/test_gems.rb +10 -0
- data/test/test_one.rb.~1.1.~ +5 -0
- data/test/test_one_syck.rb +5 -0
- data/test/test_rbyaml.rb +63 -32
- data/test/test_rbyaml.rb.~1.6.~ +59 -0
- data/test/{test_rbyaml.rb.~1.2.~ → test_rbyaml_old.rb} +13 -4
- data/test/test_time_events.rb +24 -0
- data/test/test_time_nodes.rb +24 -0
- data/test/test_time_tokens.rb +24 -0
- data/test/yaml/gems_new.yml +147456 -0
- data/test/yaml/test1.rb +8 -0
- data/test/yaml/test10.rb +14 -0
- data/test/yaml/test11.rb +13 -0
- data/test/yaml/test12.rb +9 -0
- data/test/yaml/test13.rb +9 -0
- data/test/yaml/test14.rb +13 -0
- data/test/yaml/test15.rb +12 -0
- data/test/yaml/test16.rb +11 -0
- data/test/yaml/test16.rb.~1.1.~ +11 -0
- data/test/yaml/test17.rb +10 -0
- data/test/yaml/test18.rb +13 -0
- data/test/yaml/test19.rb +9 -0
- data/test/yaml/test19.yml +1 -1
- data/test/yaml/test2.rb +8 -0
- data/test/yaml/test20.rb +11 -0
- data/test/yaml/test20.rb.~1.1.~ +9 -0
- data/test/yaml/test20.yml +1 -1
- data/test/yaml/test3.rb +13 -0
- data/test/yaml/test4.rb +13 -0
- data/test/yaml/test5.rb +8 -0
- data/test/yaml/test6.rb +10 -0
- data/test/yaml/test7.rb +15 -0
- data/test/yaml/test8.rb +15 -0
- data/test/yaml/test9.rb +13 -0
- metadata +61 -16
- data/lib/rbyaml/dumper.rb.~1.2.~ +0 -43
- data/lib/rbyaml/parser.rb.~1.2.~ +0 -494
data/lib/rbyaml/events.rb
CHANGED
@@ -1,6 +1,4 @@
|
|
1
|
-
|
2
1
|
module RbYAML
|
3
|
-
Event = Struct.new(:start_mark,:end_mark)
|
4
2
|
class Event
|
5
3
|
def hash
|
6
4
|
object_id
|
@@ -27,8 +25,7 @@ module RbYAML
|
|
27
25
|
|
28
26
|
class NodeEvent < Event
|
29
27
|
attr_reader :anchor
|
30
|
-
def initialize(anchor
|
31
|
-
super(start_mark,end_mark)
|
28
|
+
def initialize(anchor)
|
32
29
|
@anchor = anchor
|
33
30
|
end
|
34
31
|
def __is_node; true; end
|
@@ -36,8 +33,8 @@ module RbYAML
|
|
36
33
|
|
37
34
|
class CollectionStartEvent < NodeEvent
|
38
35
|
attr_reader :tag, :implicit, :flow_style
|
39
|
-
def initialize(anchor,tag,implicit,
|
40
|
-
super(anchor
|
36
|
+
def initialize(anchor,tag,implicit,flow_style=nil)
|
37
|
+
super(anchor)
|
41
38
|
@tag = tag
|
42
39
|
@implicit = implicit
|
43
40
|
@flow_style = flow_style
|
@@ -51,8 +48,7 @@ module RbYAML
|
|
51
48
|
|
52
49
|
class StreamStartEvent < Event
|
53
50
|
attr_reader :encoding
|
54
|
-
def initialize(
|
55
|
-
super(start_mark,end_mark)
|
51
|
+
def initialize(encoding=nil)
|
56
52
|
@encoding = encoding
|
57
53
|
end
|
58
54
|
def __is_stream_start; true; end
|
@@ -64,8 +60,7 @@ module RbYAML
|
|
64
60
|
|
65
61
|
class DocumentStartEvent < Event
|
66
62
|
attr_reader :explicit, :version, :tags
|
67
|
-
def initialize(
|
68
|
-
super(start_mark,end_mark)
|
63
|
+
def initialize(explicit=nil,version=nil,tags=nil)
|
69
64
|
@explicit = explicit
|
70
65
|
@version = version
|
71
66
|
@tags = tags
|
@@ -75,8 +70,7 @@ module RbYAML
|
|
75
70
|
|
76
71
|
class DocumentEndEvent < Event
|
77
72
|
attr_reader :explicit
|
78
|
-
def initialize(
|
79
|
-
super(start_mark,end_mark)
|
73
|
+
def initialize(explicit=nil)
|
80
74
|
@explicit = explicit
|
81
75
|
end
|
82
76
|
def __is_document_end; true; end
|
@@ -88,8 +82,8 @@ module RbYAML
|
|
88
82
|
|
89
83
|
class ScalarEvent < NodeEvent
|
90
84
|
attr_reader :tag, :style, :value, :implicit
|
91
|
-
def initialize(anchor,tag,implicit,value,
|
92
|
-
super(anchor
|
85
|
+
def initialize(anchor,tag,implicit,value,style=nil)
|
86
|
+
super(anchor)
|
93
87
|
@tag = tag
|
94
88
|
@style = style
|
95
89
|
@value = value
|
@@ -1,17 +1,27 @@
|
|
1
|
-
|
2
1
|
module RbYAML
|
2
|
+
Event = Struct.new(:start_mark,:end_mark)
|
3
3
|
class Event
|
4
|
-
|
5
|
-
|
6
|
-
@start_mark = start_mark
|
7
|
-
@end_mark = end_mark
|
4
|
+
def hash
|
5
|
+
object_id
|
8
6
|
end
|
9
|
-
|
10
7
|
def to_s
|
11
8
|
attributes = ["@anchor","@tag","@implicit","@value"] & self.instance_variables
|
12
9
|
args = attributes.collect {|val| "#{val[1..-1]}=" + eval("#{val}").to_s}.join(", ")
|
13
10
|
"#{self.class.name}(#{args})"
|
14
11
|
end
|
12
|
+
def __is_node; false; end
|
13
|
+
def __is_collection_start; false; end
|
14
|
+
def __is_collection_end; false; end
|
15
|
+
def __is_stream_start; false; end
|
16
|
+
def __is_stream_end; false; end
|
17
|
+
def __is_document_start; false; end
|
18
|
+
def __is_document_end; false; end
|
19
|
+
def __is_alias; false; end
|
20
|
+
def __is_scalar; false; end
|
21
|
+
def __is_sequence_start; false; end
|
22
|
+
def __is_sequence_end; false; end
|
23
|
+
def __is_mapping_start; false; end
|
24
|
+
def __is_mapping_end; false; end
|
15
25
|
end
|
16
26
|
|
17
27
|
class NodeEvent < Event
|
@@ -20,6 +30,7 @@ module RbYAML
|
|
20
30
|
super(start_mark,end_mark)
|
21
31
|
@anchor = anchor
|
22
32
|
end
|
33
|
+
def __is_node; true; end
|
23
34
|
end
|
24
35
|
|
25
36
|
class CollectionStartEvent < NodeEvent
|
@@ -30,9 +41,11 @@ module RbYAML
|
|
30
41
|
@implicit = implicit
|
31
42
|
@flow_style = flow_style
|
32
43
|
end
|
44
|
+
def __is_collection_start; true; end
|
33
45
|
end
|
34
46
|
|
35
47
|
class CollectionEndEvent < Event
|
48
|
+
def __is_collection_end; true; end
|
36
49
|
end
|
37
50
|
|
38
51
|
class StreamStartEvent < Event
|
@@ -41,9 +54,11 @@ module RbYAML
|
|
41
54
|
super(start_mark,end_mark)
|
42
55
|
@encoding = encoding
|
43
56
|
end
|
57
|
+
def __is_stream_start; true; end
|
44
58
|
end
|
45
59
|
|
46
60
|
class StreamEndEvent < Event
|
61
|
+
def __is_stream_end; true; end
|
47
62
|
end
|
48
63
|
|
49
64
|
class DocumentStartEvent < Event
|
@@ -54,6 +69,7 @@ module RbYAML
|
|
54
69
|
@version = version
|
55
70
|
@tags = tags
|
56
71
|
end
|
72
|
+
def __is_document_start; true; end
|
57
73
|
end
|
58
74
|
|
59
75
|
class DocumentEndEvent < Event
|
@@ -62,9 +78,11 @@ module RbYAML
|
|
62
78
|
super(start_mark,end_mark)
|
63
79
|
@explicit = explicit
|
64
80
|
end
|
81
|
+
def __is_document_end; true; end
|
65
82
|
end
|
66
83
|
|
67
84
|
class AliasEvent < NodeEvent
|
85
|
+
def __is_alias; true; end
|
68
86
|
end
|
69
87
|
|
70
88
|
class ScalarEvent < NodeEvent
|
@@ -76,18 +94,23 @@ module RbYAML
|
|
76
94
|
@value = value
|
77
95
|
@implicit = implicit
|
78
96
|
end
|
97
|
+
def __is_scalar; true; end
|
79
98
|
end
|
80
99
|
|
81
100
|
class SequenceStartEvent < CollectionStartEvent
|
101
|
+
def __is_sequence_start; true; end
|
82
102
|
end
|
83
103
|
|
84
104
|
class SequenceEndEvent < CollectionEndEvent
|
105
|
+
def __is_sequence_end; true; end
|
85
106
|
end
|
86
107
|
|
87
108
|
class MappingStartEvent < CollectionStartEvent
|
109
|
+
def __is_mapping_start; true; end
|
88
110
|
end
|
89
111
|
|
90
112
|
class MappingEndEvent < CollectionEndEvent
|
113
|
+
def __is_mapping_end; true; end
|
91
114
|
end
|
92
115
|
end
|
93
116
|
|
data/lib/rbyaml/nodes.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
|
2
2
|
module RbYAML
|
3
|
-
Node = Struct.new(:tag, :value
|
3
|
+
Node = Struct.new(:tag, :value)
|
4
4
|
class Node
|
5
5
|
def hash
|
6
6
|
object_id
|
@@ -22,8 +22,8 @@ module RbYAML
|
|
22
22
|
|
23
23
|
attr_accessor :style
|
24
24
|
|
25
|
-
def initialize(tag,
|
26
|
-
super(tag,value
|
25
|
+
def initialize(tag,value,style=nil)
|
26
|
+
super(tag,value)
|
27
27
|
@style = style
|
28
28
|
end
|
29
29
|
def __is_scalar; true; end
|
@@ -32,8 +32,8 @@ module RbYAML
|
|
32
32
|
class CollectionNode < Node
|
33
33
|
attr_accessor :flow_style
|
34
34
|
|
35
|
-
def initialize(tag, value,
|
36
|
-
super(tag,value
|
35
|
+
def initialize(tag, value,flow_style=nil)
|
36
|
+
super(tag,value)
|
37
37
|
@flow_style = flow_style
|
38
38
|
end
|
39
39
|
def __is_collection; true; end
|
@@ -1,18 +1,18 @@
|
|
1
1
|
|
2
2
|
module RbYAML
|
3
|
+
Node = Struct.new(:tag, :value, :start_mark, :end_mark)
|
3
4
|
class Node
|
4
|
-
|
5
|
-
|
6
|
-
def initialize(tag, value, start_mark, end_mark)
|
7
|
-
@tag = tag
|
8
|
-
@value = value
|
9
|
-
@start_mark = start_mark
|
10
|
-
@end_mark = end_mark
|
5
|
+
def hash
|
6
|
+
object_id
|
11
7
|
end
|
12
|
-
|
13
8
|
def to_s
|
14
|
-
"#{self.class.name}(tag=#{
|
9
|
+
"#{self.class.name}(tag=#{tag}, value=#{value})"
|
15
10
|
end
|
11
|
+
|
12
|
+
def __is_scalar; false; end
|
13
|
+
def __is_collection; false; end
|
14
|
+
def __is_sequence; false; end
|
15
|
+
def __is_mapping; false; end
|
16
16
|
end
|
17
17
|
|
18
18
|
class ScalarNode < Node
|
@@ -26,6 +26,7 @@ module RbYAML
|
|
26
26
|
super(tag,value,start_mark,end_mark)
|
27
27
|
@style = style
|
28
28
|
end
|
29
|
+
def __is_scalar; true; end
|
29
30
|
end
|
30
31
|
|
31
32
|
class CollectionNode < Node
|
@@ -35,18 +36,21 @@ module RbYAML
|
|
35
36
|
super(tag,value,start_mark,end_mark)
|
36
37
|
@flow_style = flow_style
|
37
38
|
end
|
39
|
+
def __is_collection; true; end
|
38
40
|
end
|
39
41
|
|
40
42
|
class SequenceNode < CollectionNode
|
41
43
|
def tid
|
42
44
|
"sequence"
|
43
45
|
end
|
46
|
+
def __is_sequence; true; end
|
44
47
|
end
|
45
48
|
|
46
49
|
class MappingNode < CollectionNode
|
47
50
|
def tid
|
48
51
|
"mapping"
|
49
52
|
end
|
53
|
+
def __is_mapping; true; end
|
50
54
|
end
|
51
55
|
end
|
52
56
|
|
data/lib/rbyaml/parser.rb
CHANGED
@@ -50,7 +50,7 @@ require 'rbyaml/events'
|
|
50
50
|
require 'rbyaml/scanner'
|
51
51
|
|
52
52
|
module RbYAML
|
53
|
-
class ParserError <
|
53
|
+
class ParserError < YAMLError
|
54
54
|
end
|
55
55
|
|
56
56
|
class Parser
|
@@ -59,6 +59,14 @@ module RbYAML
|
|
59
59
|
'!!' => 'tag:yaml.org,2002:'
|
60
60
|
}
|
61
61
|
|
62
|
+
DOCUMENT_END_TRUE = DocumentEndEvent.new(true)
|
63
|
+
DOCUMENT_END_FALSE = DocumentEndEvent.new(false)
|
64
|
+
MAPPING_END = MappingEndEvent.new
|
65
|
+
SEQUENCE_END = SequenceEndEvent.new
|
66
|
+
STREAM_END = StreamEndEvent.new
|
67
|
+
STREAM_START = StreamStartEvent.new
|
68
|
+
|
69
|
+
|
62
70
|
def initialize(scanner)
|
63
71
|
@scanner = scanner
|
64
72
|
@current_event = nil
|
@@ -67,9 +75,6 @@ module RbYAML
|
|
67
75
|
@working_events = nil
|
68
76
|
@tag_handles = { }
|
69
77
|
@parse_stack = nil
|
70
|
-
@start_mark = []
|
71
|
-
@tks = []
|
72
|
-
|
73
78
|
end
|
74
79
|
|
75
80
|
def check_event(*choices)
|
@@ -108,11 +113,8 @@ module RbYAML
|
|
108
113
|
def parse_stream
|
109
114
|
if !@parse_stack
|
110
115
|
@parse_stack = [:stream]
|
111
|
-
@tokens = nil
|
112
116
|
@tags = []
|
113
117
|
@anchors = []
|
114
|
-
@start_marks = []
|
115
|
-
@end_marks = []
|
116
118
|
end
|
117
119
|
end
|
118
120
|
|
@@ -129,11 +131,8 @@ module RbYAML
|
|
129
131
|
end
|
130
132
|
end
|
131
133
|
else
|
132
|
-
@tokens = nil
|
133
134
|
@tags = []
|
134
135
|
@anchors = []
|
135
|
-
@start_marks = []
|
136
|
-
@end_marks = []
|
137
136
|
return nil
|
138
137
|
end
|
139
138
|
end
|
@@ -141,140 +140,125 @@ module RbYAML
|
|
141
140
|
#TERMINALS, definitions
|
142
141
|
|
143
142
|
def stream_start
|
144
|
-
|
145
|
-
|
143
|
+
@scanner.get_token
|
144
|
+
STREAM_START
|
146
145
|
end
|
147
146
|
|
148
147
|
def stream_end
|
149
|
-
|
150
|
-
|
148
|
+
@scanner.get_token
|
149
|
+
STREAM_END
|
151
150
|
end
|
152
151
|
|
153
152
|
def document_start_implicit
|
154
153
|
token = @scanner.peek_token
|
155
154
|
version, tags = process_directives
|
156
|
-
DocumentStartEvent.new(
|
155
|
+
DocumentStartEvent.new(false,version,tags)
|
157
156
|
end
|
158
157
|
|
159
158
|
def document_start
|
160
159
|
token = @scanner.peek_token
|
161
|
-
start_mark = token.start_mark
|
162
160
|
version, tags = process_directives
|
163
|
-
raise ParserError.new(nil,
|
164
|
-
@
|
165
|
-
|
166
|
-
DocumentStartEvent.new(start_mark, end_mark,true,version,tags)
|
161
|
+
raise ParserError.new(nil, "expected '<document start>', but found #{token.tid}") unless @scanner.peek_token.__is_document_start
|
162
|
+
@scanner.get_token
|
163
|
+
DocumentStartEvent.new(true,version,tags)
|
167
164
|
end
|
168
165
|
|
169
166
|
def document_end
|
170
167
|
token = @scanner.peek_token
|
171
|
-
start_mark = end_mark = token.start_mark
|
172
168
|
explicit = false
|
173
169
|
while @scanner.peek_token.__is_document_end
|
174
|
-
@
|
175
|
-
end_mark = token.end_mark
|
170
|
+
@scanner.get_token
|
176
171
|
explicit = true
|
177
172
|
end
|
178
|
-
|
173
|
+
explicit ? DOCUMENT_END_TRUE : DOCUMENT_END_FALSE
|
179
174
|
end
|
180
175
|
|
181
176
|
def _alias
|
182
|
-
|
183
|
-
AliasEvent.new(token.value, token.start_mark, token.end_mark)
|
177
|
+
AliasEvent.new(@scanner.get_token.value)
|
184
178
|
end
|
185
179
|
|
186
180
|
def block_sequence_start
|
187
|
-
|
188
|
-
|
189
|
-
@
|
190
|
-
SequenceStartEvent.new(@anchors.last, @tags.last, implicit, @start_marks.last, end_mark,false)
|
181
|
+
implicit = @tags.last.nil? || @tags.last == "!"
|
182
|
+
@scanner.get_token
|
183
|
+
SequenceStartEvent.new(@anchors.last, @tags.last, implicit, false)
|
191
184
|
end
|
192
185
|
|
193
186
|
def block_indentless_sequence_start
|
194
|
-
|
195
|
-
|
196
|
-
SequenceStartEvent.new(@anchors.last, @tags.last, implicit, @start_marks.last, end_mark,false)
|
187
|
+
implicit = @tags.last.nil? || @tags.last == "!"
|
188
|
+
SequenceStartEvent.new(@anchors.last, @tags.last, implicit, false)
|
197
189
|
end
|
198
190
|
|
199
191
|
def block_sequence_end
|
200
192
|
if !@scanner.peek_token.__is_block_end
|
201
|
-
|
202
|
-
raise ParserError.new("while scanning a block collection", @start_marks.last,"expected <block end>, but found #{token.tid}: #{token.inspect}", token.start_mark)
|
193
|
+
raise ParserError.new("while scanning a block collection","expected <block end>, but found #{token.tid}: #{token.inspect}")
|
203
194
|
end
|
204
|
-
|
205
|
-
|
195
|
+
@scanner.get_token
|
196
|
+
SEQUENCE_END
|
206
197
|
end
|
207
198
|
|
208
199
|
def block_indentless_sequence_end
|
209
|
-
|
210
|
-
SequenceEndEvent.new(token.start_mark, token.end_mark)
|
200
|
+
SEQUENCE_END
|
211
201
|
end
|
212
202
|
|
213
203
|
def block_mapping_start
|
214
|
-
|
215
|
-
|
216
|
-
@
|
217
|
-
MappingStartEvent.new(@anchors.last, @tags.last, implicit, @start_marks.last, end_mark,false)
|
204
|
+
implicit = @tags.last.nil? || @tags.last == "!"
|
205
|
+
@scanner.get_token
|
206
|
+
MappingStartEvent.new(@anchors.last, @tags.last, implicit,false)
|
218
207
|
end
|
219
208
|
|
220
209
|
def block_mapping_end
|
221
210
|
if !@scanner.peek_token.__is_block_end
|
222
|
-
|
223
|
-
raise ParserError.new("while scanning a block mapping", @start_marks.last,"expected <block end>, but found #{token.tid}", token.start_mark)
|
211
|
+
raise ParserError.new("while scanning a block mapping","expected <block end>, but found #{token.tid}")
|
224
212
|
end
|
225
|
-
@
|
226
|
-
|
213
|
+
@scanner.get_token
|
214
|
+
MAPPING_END
|
227
215
|
end
|
228
216
|
|
229
217
|
def flow_sequence_start
|
230
|
-
|
231
|
-
|
232
|
-
@
|
233
|
-
SequenceStartEvent.new(@anchors.last, @tags.last, implicit, @start_marks.last, end_mark,true)
|
218
|
+
implicit = @tags.last.nil? || @tags.last == "!"
|
219
|
+
@scanner.get_token
|
220
|
+
SequenceStartEvent.new(@anchors.last, @tags.last, implicit,true)
|
234
221
|
end
|
235
222
|
|
236
223
|
def flow_sequence_end
|
237
|
-
@
|
238
|
-
|
224
|
+
@scanner.get_token
|
225
|
+
SEQUENCE_END
|
239
226
|
end
|
240
227
|
|
241
228
|
def flow_internal_mapping_start
|
242
|
-
@
|
243
|
-
MappingStartEvent.new(nil,nil,true,
|
229
|
+
@scanner.get_token
|
230
|
+
MappingStartEvent.new(nil,nil,true,true)
|
244
231
|
end
|
245
232
|
|
246
233
|
def flow_internal_mapping_end
|
247
|
-
|
248
|
-
MappingEndEvent.new(token.start_mark, token.start_mark)
|
234
|
+
MAPPING_END
|
249
235
|
end
|
250
236
|
|
251
237
|
def flow_mapping_start
|
252
|
-
|
253
|
-
|
254
|
-
@
|
255
|
-
MappingStartEvent.new(@anchors.last, @tags.last, implicit, @start_marks.last, end_mark,true)
|
238
|
+
implicit = @tags.last.nil? || @tags.last == "!"
|
239
|
+
@scanner.get_token
|
240
|
+
MappingStartEvent.new(@anchors.last, @tags.last, implicit,true)
|
256
241
|
end
|
257
242
|
|
258
243
|
def flow_mapping_end
|
259
|
-
@
|
260
|
-
|
244
|
+
@scanner.get_token
|
245
|
+
MAPPING_END
|
261
246
|
end
|
262
247
|
|
263
248
|
def scalar
|
264
249
|
token = @scanner.get_token
|
265
|
-
|
266
|
-
if (token.plain && @tags.last.nil?) || @tags.last == ?!
|
250
|
+
if (token.plain && @tags.last.nil?) || @tags.last == "!"
|
267
251
|
implicit = [true, false]
|
268
252
|
elsif @tags.last.nil?
|
269
253
|
implicit = [false, true]
|
270
254
|
else
|
271
255
|
implicit = [false, false]
|
272
256
|
end
|
273
|
-
ScalarEvent.new(@anchors.last, @tags.last, implicit, token.value,
|
257
|
+
ScalarEvent.new(@anchors.last, @tags.last, implicit, token.value,token.style)
|
274
258
|
end
|
275
259
|
|
276
260
|
def empty_scalar
|
277
|
-
process_empty_scalar
|
261
|
+
process_empty_scalar
|
278
262
|
end
|
279
263
|
|
280
264
|
|
@@ -329,54 +313,35 @@ module RbYAML
|
|
329
313
|
def properties
|
330
314
|
anchor = nil
|
331
315
|
tag = nil
|
332
|
-
start_mark = end_mark = tag_mark = nil
|
333
316
|
if @scanner.peek_token.__is_anchor
|
334
|
-
|
335
|
-
start_mark = token.start_mark
|
336
|
-
end_mark = token.end_mark
|
337
|
-
anchor = token.value
|
317
|
+
anchor = @scanner.get_token.value
|
338
318
|
if @scanner.peek_token.__is_tag
|
339
|
-
|
340
|
-
tag_mark = token.start_mark
|
341
|
-
end_mark = token.end_mark
|
342
|
-
tag = token.value
|
319
|
+
tag = @scanner.get_token.value
|
343
320
|
end
|
344
321
|
elsif @scanner.peek_token.__is_tag
|
345
|
-
|
346
|
-
start_mark = tag_mark = token.start_mark
|
347
|
-
end_mark = token.end_mark
|
348
|
-
tag = token.value
|
322
|
+
tag = @scanner.get_token.value
|
349
323
|
if @scanner.peek_token.__is_anchor
|
350
|
-
|
351
|
-
end_mark = token.end_mark
|
352
|
-
anchor = token.value
|
324
|
+
anchor = @scanner.get_token.value
|
353
325
|
end
|
354
326
|
end
|
355
327
|
|
356
328
|
if !tag.nil? and tag != "!"
|
357
329
|
handle, suffix = tag
|
358
330
|
if !handle.nil?
|
359
|
-
raise ParserError.new("while parsing a node",
|
331
|
+
raise ParserError.new("while parsing a node","found undefined tag handle #{handle}") if !@tag_handles.include?(handle)
|
360
332
|
tag = @tag_handles[handle]+suffix
|
361
333
|
else
|
362
334
|
tag = suffix
|
363
335
|
end
|
364
336
|
end
|
365
|
-
if start_mark.nil?
|
366
|
-
start_mark = end_mark = @scanner.peek_token.start_mark
|
367
|
-
end
|
368
337
|
@anchors << anchor
|
369
338
|
@tags << tag
|
370
|
-
@start_marks << start_mark
|
371
|
-
@end_marks << end_mark
|
372
339
|
nil
|
373
340
|
end
|
374
341
|
|
375
342
|
def un_properties
|
376
343
|
@anchors.pop
|
377
344
|
@tags.pop
|
378
|
-
@start_marks.pop
|
379
|
-
@end_marks.pop
|
380
345
|
nil
|
381
346
|
end
|
382
347
|
|
@@ -393,7 +358,7 @@ module RbYAML
|
|
393
358
|
elsif token.__is_scalar
|
394
359
|
return scalar
|
395
360
|
else
|
396
|
-
raise ParserError.new("while scanning a node",
|
361
|
+
raise ParserError.new("while scanning a node","expected the node content, but found #{token.tid}")
|
397
362
|
end
|
398
363
|
end
|
399
364
|
|
@@ -406,13 +371,13 @@ module RbYAML
|
|
406
371
|
elsif token.__is_scalar
|
407
372
|
return scalar
|
408
373
|
else
|
409
|
-
raise ParserError.new("while scanning a flow node",
|
374
|
+
raise ParserError.new("while scanning a flow node","expected the node content, but found #{token.tid}")
|
410
375
|
end
|
411
376
|
end
|
412
377
|
|
413
378
|
def block_sequence_entry
|
414
379
|
if @scanner.peek_token.__is_block_entry
|
415
|
-
@
|
380
|
+
@scanner.get_token
|
416
381
|
if !(@scanner.peek_token.__is_block_entry || @scanner.peek_token.__is_block_end)
|
417
382
|
@parse_stack += [:block_sequence_entry]
|
418
383
|
return block_node
|
@@ -428,7 +393,7 @@ module RbYAML
|
|
428
393
|
# ((KEY block_node_or_indentless_sequence?)? (VALUE block_node_or_indentless_sequence?)?)*
|
429
394
|
if @scanner.peek_token.__is_key || @scanner.peek_token.__is_value
|
430
395
|
if @scanner.check_token(KeyToken)
|
431
|
-
@
|
396
|
+
@scanner.get_token
|
432
397
|
curr = @scanner.peek_token
|
433
398
|
if !(curr.__is_key || curr.__is_value || curr.__is_block_end)
|
434
399
|
@parse_stack += [:block_mapping_entry,:block_mapping_entry_value]
|
@@ -448,7 +413,7 @@ module RbYAML
|
|
448
413
|
def block_mapping_entry_value
|
449
414
|
if @scanner.peek_token.__is_key || @scanner.peek_token.__is_value
|
450
415
|
if @scanner.peek_token.__is_value
|
451
|
-
@
|
416
|
+
@scanner.get_token
|
452
417
|
curr = @scanner.peek_token
|
453
418
|
if !(curr.__is_key || curr.__is_value || curr.__is_block_end)
|
454
419
|
return block_node_or_indentless_sequence
|
@@ -456,7 +421,6 @@ module RbYAML
|
|
456
421
|
return empty_scalar
|
457
422
|
end
|
458
423
|
else
|
459
|
-
@tokens = token = @scanner.peek_token
|
460
424
|
return empty_scalar
|
461
425
|
end
|
462
426
|
end
|
@@ -494,7 +458,7 @@ module RbYAML
|
|
494
458
|
|
495
459
|
def indentless_block_sequence_entry
|
496
460
|
if @scanner.peek_token.__is_block_entry
|
497
|
-
@
|
461
|
+
@scanner.get_token
|
498
462
|
curr = @scanner.peek_token
|
499
463
|
if !(curr.__is_block_entry || curr.__is_key || curr.__is_value || curr.__is_block_end)
|
500
464
|
@parse_stack << :indentless_block_sequence_entry
|
@@ -541,14 +505,13 @@ module RbYAML
|
|
541
505
|
|
542
506
|
def flow_internal_value
|
543
507
|
if @scanner.peek_token.__is_value
|
544
|
-
@
|
508
|
+
@scanner.get_token
|
545
509
|
if !(@scanner.peek_token.__is_flow_entry || @scanner.peek_token.__is_flow_sequence_end)
|
546
510
|
flow_node
|
547
511
|
else
|
548
512
|
empty_scalar
|
549
513
|
end
|
550
514
|
else
|
551
|
-
@tokens = token = @scanner.peek_token
|
552
515
|
empty_scalar
|
553
516
|
end
|
554
517
|
end
|
@@ -576,7 +539,7 @@ module RbYAML
|
|
576
539
|
def flow_mapping_internal_content
|
577
540
|
curr = @scanner.peek_token
|
578
541
|
if !(curr.__is_value || curr.__is_flow_entry || curr.__is_flow_mapping_end)
|
579
|
-
@
|
542
|
+
@scanner.get_token
|
580
543
|
flow_node
|
581
544
|
else
|
582
545
|
empty_scalar
|
@@ -585,14 +548,13 @@ module RbYAML
|
|
585
548
|
|
586
549
|
def flow_mapping_internal_value
|
587
550
|
if @scanner.peek_token.__is_value
|
588
|
-
@
|
551
|
+
@scanner.get_token
|
589
552
|
if !(@scanner.peek_token.__is_flow_entry || @scanner.peek_token.__is_flow_mapping_end)
|
590
553
|
flow_node
|
591
554
|
else
|
592
555
|
empty_scalar
|
593
556
|
end
|
594
557
|
else
|
595
|
-
@tokens = token = @scanner.peek_token
|
596
558
|
empty_scalar
|
597
559
|
end
|
598
560
|
end
|
@@ -603,13 +565,13 @@ module RbYAML
|
|
603
565
|
while @scanner.peek_token.__is_directive
|
604
566
|
token = @scanner.get_token
|
605
567
|
if token.name == "YAML"
|
606
|
-
raise ParserError.new(nil,
|
568
|
+
raise ParserError.new(nil,"found duplicate YAML directive") if !@yaml_version.nil?
|
607
569
|
major, minor = token.value[0].to_i, token.value[1].to_i
|
608
|
-
raise ParserError.new(nil,
|
570
|
+
raise ParserError.new(nil,"found incompatible YAML document (version 1.* is required)") if major != 1
|
609
571
|
@yaml_version = [major,minor]
|
610
572
|
elsif token.name == "TAG"
|
611
573
|
handle, prefix = token.value
|
612
|
-
raise ParserError.new(nil,
|
574
|
+
raise ParserError.new(nil,"duplicate tag handle #{handle}") if @tag_handles.member?(handle)
|
613
575
|
@tag_handles[handle] = prefix
|
614
576
|
end
|
615
577
|
end
|
@@ -624,8 +586,8 @@ module RbYAML
|
|
624
586
|
value
|
625
587
|
end
|
626
588
|
|
627
|
-
def process_empty_scalar
|
628
|
-
ScalarEvent.new(nil, nil, [true, false], ""
|
589
|
+
def process_empty_scalar
|
590
|
+
ScalarEvent.new(nil, nil, [true, false], "")
|
629
591
|
end
|
630
592
|
end
|
631
593
|
end
|