##// END OF EJS Templates
revset: pass a lookup function to the tokenizer
Matt Mackall -
r20779:ffc2295c default
parent child Browse files
Show More
@@ -128,7 +128,7 b' elements = {'
128
128
129 keywords = set(['and', 'or', 'not'])
129 keywords = set(['and', 'or', 'not'])
130
130
131 def tokenize(program):
131 def tokenize(program, lookup=None):
132 '''
132 '''
133 Parse a revset statement into a stream of tokens
133 Parse a revset statement into a stream of tokens
134
134
@@ -2023,14 +2023,17 b' def findaliases(ui, tree):'
2023 aliases[alias.name] = alias
2023 aliases[alias.name] = alias
2024 return _expandaliases(aliases, tree, [], {})
2024 return _expandaliases(aliases, tree, [], {})
2025
2025
2026 def parse(spec):
2026 def parse(spec, lookup=None):
2027 p = parser.parser(tokenize, elements)
2027 p = parser.parser(tokenize, elements)
2028 return p.parse(spec)
2028 return p.parse(spec, lookup=lookup)
2029
2029
2030 def match(ui, spec):
2030 def match(ui, spec, repo=None):
2031 if not spec:
2031 if not spec:
2032 raise error.ParseError(_("empty query"))
2032 raise error.ParseError(_("empty query"))
2033 tree, pos = parse(spec)
2033 lookup = None
2034 if repo:
2035 lookup = repo.__contains__
2036 tree, pos = parse(spec, lookup)
2034 if (pos != len(spec)):
2037 if (pos != len(spec)):
2035 raise error.ParseError(_("invalid token"), pos)
2038 raise error.ParseError(_("invalid token"), pos)
2036 if ui:
2039 if ui:
General Comments 0
You need to be logged in to leave comments. Login now