mercurial/revset.py
changeset 25704 70a2082f855a
parent 25689 1cce81121472
child 25705 48919d246a47
equal deleted inserted replaced
25703:1a6a117d0b95 25704:70a2082f855a
   131     "&": (5, None, ("and", 5)),
   131     "&": (5, None, ("and", 5)),
   132     "%": (5, None, ("only", 5), ("onlypost", 5)),
   132     "%": (5, None, ("only", 5), ("onlypost", 5)),
   133     "or": (4, None, ("or", 4)),
   133     "or": (4, None, ("or", 4)),
   134     "|": (4, None, ("or", 4)),
   134     "|": (4, None, ("or", 4)),
   135     "+": (4, None, ("or", 4)),
   135     "+": (4, None, ("or", 4)),
       
   136     "=": (3, None, ("keyvalue", 3)),
   136     ",": (2, None, ("list", 2)),
   137     ",": (2, None, ("list", 2)),
   137     ")": (0, None, None),
   138     ")": (0, None, None),
   138     "symbol": (0, ("symbol",), None),
   139     "symbol": (0, ("symbol",), None),
   139     "string": (0, ("string",), None),
   140     "string": (0, ("string",), None),
   140     "end": (0, None, None),
   141     "end": (0, None, None),
   188             yield ('..', None, pos)
   189             yield ('..', None, pos)
   189             pos += 1 # skip ahead
   190             pos += 1 # skip ahead
   190         elif c == '#' and program[pos:pos + 2] == '##': # look ahead carefully
   191         elif c == '#' and program[pos:pos + 2] == '##': # look ahead carefully
   191             yield ('##', None, pos)
   192             yield ('##', None, pos)
   192             pos += 1 # skip ahead
   193             pos += 1 # skip ahead
   193         elif c in "():,-|&+!~^%": # handle simple operators
   194         elif c in "():=,-|&+!~^%": # handle simple operators
   194             yield (c, None, pos)
   195             yield (c, None, pos)
   195         elif (c in '"\'' or c == 'r' and
   196         elif (c in '"\'' or c == 'r' and
   196               program[pos:pos + 2] in ("r'", 'r"')): # handle quoted strings
   197               program[pos:pos + 2] in ("r'", 'r"')): # handle quoted strings
   197             if c == 'r':
   198             if c == 'r':
   198                 pos += 1
   199                 pos += 1
   385 def notset(repo, subset, x):
   386 def notset(repo, subset, x):
   386     return subset - getset(repo, subset, x)
   387     return subset - getset(repo, subset, x)
   387 
   388 
   388 def listset(repo, subset, a, b):
   389 def listset(repo, subset, a, b):
   389     raise error.ParseError(_("can't use a list in this context"))
   390     raise error.ParseError(_("can't use a list in this context"))
       
   391 
       
   392 def keyvaluepair(repo, subset, k, v):
       
   393     raise error.ParseError(_("can't use a key-value pair in this context"))
   390 
   394 
   391 def func(repo, subset, a, b):
   395 def func(repo, subset, a, b):
   392     if a[0] == 'symbol' and a[1] in symbols:
   396     if a[0] == 'symbol' and a[1] in symbols:
   393         return symbols[a[1]](repo, subset, b)
   397         return symbols[a[1]](repo, subset, b)
   394 
   398 
  2178     "symbol": stringset,
  2182     "symbol": stringset,
  2179     "and": andset,
  2183     "and": andset,
  2180     "or": orset,
  2184     "or": orset,
  2181     "not": notset,
  2185     "not": notset,
  2182     "list": listset,
  2186     "list": listset,
       
  2187     "keyvalue": keyvaluepair,
  2183     "func": func,
  2188     "func": func,
  2184     "ancestor": ancestorspec,
  2189     "ancestor": ancestorspec,
  2185     "parent": parentspec,
  2190     "parent": parentspec,
  2186     "parentpost": p1,
  2191     "parentpost": p1,
  2187 }
  2192 }