Changeset 53


Ignore:
Timestamp:
02/20/06 15:30:09 (9 years ago)
Author:
xi
Message:

Implement Composer and BaseResolver?.

Location:
branches/pyyaml3000
Files:
7 added
6 edited

Legend:

Unmodified
Added
Removed
  • branches/pyyaml3000/lib/yaml/__init__.py

    r51 r53  
    11 
     2from error import YAMLError 
    23from reader import Reader 
    34from scanner import Scanner 
    45from parser import Parser 
     6from composer import Composer 
     7from resolver import Resolver 
    58 
    69from tokens import * 
     
    1821    return iter(parser) 
    1922 
     23def compose(data, Reader=Reader, Scanner=Scanner, Parser=Parser, 
     24        Composer=Composer): 
     25    reader = Reader(data) 
     26    scanner = Scanner(reader) 
     27    parser = Parser(scanner) 
     28    composer = Composer(parser) 
     29    return iter(composer) 
     30 
     31def compose_document(*args, **kwds): 
     32    try: 
     33        return compose(*args, **kwds).next() 
     34    except StopIteration: 
     35        return None 
     36 
     37def resolve(data, Reader=Reader, Scanner=Scanner, Parser=Parser, 
     38        Composer=Composer, Resolver=Resolver): 
     39    reader = Reader(data) 
     40    scanner = Scanner(reader) 
     41    parser = Parser(scanner) 
     42    composer = Composer(parser) 
     43    resolver = Resolver(composer) 
     44    return iter(resolver) 
     45 
     46def resolve_document(*args, **kwds): 
     47    try: 
     48        return resolve(*args, **kwds).next() 
     49    except StopIteration: 
     50        return None 
     51 
  • branches/pyyaml3000/lib/yaml/error.py

    r52 r53  
    6464        if self.context is not None: 
    6565            lines.append(self.context) 
    66             if self.context_marker is not None  \ 
    67                 and (self.problem is None or self.problem_marker is None 
    68                         or self.context_marker.name != self.problem_marker.name 
    69                         or self.context_marker.line != self.problem_marker.line 
    70                         or self.context_marker.column != self.problem_marker.column): 
    71                 lines.append(str(self.context_marker)) 
     66        if self.context_marker is not None  \ 
     67            and (self.problem is None or self.problem_marker is None 
     68                    or self.context_marker.name != self.problem_marker.name 
     69                    or self.context_marker.line != self.problem_marker.line 
     70                    or self.context_marker.column != self.problem_marker.column): 
     71            lines.append(str(self.context_marker)) 
    7272        if self.problem is not None: 
    7373            lines.append(self.problem) 
    74             if self.problem_marker is not None: 
    75                 lines.append(str(self.problem_marker)) 
     74        if self.problem_marker is not None: 
     75            lines.append(str(self.problem_marker)) 
    7676        return '\n'.join(lines) 
    7777 
  • branches/pyyaml3000/lib/yaml/events.py

    r51 r53  
    1313 
    1414class NodeEvent(Event): 
    15     def __init__(self, anchor, tag, start_marker, end_marker): 
     15    def __init__(self, anchor, start_marker, end_marker): 
    1616        self.anchor = anchor 
    17         self.tag = tag 
    1817        self.start_marker = start_marker 
    1918        self.end_marker = end_marker 
    2019 
    2120class AliasEvent(NodeEvent): 
    22     def __init__(self, name, start_marker, end_marker): 
    23         self.name = name 
    24         self.start_marker = start_marker 
    25         self.end_marker = end_marker 
     21    pass 
    2622 
    2723class ScalarEvent(NodeEvent): 
     
    3430 
    3531class CollectionEvent(NodeEvent): 
    36     pass 
     32    def __init__(self, anchor, tag, start_marker, end_marker): 
     33        self.anchor = anchor 
     34        self.tag = tag 
     35        self.start_marker = start_marker 
     36        self.end_marker = end_marker 
    3737 
    3838class SequenceEvent(CollectionEvent): 
  • branches/pyyaml3000/lib/yaml/parser.py

    r52 r53  
    9999                    return True 
    100100        return False 
     101 
     102    def peek(self): 
     103        # Get the next event. 
     104        if self.current_event is None: 
     105            try: 
     106                self.current_event = self.event_generator.next() 
     107            except StopIteration: 
     108                pass 
     109        return self.current_event 
    101110 
    102111    def get(self): 
  • branches/pyyaml3000/tests/test_errors.py

    r52 r53  
    66from yaml.scanner import * 
    77from yaml.parser import * 
     8from yaml.composer import * 
     9from yaml.resolver import * 
    810 
    911class TestErrors(test_appliance.TestAppliance): 
     
    2224            scanner = Scanner(reader) 
    2325            parser = Parser(scanner) 
    24             return list(parser) 
     26            composer = Composer(parser) 
     27            resolver = Resolver(composer) 
     28            return list(composer) 
    2529        except YAMLError, exc: 
    2630        #except ScannerError, exc: 
    2731        #except ParserError, exc: 
     32        #except ComposerError, exc: 
    2833            #print '.'*70 
    2934            #print "%s:" % exc.__class__.__name__, exc 
     
    3540            scanner = Scanner(reader) 
    3641            parser = Parser(scanner) 
    37             return list(parser) 
     42            composer = Composer(parser) 
     43            resolver = Resolver(composer) 
     44            return list(composer) 
    3845        except YAMLError, exc: 
    3946        #except ScannerError, exc: 
    4047        #except ParserError, exc: 
     48        #except ComposerError, exc: 
    4149            #print '.'*70 
    4250            #print "%s:" % filename 
  • branches/pyyaml3000/tests/test_structure.py

    r51 r53  
    124124            self.failUnlessEqual(event1.__class__, event2.__class__) 
    125125            if isinstance(event1, AliasEvent): 
    126                 self.failUnlessEqual(event1.name, event2.name) 
     126                self.failUnlessEqual(event1.anchor, event2.anchor) 
    127127            elif isinstance(event1, ScalarEvent): 
    128128                self.failUnlessEqual(event1.anchor, event2.anchor) 
Note: See TracChangeset for help on using the changeset viewer.