Changeset 55 for branches/pyyaml3000/lib/yaml/resolver.py
- Timestamp:
- 02/22/06 19:18:34 (7 years ago)
- File:
-
- 1 edited
-
branches/pyyaml3000/lib/yaml/resolver.py (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/pyyaml3000/lib/yaml/resolver.py
r54 r55 1 1 2 2 from nodes import * 3 4 import re 3 5 4 6 class BaseResolver: … … 40 42 self.resolve_sequence(path, node) 41 43 for index in range(len(node.value)): 42 self.resolve_node(path+[ node, index], node.value[index])44 self.resolve_node(path+[(node, index)], node.value[index]) 43 45 elif isinstance(node, MappingNode): 44 46 self.resolve_mapping(path, node) 45 for key , valuein node.value:47 for key in node.value: 46 48 self.resolve_node(path+[node, None], key) 47 self.resolve_node(path+[node, key], value)49 self.resolve_node(path+[node, key], node.value[key]) 48 50 49 51 def resolve_scalar(self, path, node): … … 62 64 63 65 def detect_scalar(self, value): 64 return None 66 if value == u'': 67 detectors = self.yaml_detectors.get(u'', []) 68 else: 69 detectors = self.yaml_detectors.get(value[0], []) 70 detectors += self.yaml_detectors.get(None, []) 71 for tag, regexp in detectors: 72 if regexp.match(value): 73 return tag 74 75 def add_detector(cls, tag, regexp, first): 76 if not 'yaml_detectors' in cls.__dict__: 77 cls.yaml_detectors = cls.yaml_detectors.copy() 78 for ch in first: 79 cls.yaml_detectors.setdefault(ch, []).append((tag, regexp)) 80 add_detector = classmethod(add_detector) 81 82 yaml_detectors = {} 65 83 66 84 class Resolver(BaseResolver): 67 85 pass 68 86 87 Resolver.add_detector( 88 u'tag:yaml.org,2002:bool', 89 re.compile(ur'''^(?:y|Y|yes|Yes|YES|n|N|no|No|NO 90 |true|True|TRUE|false|False|FALSE 91 |on|On|ON|off|Off|OFF)$''', re.X), 92 list(u'yYnNtTfFoO')) 93 94 Resolver.add_detector( 95 u'tag:yaml.org,2002:float', 96 re.compile(ur'''^(?:[-+]?(?:[0-9][0-9_]*)?\.[0-9_]*(?:[eE][-+][0-9]+)? 97 |[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\.[0-9_]* 98 |[-+]?\.(?:inf|Inf|INF) 99 |\.(?:nan|NaN|NAN))$''', re.X), 100 list(u'-+0123456789.')) 101 102 Resolver.add_detector( 103 u'tag:yaml.org,2002:int', 104 re.compile(ur'''^(?:[-+]?0b[0-1_]+ 105 |[-+]?0[0-7_]+ 106 |[-+]?(?:0|[1-9][0-9_]*) 107 |[-+]?0x[0-9a-fA-F_]+ 108 |[-+]?[1-9][0-9_]*(?::[0-5]?[0-9])+)$''', re.X), 109 list(u'-+0123456789')) 110 111 Resolver.add_detector( 112 u'tag:yaml.org,2002:merge', 113 re.compile(ur'^(?:<<)$'), 114 ['<']) 115 116 Resolver.add_detector( 117 u'tag:yaml.org,2002:null', 118 re.compile(ur'''^(?: ~ 119 |null|Null|NULL 120 | )$''', re.X), 121 [u'~', u'n', u'N', u'']) 122 123 Resolver.add_detector( 124 u'tag:yaml.org,2002:timestamp', 125 re.compile(ur'''^(?:[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9] 126 |[0-9][0-9][0-9][0-9] -[0-9][0-9]? -[0-9][0-9]? 127 (?:[Tt]|[ \t]+)[0-9][0-9]? 128 :[0-9][0-9] :[0-9][0-9] (?:\.[0-9]*)? 129 (?:[ \t]*(?:Z|[-+][0-9][0-9]?(?::[0-9][0-9])?))?)$''', re.X), 130 list(u'0123456789')) 131 132 Resolver.add_detector( 133 u'tag:yaml.org,2002:value', 134 re.compile(ur'^(?:=)$'), 135 ['=']) 136
Note: See TracChangeset
for help on using the changeset viewer.
