Changeset 328 for pyyaml/trunk/lib3/yaml/resolver.py
- Timestamp:
- 12/29/08 12:24:05 (4 years ago)
- Location:
- pyyaml/trunk/lib3
- Files:
-
- 1 edited
- 1 copied
-
. (copied) (copied from pyyaml/trunk/lib)
-
yaml/resolver.py (modified) (11 diffs)
Legend:
- Unmodified
- Added
- Removed
-
pyyaml/trunk/lib3/yaml/resolver.py
r260 r328 2 2 __all__ = ['BaseResolver', 'Resolver'] 3 3 4 from error import *5 from nodes import *4 from .error import * 5 from .nodes import * 6 6 7 7 import re … … 10 10 pass 11 11 12 class BaseResolver (object):13 14 DEFAULT_SCALAR_TAG = u'tag:yaml.org,2002:str'15 DEFAULT_SEQUENCE_TAG = u'tag:yaml.org,2002:seq'16 DEFAULT_MAPPING_TAG = u'tag:yaml.org,2002:map'12 class BaseResolver: 13 14 DEFAULT_SCALAR_TAG = 'tag:yaml.org,2002:str' 15 DEFAULT_SEQUENCE_TAG = 'tag:yaml.org,2002:seq' 16 DEFAULT_MAPPING_TAG = 'tag:yaml.org,2002:map' 17 17 18 18 yaml_implicit_resolvers = {} … … 23 23 self.resolver_prefix_paths = [] 24 24 25 @classmethod 25 26 def add_implicit_resolver(cls, tag, regexp, first): 26 27 if not 'yaml_implicit_resolvers' in cls.__dict__: … … 30 31 for ch in first: 31 32 cls.yaml_implicit_resolvers.setdefault(ch, []).append((tag, regexp)) 32 add_implicit_resolver = classmethod(add_implicit_resolver) 33 33 34 @classmethod 34 35 def add_path_resolver(cls, tag, path, kind=None): 35 36 # Note: `add_path_resolver` is experimental. The API could be changed. … … 67 68 node_check = MappingNode 68 69 elif node_check not in [ScalarNode, SequenceNode, MappingNode] \ 69 and not isinstance(node_check, basestring)\70 and not isinstance(node_check, str) \ 70 71 and node_check is not None: 71 72 raise ResolverError("Invalid node checker: %s" % node_check) 72 if not isinstance(index_check, ( basestring, int))\73 if not isinstance(index_check, (str, int)) \ 73 74 and index_check is not None: 74 75 raise ResolverError("Invalid index checker: %s" % index_check) … … 84 85 raise ResolverError("Invalid node kind: %s" % kind) 85 86 cls.yaml_path_resolvers[tuple(new_path), kind] = tag 86 add_path_resolver = classmethod(add_path_resolver)87 87 88 88 def descend_resolver(self, current_node, current_index): … … 118 118 current_node, current_index): 119 119 node_check, index_check = path[depth-1] 120 if isinstance(node_check, basestring):120 if isinstance(node_check, str): 121 121 if current_node.tag != node_check: 122 122 return … … 129 129 and current_index is None: 130 130 return 131 if isinstance(index_check, basestring):131 if isinstance(index_check, str): 132 132 if not (isinstance(current_index, ScalarNode) 133 133 and index_check == current_index.value): … … 140 140 def resolve(self, kind, value, implicit): 141 141 if kind is ScalarNode and implicit[0]: 142 if value == u'':143 resolvers = self.yaml_implicit_resolvers.get( u'', [])142 if value == '': 143 resolvers = self.yaml_implicit_resolvers.get('', []) 144 144 else: 145 145 resolvers = self.yaml_implicit_resolvers.get(value[0], []) … … 166 166 167 167 Resolver.add_implicit_resolver( 168 u'tag:yaml.org,2002:bool',169 re.compile( ur'''^(?:yes|Yes|YES|no|No|NO168 'tag:yaml.org,2002:bool', 169 re.compile(r'''^(?:yes|Yes|YES|no|No|NO 170 170 |true|True|TRUE|false|False|FALSE 171 171 |on|On|ON|off|Off|OFF)$''', re.X), 172 list( u'yYnNtTfFoO'))173 174 Resolver.add_implicit_resolver( 175 u'tag:yaml.org,2002:float',176 re.compile( ur'''^(?:[-+]?(?:[0-9][0-9_]*)\.[0-9_]*(?:[eE][-+][0-9]+)?172 list('yYnNtTfFoO')) 173 174 Resolver.add_implicit_resolver( 175 'tag:yaml.org,2002:float', 176 re.compile(r'''^(?:[-+]?(?:[0-9][0-9_]*)\.[0-9_]*(?:[eE][-+][0-9]+)? 177 177 |\.[0-9_]+(?:[eE][-+][0-9]+)? 178 178 |[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\.[0-9_]* 179 179 |[-+]?\.(?:inf|Inf|INF) 180 180 |\.(?:nan|NaN|NAN))$''', re.X), 181 list( u'-+0123456789.'))182 183 Resolver.add_implicit_resolver( 184 u'tag:yaml.org,2002:int',185 re.compile( ur'''^(?:[-+]?0b[0-1_]+181 list('-+0123456789.')) 182 183 Resolver.add_implicit_resolver( 184 'tag:yaml.org,2002:int', 185 re.compile(r'''^(?:[-+]?0b[0-1_]+ 186 186 |[-+]?0[0-7_]+ 187 187 |[-+]?(?:0|[1-9][0-9_]*) 188 188 |[-+]?0x[0-9a-fA-F_]+ 189 189 |[-+]?[1-9][0-9_]*(?::[0-5]?[0-9])+)$''', re.X), 190 list( u'-+0123456789'))191 192 Resolver.add_implicit_resolver( 193 u'tag:yaml.org,2002:merge',194 re.compile( ur'^(?:<<)$'),190 list('-+0123456789')) 191 192 Resolver.add_implicit_resolver( 193 'tag:yaml.org,2002:merge', 194 re.compile(r'^(?:<<)$'), 195 195 ['<']) 196 196 197 197 Resolver.add_implicit_resolver( 198 u'tag:yaml.org,2002:null',199 re.compile( ur'''^(?: ~198 'tag:yaml.org,2002:null', 199 re.compile(r'''^(?: ~ 200 200 |null|Null|NULL 201 201 | )$''', re.X), 202 [ u'~', u'n', u'N', u''])203 204 Resolver.add_implicit_resolver( 205 u'tag:yaml.org,2002:timestamp',206 re.compile( ur'''^(?:[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]202 ['~', 'n', 'N', '']) 203 204 Resolver.add_implicit_resolver( 205 'tag:yaml.org,2002:timestamp', 206 re.compile(r'''^(?:[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9] 207 207 |[0-9][0-9][0-9][0-9] -[0-9][0-9]? -[0-9][0-9]? 208 208 (?:[Tt]|[ \t]+)[0-9][0-9]? 209 209 :[0-9][0-9] :[0-9][0-9] (?:\.[0-9]*)? 210 210 (?:[ \t]*(?:Z|[-+][0-9][0-9]?(?::[0-9][0-9])?))?)$''', re.X), 211 list( u'0123456789'))212 213 Resolver.add_implicit_resolver( 214 u'tag:yaml.org,2002:value',215 re.compile( ur'^(?:=)$'),211 list('0123456789')) 212 213 Resolver.add_implicit_resolver( 214 'tag:yaml.org,2002:value', 215 re.compile(r'^(?:=)$'), 216 216 ['=']) 217 217 … … 219 219 # because plain scalars cannot start with '!', '&', or '*'. 220 220 Resolver.add_implicit_resolver( 221 u'tag:yaml.org,2002:yaml',222 re.compile( ur'^(?:!|&|\*)$'),223 list( u'!&*'))224 221 'tag:yaml.org,2002:yaml', 222 re.compile(r'^(?:!|&|\*)$'), 223 list('!&*')) 224
Note: See TracChangeset
for help on using the changeset viewer.
