mirror of
https://github.com/davidhalter/parso.git
synced 2025-12-07 21:34:32 +08:00
Allow multiple values to be used when registering rules.
This commit is contained in:
@@ -86,15 +86,22 @@ class Normalizer(use_metaclass(_NormalizerMeta)):
|
|||||||
return cls._register_rule(**kwargs)
|
return cls._register_rule(**kwargs)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def _register_rule(cls, value=None, type=None):
|
def _register_rule(cls, value=None, values=(), type=None, types=()):
|
||||||
if value is None and type is None:
|
if value is None and type is None:
|
||||||
raise ValueError("You must register at least something.")
|
raise ValueError("You must register at least something.")
|
||||||
|
|
||||||
def decorator(rule_cls):
|
def decorator(rule_cls):
|
||||||
|
copied_values = list(values)
|
||||||
|
copied_types = list(types)
|
||||||
if value is not None:
|
if value is not None:
|
||||||
cls.rule_value_classes.setdefault(value, []).append(rule_cls)
|
copied_values.append(value)
|
||||||
if type is not None:
|
if type is not None:
|
||||||
cls.rule_type_classes.setdefault(type, []).append(rule_cls)
|
copied_types.append(type)
|
||||||
|
|
||||||
|
for v in copied_values:
|
||||||
|
cls.rule_value_classes.setdefault(v, []).append(rule_cls)
|
||||||
|
for t in copied_types:
|
||||||
|
cls.rule_type_classes.setdefault(t, []).append(rule_cls)
|
||||||
return rule_cls
|
return rule_cls
|
||||||
|
|
||||||
return decorator
|
return decorator
|
||||||
|
|||||||
Reference in New Issue
Block a user