Changeset 133 for pyyaml/trunk/lib/yaml/resolver.py
- Timestamp:
- 04/10/06 20:34:16 (7 years ago)
- File:
-
- 1 edited
-
pyyaml/trunk/lib/yaml/resolver.py (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
pyyaml/trunk/lib/yaml/resolver.py
r132 r133 1 1 2 __all__ = [' BaseResolver', 'Resolver', 'ResolverError']2 __all__ = ['Resolver', 'ResolverError'] 3 3 4 4 from error import MarkedYAMLError 5 from detector import Detector 5 6 from nodes import * 6 7 … … 11 12 pass 12 13 13 class BaseResolver:14 class Resolver(Detector): 14 15 15 16 DEFAULT_SCALAR_TAG = u'tag:yaml.org,2002:str' … … 58 59 def resolve_scalar(self, path, node): 59 60 if node.tag is None and node.implicit: 60 node.tag = self.detect _scalar(node.value)61 node.tag = self.detect(node.value) 61 62 if node.tag is None or node.tag == u'!': 62 63 node.tag = self.DEFAULT_SCALAR_TAG … … 70 71 node.tag = self.DEFAULT_MAPPING_TAG 71 72 72 def detect_scalar(self, value):73 if value == u'':74 detectors = self.yaml_detectors.get(u'', [])75 else:76 detectors = self.yaml_detectors.get(value[0], [])77 detectors += self.yaml_detectors.get(None, [])78 for tag, regexp in detectors:79 if regexp.match(value):80 return tag81 82 def add_detector(cls, tag, regexp, first):83 if not 'yaml_detectors' in cls.__dict__:84 cls.yaml_detectors = cls.yaml_detectors.copy()85 for ch in first:86 cls.yaml_detectors.setdefault(ch, []).append((tag, regexp))87 add_detector = classmethod(add_detector)88 89 yaml_detectors = {}90 91 class Resolver(BaseResolver):92 pass93 94 Resolver.add_detector(95 u'tag:yaml.org,2002:bool',96 re.compile(ur'''^(?:yes|Yes|YES|n|N|no|No|NO97 |true|True|TRUE|false|False|FALSE98 |on|On|ON|off|Off|OFF)$''', re.X),99 list(u'yYnNtTfFoO'))100 101 Resolver.add_detector(102 u'tag:yaml.org,2002:float',103 re.compile(ur'''^(?:[-+]?(?:[0-9][0-9_]*)?\.[0-9_]*(?:[eE][-+][0-9]+)?104 |[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\.[0-9_]*105 |[-+]?\.(?:inf|Inf|INF)106 |\.(?:nan|NaN|NAN))$''', re.X),107 list(u'-+0123456789.'))108 109 Resolver.add_detector(110 u'tag:yaml.org,2002:int',111 re.compile(ur'''^(?:[-+]?0b[0-1_]+112 |[-+]?0[0-7_]+113 |[-+]?(?:0|[1-9][0-9_]*)114 |[-+]?0x[0-9a-fA-F_]+115 |[-+]?[1-9][0-9_]*(?::[0-5]?[0-9])+)$''', re.X),116 list(u'-+0123456789'))117 118 Resolver.add_detector(119 u'tag:yaml.org,2002:merge',120 re.compile(ur'^(?:<<)$'),121 ['<'])122 123 Resolver.add_detector(124 u'tag:yaml.org,2002:null',125 re.compile(ur'''^(?: ~126 |null|Null|NULL127 | )$''', re.X),128 [u'~', u'n', u'N', u''])129 130 Resolver.add_detector(131 u'tag:yaml.org,2002:timestamp',132 re.compile(ur'''^(?:[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]133 |[0-9][0-9][0-9][0-9] -[0-9][0-9]? -[0-9][0-9]?134 (?:[Tt]|[ \t]+)[0-9][0-9]?135 :[0-9][0-9] :[0-9][0-9] (?:\.[0-9]*)?136 (?:[ \t]*(?:Z|[-+][0-9][0-9]?(?::[0-9][0-9])?))?)$''', re.X),137 list(u'0123456789'))138 139 Resolver.add_detector(140 u'tag:yaml.org,2002:value',141 re.compile(ur'^(?:=)$'),142 ['='])143 144 # The following detector is only for documentation purposes. It cannot work145 # because plain scalars cannot start with '!', '&', or '*'.146 Resolver.add_detector(147 u'tag:yaml.org,2002:yaml',148 re.compile(ur'^(?:!|&|\*)$'),149 list(u'!&*'))150
Note: See TracChangeset
for help on using the changeset viewer.
