summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnthon van der Neut <anthon@mnt.org>2016-12-05 17:53:30 +0100
committerAnthon van der Neut <anthon@mnt.org>2016-12-05 17:53:30 +0100
commita8e7e5f6632e6f80c94fe3ccb6fc2d940984e2b6 (patch)
tree0aa12744ae233005d8c62c77dc00677510c6b0e1
parent43609da658dc5f73b4977c45e02742212a7c8d23 (diff)
downloadruamel.yaml-a8e7e5f6632e6f80c94fe3ccb6fc2d940984e2b6.tar.gz
solve 82a
-rw-r--r--__init__.py2
-rw-r--r--resolver.py146
2 files changed, 76 insertions, 72 deletions
diff --git a/__init__.py b/__init__.py
index d5dc197..24fd648 100644
--- a/__init__.py
+++ b/__init__.py
@@ -9,7 +9,7 @@ from __future__ import absolute_import
_package_data = dict(
full_package_name="ruamel.yaml",
- version_info=(0, 13, 3),
+ version_info=(0, 13, 4, "dev"),
author="Anthon van der Neut",
author_email="a.van.der.neut@ruamel.eu",
description="ruamel.yaml is a YAML parser/emitter that supports roundtrip preservation of comments, seq/map flow style, and map key order", # NOQA
diff --git a/resolver.py b/resolver.py
index 072fa95..58fd975 100644
--- a/resolver.py
+++ b/resolver.py
@@ -15,6 +15,77 @@ __all__ = ['BaseResolver', 'Resolver', 'VersionedResolver']
_DEFAULT_VERSION = (1, 2)
+# resolvers consist of
+# - a list of applicable version
+# - a tag
+# - a regexp
+# - a list of first characters to match
+implicit_resolvers = [
+ ([(1, 2)],
+ u'tag:yaml.org,2002:bool',
+ re.compile(u'''^(?:true|True|TRUE|false|False|FALSE)$''', re.X),
+ list(u'tTfF')),
+ ([(1, 1)],
+ u'tag:yaml.org,2002:bool',
+ re.compile(u'''^(?:yes|Yes|YES|no|No|NO
+ |true|True|TRUE|false|False|FALSE
+ |on|On|ON|off|Off|OFF)$''', re.X),
+ list(u'yYnNtTfFoO')),
+ ([(1, 2), (1, 1)],
+ u'tag:yaml.org,2002:float',
+ re.compile(u'''^(?:
+ [-+]?(?:[0-9][0-9_]*)\\.[0-9_]*(?:[eE][-+]?[0-9]+)?
+ |[-+]?(?:[0-9][0-9_]*)(?:[eE][-+]?[0-9]+)
+ |\\.[0-9_]+(?:[eE][-+][0-9]+)?
+ |[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]*
+ |[-+]?\\.(?:inf|Inf|INF)
+ |\\.(?:nan|NaN|NAN))$''', re.X),
+ list(u'-+0123456789.')),
+ ([(1, 2)],
+ u'tag:yaml.org,2002:int',
+ re.compile(u'''^(?:[-+]?0b[0-1_]+
+ |[-+]?0o?[0-7_]+
+ |[-+]?(?:0|[1-9][0-9_]*)
+ |[-+]?0x[0-9a-fA-F_]+)$''', re.X),
+ list(u'-+0123456789')),
+ ([(1, 1)],
+ u'tag:yaml.org,2002:int',
+ re.compile(u'''^(?:[-+]?0b[0-1_]+
+ |[-+]?0o?[0-7_]+
+ |[-+]?(?:0|[1-9][0-9_]*)
+ |[-+]?0x[0-9a-fA-F_]+
+ |[-+]?[1-9][0-9_]*(?::[0-5]?[0-9])+)$''', re.X),
+ list(u'-+0123456789')),
+ ([(1, 2), (1, 1)],
+ u'tag:yaml.org,2002:merge',
+ re.compile(u'^(?:<<)$'),
+ [u'<']),
+ ([(1, 2), (1, 1)],
+ u'tag:yaml.org,2002:null',
+ re.compile(u'''^(?: ~
+ |null|Null|NULL
+ | )$''', re.X),
+ [u'~', u'n', u'N', u'']),
+ ([(1, 2), (1, 1)],
+ u'tag:yaml.org,2002:timestamp',
+ re.compile(u'''^(?:[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]
+ |[0-9][0-9][0-9][0-9] -[0-9][0-9]? -[0-9][0-9]?
+ (?:[Tt]|[ \\t]+)[0-9][0-9]?
+ :[0-9][0-9] :[0-9][0-9] (?:\\.[0-9]*)?
+ (?:[ \\t]*(?:Z|[-+][0-9][0-9]?(?::[0-9][0-9])?))?)$''', re.X),
+ list(u'0123456789')),
+ ([(1, 2), (1, 1)],
+ u'tag:yaml.org,2002:value',
+ re.compile(u'^(?:=)$'),
+ [u'=']),
+ # The following resolver is only for documentation purposes. It cannot work
+ # because plain scalars cannot start with '!', '&', or '*'.
+ ([(1, 2), (1, 1)],
+ u'tag:yaml.org,2002:yaml',
+ re.compile(u'^(?:!|&|\\*)$'),
+ list(u'!&*')),
+]
+
class ResolverError(YAMLError):
pass
@@ -42,11 +113,15 @@ class BaseResolver(object):
cls.yaml_implicit_resolvers = dict((k, cls.yaml_implicit_resolvers[k][:])
for k in cls.yaml_implicit_resolvers)
if first is None:
+ implicit_resolvers.append(([(1, 2), (1, 1)], tag, regexp, first))
first = [None]
for ch in first:
cls.yaml_implicit_resolvers.setdefault(ch, []).append(
(tag, regexp))
+ # @classmethod
+ # def add_implicit_resolver(cls, tag, regexp, first):
+
@classmethod
def add_path_resolver(cls, tag, path, kind=None):
# Note: `add_path_resolver` is experimental. The API could be changed.
@@ -247,77 +322,6 @@ Resolver.add_implicit_resolver(
re.compile(u'^(?:!|&|\\*)$'),
list(u'!&*'))
-# resolvers consist of
-# - a list of applicable version
-# - a tag
-# - a regexp
-# - a list of first characters to match
-implicit_resolvers = [
- ([(1, 2)],
- u'tag:yaml.org,2002:bool',
- re.compile(u'''^(?:true|True|TRUE|false|False|FALSE)$''', re.X),
- list(u'tTfF')),
- ([(1, 1)],
- u'tag:yaml.org,2002:bool',
- re.compile(u'''^(?:yes|Yes|YES|no|No|NO
- |true|True|TRUE|false|False|FALSE
- |on|On|ON|off|Off|OFF)$''', re.X),
- list(u'yYnNtTfFoO')),
- ([(1, 2), (1, 1)],
- u'tag:yaml.org,2002:float',
- re.compile(u'''^(?:
- [-+]?(?:[0-9][0-9_]*)\\.[0-9_]*(?:[eE][-+]?[0-9]+)?
- |[-+]?(?:[0-9][0-9_]*)(?:[eE][-+]?[0-9]+)
- |\\.[0-9_]+(?:[eE][-+][0-9]+)?
- |[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]*
- |[-+]?\\.(?:inf|Inf|INF)
- |\\.(?:nan|NaN|NAN))$''', re.X),
- list(u'-+0123456789.')),
- ([(1, 2)],
- u'tag:yaml.org,2002:int',
- re.compile(u'''^(?:[-+]?0b[0-1_]+
- |[-+]?0o?[0-7_]+
- |[-+]?(?:0|[1-9][0-9_]*)
- |[-+]?0x[0-9a-fA-F_]+)$''', re.X),
- list(u'-+0123456789')),
- ([(1, 1)],
- u'tag:yaml.org,2002:int',
- re.compile(u'''^(?:[-+]?0b[0-1_]+
- |[-+]?0o?[0-7_]+
- |[-+]?(?:0|[1-9][0-9_]*)
- |[-+]?0x[0-9a-fA-F_]+
- |[-+]?[1-9][0-9_]*(?::[0-5]?[0-9])+)$''', re.X),
- list(u'-+0123456789')),
- ([(1, 2), (1, 1)],
- u'tag:yaml.org,2002:merge',
- re.compile(u'^(?:<<)$'),
- [u'<']),
- ([(1, 2), (1, 1)],
- u'tag:yaml.org,2002:null',
- re.compile(u'''^(?: ~
- |null|Null|NULL
- | )$''', re.X),
- [u'~', u'n', u'N', u'']),
- ([(1, 2), (1, 1)],
- u'tag:yaml.org,2002:timestamp',
- re.compile(u'''^(?:[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]
- |[0-9][0-9][0-9][0-9] -[0-9][0-9]? -[0-9][0-9]?
- (?:[Tt]|[ \\t]+)[0-9][0-9]?
- :[0-9][0-9] :[0-9][0-9] (?:\\.[0-9]*)?
- (?:[ \\t]*(?:Z|[-+][0-9][0-9]?(?::[0-9][0-9])?))?)$''', re.X),
- list(u'0123456789')),
- ([(1, 2), (1, 1)],
- u'tag:yaml.org,2002:value',
- re.compile(u'^(?:=)$'),
- [u'=']),
- # The following resolver is only for documentation purposes. It cannot work
- # because plain scalars cannot start with '!', '&', or '*'.
- ([(1, 2), (1, 1)],
- u'tag:yaml.org,2002:yaml',
- re.compile(u'^(?:!|&|\\*)$'),
- list(u'!&*')),
-]
-
class VersionedResolver(BaseResolver):
"""