Changeset 130
- Timestamp:
- 04/03/06 14:20:25 (7 years ago)
- Location:
- pyyaml/trunk
- Files:
-
- 13 edited
- 6 copied
-
examples/yaml-hl/yaml_hl_ascii.cfg (modified) (1 diff)
-
examples/yaml-hl/yaml_hl_html.cfg (modified) (1 diff)
-
lib/yaml/composer.py (modified) (3 diffs)
-
lib/yaml/events.py (modified) (4 diffs)
-
lib/yaml/parser.py (modified) (16 diffs)
-
lib/yaml/reader.py (modified) (2 diffs)
-
lib/yaml/scanner.py (modified) (10 diffs)
-
lib/yaml/tokens.py (modified) (2 diffs)
-
tests/data/aliases.events (copied) (copied from pyyaml/branches/working-on-emitter/tests/data/aliases.events) (1 diff)
-
tests/data/documents.events (copied) (copied from pyyaml/branches/working-on-emitter/tests/data/documents.events)
-
tests/data/mappings.events (copied) (copied from pyyaml/branches/working-on-emitter/tests/data/mappings.events) (1 diff)
-
tests/data/scalars.events (copied) (copied from pyyaml/branches/working-on-emitter/tests/data/scalars.events) (2 diffs)
-
tests/data/sequences.events (copied) (copied from pyyaml/branches/working-on-emitter/tests/data/sequences.events) (1 diff)
-
tests/data/spec-08-12.canonical (modified) (1 diff)
-
tests/data/spec-08-12.data (modified) (1 diff)
-
tests/test_appliance.py (modified) (3 diffs)
-
tests/test_emitter.py (copied) (copied from pyyaml/branches/working-on-emitter/tests/test_emitter.py) (1 diff)
-
tests/test_structure.py (modified) (3 diffs)
-
tests/test_yaml.py (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
pyyaml/trunk/examples/yaml-hl/yaml_hl_ascii.cfg
r119 r130 28 28 document-start: 29 29 document-end: 30 sequence: 31 mapping: 32 collection-end: 30 sequence-start: 31 sequence-end: 32 mapping-start: 33 mapping-end: 33 34 scalar: 34 35 -
pyyaml/trunk/examples/yaml-hl/yaml_hl_html.cfg
r119 r130 27 27 document-start: { start: <span class="document"> } 28 28 document-end: { end: </span> } 29 sequence: { start: <span class="sequence"> } 30 mapping: { start: <span class="mapping"> } 31 collection-end: { end: </span> } 29 sequence-start: { start: <span class="sequence"> } 30 sequence-end: { end: </span> } 31 mapping-start: { start: <span class="mapping"> } 32 mapping-end: { end: </span> } 32 33 scalar: { start: <span class="scalar">, end: </span> } 33 34 -
pyyaml/trunk/lib/yaml/composer.py
r118 r130 72 72 if self.parser.check(ScalarEvent): 73 73 node = self.compose_scalar_node() 74 elif self.parser.check(Sequence Event):74 elif self.parser.check(SequenceStartEvent): 75 75 node = self.compose_sequence_node() 76 elif self.parser.check(Mapping Event):76 elif self.parser.check(MappingStartEvent): 77 77 node = self.compose_mapping_node() 78 78 if anchor is not None: … … 88 88 start_event = self.parser.get() 89 89 value = [] 90 while not self.parser.check( CollectionEndEvent):90 while not self.parser.check(SequenceEndEvent): 91 91 value.append(self.compose_node()) 92 92 end_event = self.parser.get() … … 97 97 start_event = self.parser.get() 98 98 value = {} 99 while not self.parser.check( CollectionEndEvent):99 while not self.parser.check(MappingEndEvent): 100 100 key_event = self.parser.peek() 101 101 item_key = self.compose_node() -
pyyaml/trunk/lib/yaml/events.py
r118 r130 1 2 # Abstract classes. 1 3 2 4 class Event: 3 def __init__(self, start_mark , end_mark):5 def __init__(self, start_mark=None, end_mark=None): 4 6 self.start_mark = start_mark 5 7 self.end_mark = end_mark 6 8 def __repr__(self): 7 attributes = [key for key in self.__dict__ 8 if not key.endswith('_mark')] 9 attributes.sort() 9 attributes = [key for key in ['anchor', 'tag', 'value'] 10 if hasattr(self, key)] 10 11 arguments = ', '.join(['%s=%r' % (key, getattr(self, key)) 11 12 for key in attributes]) … … 13 14 14 15 class NodeEvent(Event): 15 def __init__(self, anchor, start_mark , end_mark):16 def __init__(self, anchor, start_mark=None, end_mark=None): 16 17 self.anchor = anchor 17 18 self.start_mark = start_mark 18 19 self.end_mark = end_mark 20 21 class CollectionStartEvent(NodeEvent): 22 def __init__(self, anchor, tag, start_mark=None, end_mark=None, 23 flow_style=None): 24 self.anchor = anchor 25 self.tag = tag 26 self.start_mark = start_mark 27 self.end_mark = end_mark 28 self.flow_style = flow_style 29 30 class CollectionEndEvent(Event): 31 pass 32 33 # Implementations. 34 35 class StreamStartEvent(Event): 36 def __init__(self, start_mark=None, end_mark=None, 37 encoding=None, canonical=None, indent=None, width=None): 38 self.start_mark = start_mark 39 self.end_mark = end_mark 40 self.encoding = encoding 41 self.canonical = canonical 42 self.indent = indent 43 self.width = width 44 45 class StreamEndEvent(Event): 46 pass 47 48 class DocumentStartEvent(Event): 49 def __init__(self, start_mark=None, end_mark=None, 50 implicit=None, version=None, tags=None): 51 self.start_mark = start_mark 52 self.end_mark = end_mark 53 self.implicit = implicit 54 self.version = version 55 self.tags = tags 56 57 class DocumentEndEvent(Event): 58 def __init__(self, start_mark=None, end_mark=None, 59 implicit=None): 60 self.start_mark = start_mark 61 self.end_mark = end_mark 62 self.implicit = implicit 19 63 20 64 class AliasEvent(NodeEvent): … … 22 66 23 67 class ScalarEvent(NodeEvent): 24 def __init__(self, anchor, tag, value, start_mark, end_mark): 68 def __init__(self, anchor, tag, value, start_mark=None, end_mark=None, 69 implicit=None, style=None): 25 70 self.anchor = anchor 26 71 self.tag = tag … … 28 73 self.start_mark = start_mark 29 74 self.end_mark = end_mark 75 self.implicit = implicit 76 self.style = style 30 77 31 class CollectionEvent(NodeEvent): 32 def __init__(self, anchor, tag, start_mark, end_mark): 33 self.anchor = anchor 34 self.tag = tag 35 self.start_mark = start_mark 36 self.end_mark = end_mark 37 38 class SequenceEvent(CollectionEvent): 78 class SequenceStartEvent(CollectionStartEvent): 39 79 pass 40 80 41 class MappingEvent(CollectionEvent):81 class SequenceEndEvent(CollectionEndEvent): 42 82 pass 43 83 44 class CollectionEndEvent(Event):84 class MappingStartEvent(CollectionStartEvent): 45 85 pass 46 86 47 class DocumentStartEvent(Event):87 class MappingEndEvent(CollectionEndEvent): 48 88 pass 49 89 50 class DocumentEndEvent(Event):51 pass52 53 class StreamStartEvent(Event):54 pass55 56 class StreamEndEvent(Event):57 pass58 -
pyyaml/trunk/lib/yaml/parser.py
r118 r130 131 131 # Parse start of stream. 132 132 token = self.scanner.get() 133 yield StreamStartEvent(token.start_mark, token.end_mark) 133 yield StreamStartEvent(token.start_mark, token.end_mark, 134 encoding=token.encoding) 134 135 135 136 # Parse implicit document. … … 139 140 token = self.scanner.peek() 140 141 start_mark = end_mark = token.start_mark 141 yield DocumentStartEvent(start_mark, end_mark) 142 yield DocumentStartEvent(start_mark, end_mark, 143 implicit=True) 142 144 for event in self.parse_block_node(): 143 145 yield event 144 146 token = self.scanner.peek() 145 147 start_mark = end_mark = token.start_mark 148 implicit = True 146 149 while self.scanner.check(DocumentEndToken): 147 150 token = self.scanner.get() 148 151 end_mark = token.end_mark 149 yield DocumentEndEvent(start_mark, end_mark) 152 implicit = True 153 yield DocumentEndEvent(start_mark, end_mark, 154 implicit=implicit) 150 155 151 156 # Parse explicit documents. … … 153 158 token = self.scanner.peek() 154 159 start_mark = token.start_mark 155 self.process_directives()160 version, tags = self.process_directives() 156 161 if not self.scanner.check(DocumentStartToken): 157 162 raise ParserError(None, None, … … 161 166 token = self.scanner.get() 162 167 end_mark = token.end_mark 163 yield DocumentStartEvent(start_mark, end_mark) 168 yield DocumentStartEvent(start_mark, end_mark, 169 implicit=False, version=version, tags=tags) 164 170 if self.scanner.check(DirectiveToken, 165 171 DocumentStartToken, DocumentEndToken, StreamEndToken): … … 170 176 token = self.scanner.peek() 171 177 start_mark = end_mark = token.start_mark 178 implicit=True 172 179 while self.scanner.check(DocumentEndToken): 173 180 token = self.scanner.get() 174 181 end_mark = token.end_mark 175 yield DocumentEndEvent(start_mark, end_mark) 182 implicit=False 183 yield DocumentEndEvent(start_mark, end_mark, 184 implicit=implicit) 176 185 177 186 # Parse end of stream. … … 202 211 token.start_mark) 203 212 self.tag_handles[handle] = prefix 213 if self.tag_handles: 214 value = self.yaml_version, self.tag_handles.copy() 215 else: 216 value = self.yaml_version, None 204 217 for key in self.DEFAULT_TAGS: 205 218 if key not in self.tag_handles: 206 219 self.tag_handles[key] = self.DEFAULT_TAGS[key] 220 return value 207 221 208 222 def parse_block_node(self): … … 233 247 if self.scanner.check(AnchorToken): 234 248 token = self.scanner.get() 235 start_mark = end_mark = token.start_mark 249 start_mark = token.start_mark 250 end_mark = token.end_mark 236 251 anchor = token.value 237 252 if self.scanner.check(TagToken): 238 253 token = self.scanner.get() 239 end_mark = tag_mark = token.start_mark 254 tag_mark = token.start_mark 255 end_mark = token.end_mark 240 256 tag = token.value 241 257 elif self.scanner.check(TagToken): 242 258 token = self.scanner.get() 243 start_mark = end_mark = tag_mark = token.start_mark 259 start_mark = tag_mark = token.start_mark 260 end_mark = token.end_mark 244 261 tag = token.value 245 262 if self.scanner.check(AnchorToken): 246 263 token = self.scanner.get() 247 end_mark = token. start_mark264 end_mark = token.end_mark 248 265 anchor = token.value 249 266 if tag is not None: … … 259 276 if tag is None: 260 277 if not (self.scanner.check(ScalarToken) and 261 self.scanner.peek(). plain):278 self.scanner.peek().implicit): 262 279 tag = u'!' 263 280 if start_mark is None: 264 start_mark = self.scanner.peek().start_mark281 start_mark = end_mark = self.scanner.peek().start_mark 265 282 event = None 266 283 collection_events = None 267 284 if indentless_sequence and self.scanner.check(BlockEntryToken): 268 285 end_mark = self.scanner.peek().end_mark 269 event = Sequence Event(anchor, tag, start_mark, end_mark)286 event = SequenceStartEvent(anchor, tag, start_mark, end_mark) 270 287 collection_events = self.parse_indentless_sequence() 271 288 else: … … 274 291 end_mark = token.end_mark 275 292 event = ScalarEvent(anchor, tag, token.value, 276 start_mark, end_mark) 293 start_mark, end_mark, 294 implicit=token.implicit, style=token.style) 277 295 elif self.scanner.check(FlowSequenceStartToken): 278 296 end_mark = self.scanner.peek().end_mark 279 event = SequenceEvent(anchor, tag, start_mark, end_mark) 297 event = SequenceStartEvent(anchor, tag, start_mark, end_mark, 298 flow_style=True) 280 299 collection_events = self.parse_flow_sequence() 281 300 elif self.scanner.check(FlowMappingStartToken): 282 301 end_mark = self.scanner.peek().end_mark 283 event = MappingEvent(anchor, tag, start_mark, end_mark) 302 event = MappingStartEvent(anchor, tag, start_mark, end_mark, 303 flow_style=True) 284 304 collection_events = self.parse_flow_mapping() 285 305 elif block and self.scanner.check(BlockSequenceStartToken): 286 306 end_mark = self.scanner.peek().start_mark 287 event = SequenceEvent(anchor, tag, start_mark, end_mark) 307 event = SequenceStartEvent(anchor, tag, start_mark, end_mark, 308 flow_style=False) 288 309 collection_events = self.parse_block_sequence() 289 310 elif block and self.scanner.check(BlockMappingStartToken): 290 311 end_mark = self.scanner.peek().start_mark 291 event = MappingEvent(anchor, tag, start_mark, end_mark) 312 event = MappingStartEvent(anchor, tag, start_mark, end_mark, 313 flow_style=False) 292 314 collection_events = self.parse_block_mapping() 315 elif anchor is not None or tag is not None: 316 # Empty scalars are allowed even if a tag or an anchor is 317 # specified. 318 event = ScalarEvent(anchor, tag, u'', start_mark, end_mark, 319 implicit=True) 293 320 else: 294 321 if block: … … 321 348 "expected <block end>, but found %r" % token.id, token.start_mark) 322 349 token = self.scanner.get() 323 yield CollectionEndEvent(token.start_mark, token.end_mark)350 yield SequenceEndEvent(token.start_mark, token.end_mark) 324 351 325 352 def parse_indentless_sequence(self): … … 334 361 yield self.process_empty_scalar(token.end_mark) 335 362 token = self.scanner.peek() 336 yield CollectionEndEvent(token.start_mark, token.start_mark)363 yield SequenceEndEvent(token.start_mark, token.start_mark) 337 364 338 365 def parse_block_mapping(self): … … 366 393 "expected <block end>, but found %r" % token.id, token.start_mark) 367 394 token = self.scanner.get() 368 yield CollectionEndEvent(token.start_mark, token.end_mark)395 yield MappingEndEvent(token.start_mark, token.end_mark) 369 396 370 397 def parse_flow_sequence(self): … … 384 411 if self.scanner.check(KeyToken): 385 412 token = self.scanner.get() 386 yield MappingEvent(None, u'!', 387 token.start_mark, token.end_mark) 413 yield MappingStartEvent(None, u'!', 414 token.start_mark, token.end_mark, 415 flow_style=True) 388 416 if not self.scanner.check(ValueToken, 389 417 FlowEntryToken, FlowSequenceEndToken): … … 403 431 yield self.process_empty_scalar(token.start_mark) 404 432 token = self.scanner.peek() 405 yield CollectionEndEvent(token.start_mark, token.start_mark)433 yield MappingEndEvent(token.start_mark, token.start_mark) 406 434 else: 407 435 for event in self.parse_flow_node(): … … 414 442 self.scanner.get() 415 443 token = self.scanner.get() 416 yield CollectionEndEvent(token.start_mark, token.end_mark)444 yield SequenceEndEvent(token.start_mark, token.end_mark) 417 445 418 446 def parse_flow_mapping(self): … … 458 486 "expected '}', but found %r" % token.id, token.start_mark) 459 487 token = self.scanner.get() 460 yield CollectionEndEvent(token.start_mark, token.end_mark)488 yield MappingEndEvent(token.start_mark, token.end_mark) 461 489 462 490 def process_empty_scalar(self, mark): 463 return ScalarEvent(None, None, u'', mark, mark) 464 491 return ScalarEvent(None, None, u'', mark, mark, 492 implicit=True) 493 -
pyyaml/trunk/lib/yaml/reader.py
r119 r130 101 101 self.raw_buffer = None 102 102 self.raw_decode = None 103 self.encoding = None 103 104 self.index = 0 104 105 self.line = 0 … … 157 158 if self.raw_buffer.startswith(codecs.BOM_UTF16_LE): 158 159 self.raw_decode = utf_16_le_decode 160 self.encoding = 'utf-16-le' 159 161 elif self.raw_buffer.startswith(codecs.BOM_UTF16_BE): 160 162 self.raw_decode = utf_16_be_decode 163 self.encoding = 'utf-16-be' 161 164 else: 162 165 self.raw_decode = utf_8_decode 166 self.encoding = 'utf-8' 163 167 self.update(1) 164 168 -
pyyaml/trunk/lib/yaml/scanner.py
r118 r130 380 380 mark = self.reader.get_mark() 381 381 382 # Add STREAM-END. 383 self.tokens.append(StreamStartToken(mark, mark)) 382 # Add STREAM-START. 383 self.tokens.append(StreamStartToken(mark, mark, 384 encoding=self.reader.encoding)) 384 385 385 386 … … 639 640 640 641 def fetch_literal(self): 641 self.fetch_block_scalar( folded=False)642 self.fetch_block_scalar(style='|') 642 643 643 644 def fetch_folded(self): 644 self.fetch_block_scalar( folded=True)645 646 def fetch_block_scalar(self, folded):645 self.fetch_block_scalar(style='>') 646 647 def fetch_block_scalar(self, style): 647 648 648 649 # A simple key may follow a block scalar. … … 653 654 654 655 # Scan and add SCALAR. 655 self.tokens.append(self.scan_block_scalar( folded))656 self.tokens.append(self.scan_block_scalar(style)) 656 657 657 658 def fetch_single(self): 658 self.fetch_flow_scalar( double=False)659 self.fetch_flow_scalar(style='\'') 659 660 660 661 def fetch_double(self): 661 self.fetch_flow_scalar( double=True)662 663 def fetch_flow_scalar(self, double):662 self.fetch_flow_scalar(style='"') 663 664 def fetch_flow_scalar(self, style): 664 665 665 666 # A flow scalar could be a simple key. … … 670 671 671 672 # Scan and add SCALAR. 672 self.tokens.append(self.scan_flow_scalar( double))673 self.tokens.append(self.scan_flow_scalar(style)) 673 674 674 675 def fetch_plain(self): … … 987 988 return TagToken(value, start_mark, end_mark) 988 989 989 def scan_block_scalar(self, folded): 990 # See the specification for details. 990 def scan_block_scalar(self, style): 991 # See the specification for details. 992 993 if style == '>': 994 folded = True 995 else: 996 folded = False 991 997 992 998 chunks = [] … … 1022 1028 breaks, end_mark = self.scan_block_scalar_breaks(indent) 1023 1029 if self.reader.column == indent and self.reader.peek() != u'\0': 1030 1024 1031 # Unfortunately, folding rules are ambiguous. 1025 1032 # … … 1054 1061 1055 1062 # We are done. 1056 return ScalarToken(u''.join(chunks), False, start_mark, end_mark) 1063 return ScalarToken(u''.join(chunks), False, start_mark, end_mark, 1064 style) 1057 1065 1058 1066 def scan_block_scalar_indicators(self, start_mark): … … 1138 1146 return chunks, end_mark 1139 1147 1140 def scan_flow_scalar(self, double):1148 def scan_flow_scalar(self, style): 1141 1149 # See the specification for details. 1142 1150 # Note that we loose indentation rules for quoted scalars. Quoted … … 1145 1153 # restrictive then the specification requires. We only need to check 1146 1154 # that document separators are not included in scalars. 1155 if style == '"': 1156 double = True 1157 else: 1158 double = False 1147 1159 chunks = [] 1148 1160 start_mark = self.reader.get_mark() … … 1155 1167 self.reader.forward() 1156 1168 end_mark = self.reader.get_mark() 1157 return ScalarToken(u''.join(chunks), False, start_mark, end_mark) 1169 return ScalarToken(u''.join(chunks), False, start_mark, end_mark, 1170 style) 1158 1171 1159 1172 ESCAPE_REPLACEMENTS = { -
pyyaml/trunk/lib/yaml/tokens.py
r118 r130 31 31 class StreamStartToken(Token): 32 32 id = '<stream start>' 33 def __init__(self, start_mark=None, end_mark=None, 34 encoding=None): 35 self.start_mark = start_mark 36 self.end_mark = end_mark 37 self.encoding = encoding 33 38 34 39 class StreamEndToken(Token): … … 91 96 class ScalarToken(Token): 92 97 id = '<scalar>' 93 def __init__(self, value, plain, start_mark, end_mark):98 def __init__(self, value, implicit, start_mark, end_mark, style=None): 94 99 self.value = value 95 self. plain = plain100 self.implicit = implicit 96 101 self.start_mark = start_mark 97 102 self.end_mark = end_mark 103 self.style = style 98 104 -
pyyaml/trunk/tests/data/aliases.events
r129 r130 1 1 - !StreamStart 2 2 - !DocumentStart 3 - !Sequence 3 - !SequenceStart 4 4 - !Scalar { anchor: 'myanchor', tag: '!mytag', value: 'data' } 5 5 - !Alias { anchor: 'myanchor' } 6 - ! CollectionEnd6 - !SequenceEnd 7 7 - !DocumentEnd 8 8 - !StreamEnd -
pyyaml/trunk/tests/data/mappings.events
r129 r130 2 2 3 3 - !DocumentStart 4 - !Mapping 4 - !MappingStart 5 5 - !Scalar { implicit: true, value: 'key' } 6 6 - !Scalar { implicit: true, value: 'value' } 7 7 - !Scalar { implicit: true, value: 'empty mapping' } 8 - !Mapping 9 - ! CollectionEnd8 - !MappingStart 9 - !MappingEnd 10 10 - !Scalar { implicit: true, value: 'empty mapping with tag' } 11 - !Mapping { tag: '!mytag' }12 - ! CollectionEnd11 - !MappingStart { tag: '!mytag' } 12 - !MappingEnd 13 13 - !Scalar { implicit: true, value: 'block mapping' } 14 - !Mapping 15 - !Mapping 14 - !MappingStart 15 - !MappingStart 16 16 - !Scalar { implicit: true, value: 'complex' } 17 17 - !Scalar { implicit: true, value: 'key' } 18 18 - !Scalar { implicit: true, value: 'complex' } 19 19 - !Scalar { implicit: true, value: 'key' } 20 - ! CollectionEnd21 - !Mapping 20 - !MappingEnd 21 - !MappingStart 22 22 - !Scalar { implicit: true, value: 'complex' } 23 23 - !Scalar { implicit: true, value: 'key' } 24 - ! CollectionEnd25 - ! CollectionEnd24 - !MappingEnd 25 - !MappingEnd 26 26 - !Scalar { implicit: true, value: 'flow mapping' } 27 - !Mapping { flow: true }27 - !MappingStart { flow: true } 28 28 - !Scalar { implicit: true, value: 'key' } 29 29 - !Scalar { implicit: true, value: 'value' } 30 - !Mapping 30 - !MappingStart 31 31 - !Scalar { implicit: true, value: 'complex' } 32 32 - !Scalar { implicit: true, value: 'key' } 33 33 - !Scalar { implicit: true, value: 'complex' } 34 34 - !Scalar { implicit: true, value: 'key' } 35 - ! CollectionEnd36 - !Mapping 35 - !MappingEnd 36 - !MappingStart 37 37 - !Scalar { implicit: true, value: 'complex' } 38 38 - !Scalar { implicit: true, value: 'key' } 39 - ! CollectionEnd40 - ! CollectionEnd41 - ! CollectionEnd39 - !MappingEnd 40 - !MappingEnd 41 - !MappingEnd 42 42 - !DocumentEnd 43 43 -
pyyaml/trunk/tests/data/scalars.events
r129 r130 2 2 3 3 - !DocumentStart 4 - !Mapping 4 - !MappingStart 5 5 - !Scalar { implicit: true, value: 'empty scalar' } 6 6 - !Scalar { implicit: true, value: '' } … … 19 19 - !Scalar { implicit: true, value: 'block scalar with tag' } 20 20 - !Scalar { value: 'data', style: '|', tag: '!mytag' } 21 - ! CollectionEnd21 - !MappingEnd 22 22 - !DocumentEnd 23 23 -
pyyaml/trunk/tests/data/sequences.events
r129 r130 2 2 3 3 - !DocumentStart 4 - !Sequence 5 - ! CollectionEnd4 - !SequenceStart 5 - !SequenceEnd 6 6 - !DocumentEnd 7 7 8 8 - !DocumentStart 9 - !Sequence { tag: '!mytag' }10 - ! CollectionEnd9 - !SequenceStart { tag: '!mytag' } 10 - !SequenceEnd 11 11 - !DocumentEnd 12 12 13 13 - !DocumentStart 14 - !Sequence 15 - !Sequence 16 - ! CollectionEnd17 - !Sequence { tag: '!mytag' }18 - ! CollectionEnd19 - !Sequence 14 - !SequenceStart 15 - !SequenceStart 16 - !SequenceEnd 17 - !SequenceStart { tag: '!mytag' } 18 - !SequenceEnd 19 - !SequenceStart 20 20 - !Scalar 21 21 - !Scalar { value: 'data' } 22 22 - !Scalar { tag: '!mytag', value: 'data' } 23 - ! CollectionEnd24 - !Sequence 25 - !Sequence 26 - !Sequence 23 - !SequenceEnd 24 - !SequenceStart 25 - !SequenceStart 26 - !SequenceStart 27 27 - !Scalar 28 - ! CollectionEnd29 - ! CollectionEnd30 - ! CollectionEnd31 - !Sequence 32 - !Sequence { tag: '!mytag' }33 - !Sequence 28 - !SequenceEnd 29 - !SequenceEnd 30 - !SequenceEnd 31 - !SequenceStart 32 - !SequenceStart { tag: '!mytag' } 33 - !SequenceStart 34 34 - !Scalar { value: 'data' } 35 - ! CollectionEnd36 - ! CollectionEnd37 - ! CollectionEnd38 - ! CollectionEnd35 - !SequenceEnd 36 - !SequenceEnd 37 - !SequenceEnd 38 - !SequenceEnd 39 39 - !DocumentEnd 40 40 41 41 - !DocumentStart 42 - !Sequence 43 - !Mapping 42 - !SequenceStart 43 - !MappingStart 44 44 - !Scalar { value: 'key1' } 45 - !Sequence 45 - !SequenceStart 46 46 - !Scalar { value: 'data1' } 47 47 - !Scalar { value: 'data2' } 48 - ! CollectionEnd48 - !SequenceEnd 49 49 - !Scalar { value: 'key2' } 50 - !Sequence { tag: '!mytag1' }50 - !SequenceStart { tag: '!mytag1' } 51 51 - !Scalar { value: 'data3' } 52 - !Sequence 52 - !SequenceStart 53 53 - !Scalar { value: 'data4' } 54 54 - !Scalar { value: 'data5' } 55 - ! CollectionEnd56 - !Sequence { tag: '!mytag2' }55 - !SequenceEnd 56 - !SequenceStart { tag: '!mytag2' } 57 57 - !Scalar { value: 'data6' } 58 58 - !Scalar { value: 'data7' } 59 - ! CollectionEnd60 - ! CollectionEnd61 - ! CollectionEnd62 - ! CollectionEnd59 - !SequenceEnd 60 - !SequenceEnd 61 - !MappingEnd 62 - !SequenceEnd 63 63 - !DocumentEnd 64 64 65 65 - !DocumentStart 66 - !Sequence 67 - !Sequence { flow: true }68 - !Sequence 69 - ! CollectionEnd66 - !SequenceStart 67 - !SequenceStart { flow: true } 68 - !SequenceStart 69 - !SequenceEnd 70 70 - !Scalar 71 71 - !Scalar { value: 'data' } 72 72 - !Scalar { tag: '!mytag', value: 'data' } 73 - !Sequence { tag: '!mytag' }73 - !SequenceStart { tag: '!mytag' } 74 74 - !Scalar { value: 'data' } 75 75 - !Scalar { value: 'data' } 76 - ! CollectionEnd77 - ! CollectionEnd78 - ! CollectionEnd76 - !SequenceEnd 77 - !SequenceEnd 78 - !SequenceEnd 79 79 - !DocumentEnd 80 80 -
pyyaml/trunk/tests/data/spec-08-12.canonical
r38 r130 7 7 *A, 8 8 !!str "", 9 !!str "", 9 10 ] -
pyyaml/trunk/tests/data/spec-08-12.data
r44 r130 4 4 !!str 'Tagged', 5 5 *anchor, # Alias node 6 # !!str,# Empty plain scalar6 !!str , # Empty plain scalar 7 7 '', # Empty plain scalar 8 8 ] -
pyyaml/trunk/tests/test_appliance.py
r118 r130 244 244 self.events.append(ScalarEvent(anchor, tag, self.get_value(), None, None)) 245 245 elif self.test_token(FlowSequenceStartToken): 246 self.events.append(Sequence Event(anchor, tag, None, None))246 self.events.append(SequenceStartEvent(anchor, tag, None, None)) 247 247 self.parse_sequence() 248 248 elif self.test_token(FlowMappingStartToken): 249 self.events.append(Mapping Event(anchor, tag, None, None))249 self.events.append(MappingStartEvent(anchor, tag, None, None)) 250 250 self.parse_mapping() 251 251 else: … … 262 262 self.parse_node() 263 263 self.consume_token(FlowSequenceEndToken) 264 self.events.append( CollectionEndEvent(None, None))264 self.events.append(SequenceEndEvent(None, None)) 265 265 266 266 # mapping: MAPPING-START (map_entry (ENTRY map_entry)*)? ENTRY? MAPPING-END … … 274 274 self.parse_map_entry() 275 275 self.consume_token(FlowMappingEndToken) 276 self.events.append( CollectionEndEvent(None, None))276 self.events.append(MappingEndEvent(None, None)) 277 277 278 278 # map_entry: KEY node VALUE node -
pyyaml/trunk/tests/test_emitter.py
r129 r130 33 33 mapping = self.construct_mapping(node) 34 34 class_name = str(node.tag[1:])+'Event' 35 if class_name in ['AliasEvent', 'ScalarEvent', 'Sequence Event', 'MappingEvent']:35 if class_name in ['AliasEvent', 'ScalarEvent', 'SequenceStartEvent', 'MappingStartEvent']: 36 36 mapping.setdefault('anchor', None) 37 if class_name in ['ScalarEvent', 'Sequence Event', 'MappingEvent']:37 if class_name in ['ScalarEvent', 'SequenceStartEvent', 'MappingStartEvent']: 38 38 mapping.setdefault('tag', None) 39 39 if class_name == 'ScalarEvent': -
pyyaml/trunk/tests/test_structure.py
r118 r130 36 36 else: 37 37 return None 38 elif parser.check(Sequence Event):38 elif parser.check(SequenceStartEvent): 39 39 parser.get() 40 40 sequence = [] 41 while not parser.check( CollectionEndEvent):41 while not parser.check(SequenceEndEvent): 42 42 sequence.append(self._convert(parser)) 43 43 parser.get() 44 44 return sequence 45 elif parser.check(Mapping Event):45 elif parser.check(MappingStartEvent): 46 46 parser.get() 47 47 mapping = [] 48 while not parser.check( CollectionEndEvent):48 while not parser.check(MappingEndEvent): 49 49 key = self._convert(parser) 50 50 value = self._convert(parser) … … 93 93 #self.failUnlessEqual(event1.tag, event2.tag) 94 94 self.failUnlessEqual(event1.value, event2.value) 95 if isinstance(event1, Collection Event):95 if isinstance(event1, CollectionStartEvent): 96 96 #self.failUnlessEqual(event1.anchor, event2.anchor) 97 97 #self.failUnlessEqual(event1.tag, event2.tag) … … 214 214 self.failUnlessEqual(event1.tag, event2.tag) 215 215 self.failUnlessEqual(event1.value, event2.value) 216 if isinstance(event1, Collection Event):216 if isinstance(event1, CollectionStartEvent): 217 217 self.failUnlessEqual(event1.anchor, event2.anchor) 218 218 self.failUnlessEqual(event1.tag, event2.tag) -
pyyaml/trunk/tests/test_yaml.py
r116 r130 10 10 from test_detector import * 11 11 from test_constructor import * 12 #from test_emitter import * 12 13 from test_syck import * 13 14
Note: See TracChangeset
for help on using the changeset viewer.
