@@ -47,23 +47,28 @@ def __init__(self, rule: dict, name = None):
4747 self .name = name
4848 if "where" not in self ._raw_rule .keys ():
4949 raise ProfileWithoutWhereStatement
50- self .where = self ._raw_rule [ "where" ]
51- self .rules = deepcopy (self ._raw_rule ). pop ( "where" )
50+ self .where = self ._raw_rule . pop ( "where" )
51+ self .rules = deepcopy (self ._raw_rule )
5252
5353 def _check_if_fmf_node_match (self , node ):
54- context = Context (node .data )
54+ context = Context (** node .data )
5555 return context .matches (self .where )
5656
57- def apply_rule (self , node ):
57+ def _apply_rule (self , node ):
58+
5859 if not self ._check_if_fmf_node_match (node ):
5960 return
6061 for rule in self .rules :
6162 if isinstance (rule , str ) and rule .endswith ("?" ):
6263 rule_clear = rule [:- 1 ]
63- data = {rule_clear : self .rules [" rule" ]}
64+ data = {rule_clear : self .rules [rule ]}
6465 if rule_clear in node .data :
6566 # do not override if defined
6667 continue
6768 else :
68- data = {rule : self .rules ["rule" ]}
69- node ._merge_special (node , data )
69+ data = {rule : self .rules [rule ]}
70+ node ._merge_special (node .data , data )
71+
72+ def apply_rule (self , node ):
73+ for item in node .climb ():
74+ self ._apply_rule (item )
0 commit comments