Mercurial > hg
changeset 28875:2e9f5453ab5a
parser: unify parser function of alias declaration and definition
We no longer have to keep them separately.
author | Yuya Nishihara <yuya@tcha.org> |
---|---|
date | Tue, 29 Mar 2016 00:08:25 +0900 |
parents | 552eabef663b |
children | 79b8f052ee51 |
files | mercurial/parser.py mercurial/revset.py |
diffstat | 2 files changed, 9 insertions(+), 15 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/parser.py Tue Mar 29 00:05:14 2016 +0900 +++ b/mercurial/parser.py Tue Mar 29 00:08:25 2016 +0900 @@ -251,13 +251,8 @@ raise TypeError("'%s' is not instantiatable" % cls.__name__) @staticmethod - def _parsedecl(spec): - """Parse an alias name and arguments""" - raise NotImplementedError - - @staticmethod - def _parsedefn(spec): - """Parse an alias definition""" + def _parse(spec): + """Parse an alias name, arguments and definition""" raise NotImplementedError @staticmethod @@ -270,7 +265,7 @@ """Parse an alias declaration into ``(name, tree, args, errorstr)`` This function analyzes the parsed tree. The parsing rule is provided - by ``_parsedecl()``. + by ``_parse()``. - ``name``: of declared alias (may be ``decl`` itself at error) - ``tree``: parse result (or ``None`` at error) @@ -311,7 +306,7 @@ ... return list(tree[1:]) ... return [tree] >>> class aliasrules(basealiasrules): - ... _parsedecl = staticmethod(parse) + ... _parse = staticmethod(parse) ... _getlist = staticmethod(getlist) >>> builddecl = aliasrules._builddecl >>> builddecl('foo') @@ -342,7 +337,7 @@ ('foo', None, None, 'argument names collide with each other') """ try: - tree = cls._parsedecl(decl) + tree = cls._parse(decl) except error.ParseError as inst: return (decl, None, None, parseerrordetail(inst)) @@ -392,7 +387,7 @@ """Parse an alias definition into a tree and marks substitutions This function marks alias argument references as ``_aliasarg``. The - parsing rule is provided by ``_parsedefn()``. + parsing rule is provided by ``_parse()``. ``args`` is a list of alias argument names, or None if the alias is declared as a symbol. @@ -404,7 +399,7 @@ ... '"$1" or "foo"': ('or', ('string', '$1'), ('string', 'foo')), ... } >>> class aliasrules(basealiasrules): - ... _parsedefn = staticmethod(parsemap.__getitem__) + ... _parse = staticmethod(parsemap.__getitem__) ... _getlist = staticmethod(lambda x: []) >>> builddefn = aliasrules._builddefn >>> def pprint(tree): @@ -429,7 +424,7 @@ ('string', '$1') ('string', 'foo')) """ - tree = cls._parsedefn(defn) + tree = cls._parse(defn) if args: args = set(args) else:
--- a/mercurial/revset.py Tue Mar 29 00:05:14 2016 +0900 +++ b/mercurial/revset.py Tue Mar 29 00:08:25 2016 +0900 @@ -2253,8 +2253,7 @@ class _aliasrules(parser.basealiasrules): """Parsing and expansion rule set of revset aliases""" _section = _('revset alias') - _parsedecl = staticmethod(_parsealias) - _parsedefn = staticmethod(_parsealias) + _parse = staticmethod(_parsealias) _getlist = staticmethod(getlist) class revsetalias(object):