def parse(source): task = Task() get_value = lambda x: x.value value_of = lambda t: some(lambda x: x.type == t) >> get_value keyword = lambda s: skip(value_of(s)) make_rule = lambda x: task.add_rule(Rule(**{x[0]: x[1][1:-1]})) set_root = lambda value: task.set_root_dir(value[1:-1]) set_mask = lambda value: task.set_mask(value[1:-1]) root = keyword('In') + value_of('Value') >> set_root mask = keyword('With') + value_of('Value') >> set_mask rule = keyword('Set') + \ value_of('Attribute') + \ keyword('Equals') + \ value_of('Value') \ >> make_rule parser = maybe(mask) + root + many(rule) parser.parse(source) return task
from model import Task, Rule ROOT_DIR = '../tests/music' MASK = '.*\.mp3' task = Task() task.set_root_dir(ROOT_DIR) task.set_mask(MASK) task.add_rule(Rule(Artist='Metallica')) task.add_rule(Rule(Genre='Rock')) task.process_rules()
def test_task_setters(): task = Task() task.set_mask('.*') assert task.file_mask == '.*' task.set_root_dir('./') assert task.root_dir == './'