def new_rule(hie, parent, name, pattern_name=None):
"""create a new rule """
if valid_child_name(hie, parent, name):
if pattern_name is None:
pattern = nx.DiGraph()
else:
pattern_id = child_from_name(hie, parent, pattern_name)
pattern = hie.node[pattern_id].graph
rule_id = hie.unique_graph_id(name)
rule = Rule(pattern, pattern, pattern)
hie.add_rule(rule_id, rule, {"name": name})
if parent is not None:
if pattern_name is None:
hie.add_rule_typing(rule_id, parent, {}, {})
else:
mapping = hie.edge[pattern_id][parent].mapping
hie.add_rule_typing(rule_id, parent, mapping, mapping)
else:
raise ValueError("Invalid new name")
# TODO : undirected ?
评论列表
文章目录