def __init__(self, rule_name, metadata):
"""Constructor of TreeLoader.
Args:
rule_name: rule file name in ./rules, excluding extension .yml
metadata: data of any other information needed evaluating tree
"""
base_dir = os.path.dirname(os.path.abspath(__file__))
# Open yaml rule file
try:
f = open(os.path.join(base_dir, 'rules', rule_name + '.yml'), 'r', encoding='utf-8')
self.tree = yaml.load(f, Loader)
f.close()
except IOError:
logger.error('Error opening file: ' + rule_name)
raise TreeLoaderException()
# Metadata
self.metadata = metadata
self.default_properties = {
# if this value is True, falsy node will be hidden
'hide_false': False,
# [currently acquired credit, required credit for True, sum credit of falsy node or not]
'credit_info': [0, 0, False],
'main_node': False,
}
# base node is GRADUATE
self.base_node = TreeNode(None, self.default_properties, self.metadata, and_func(), '!GRADUATE')
# initiate recursive tree loading procedure
self.load_tree(self.tree, self.base_node)
评论列表
文章目录