Mercurial > public > mercurial-scm > hg
comparison mercurial/filesetlang.py @ 38863:61ab546b71c3
fileset: introduce weight constants for readability
These constants are defined in the filesetlang module since it's the
bottommost module depending on WEIGHT_CHECK_FILENAME, and extensions
will be likely to import it to process function arguments.
Credit for the naming goes to Augie Fackler.
author | Yuya Nishihara <yuya@tcha.org> |
---|---|
date | Sat, 04 Aug 2018 17:08:33 +0900 |
parents | ca4de8ba5b5f |
children | 73731fa8d1bd |
comparison
equal
deleted
inserted
replaced
38862:1ff45c518e6f | 38863:61ab546b71c3 |
---|---|
11 from . import ( | 11 from . import ( |
12 error, | 12 error, |
13 parser, | 13 parser, |
14 pycompat, | 14 pycompat, |
15 ) | 15 ) |
16 | |
17 # common weight constants for static optimization | |
18 # (see registrar.filesetpredicate for details) | |
19 WEIGHT_CHECK_FILENAME = 0.5 | |
20 WEIGHT_READ_CONTENTS = 30 | |
21 WEIGHT_STATUS = 10 | |
22 WEIGHT_STATUS_THOROUGH = 50 | |
16 | 23 |
17 elements = { | 24 elements = { |
18 # token-type: binding-strength, primary, prefix, infix, suffix | 25 # token-type: binding-strength, primary, prefix, infix, suffix |
19 "(": (20, None, ("group", 1, ")"), ("func", 1, ")"), None), | 26 "(": (20, None, ("group", 1, ")"), ("func", 1, ")"), None), |
20 ":": (15, None, None, ("kindpat", 15), None), | 27 ":": (15, None, None, ("kindpat", 15), None), |
182 if x is None: | 189 if x is None: |
183 return 0, x | 190 return 0, x |
184 | 191 |
185 op = x[0] | 192 op = x[0] |
186 if op in {'string', 'symbol'}: | 193 if op in {'string', 'symbol'}: |
187 return 0.5, x | 194 return WEIGHT_CHECK_FILENAME, x |
188 if op == 'kindpat': | 195 if op == 'kindpat': |
189 w, t = _optimize(x[2]) | 196 w, t = _optimize(x[2]) |
190 return w, (op, x[1], t) | 197 return w, (op, x[1], t) |
191 if op == 'not': | 198 if op == 'not': |
192 w, t = _optimize(x[1]) | 199 w, t = _optimize(x[1]) |