def test_searchhooks(setdt, monkeypatch): monkeypatch.setattr(searching, "parsecreatefilters", [ _parsehook_dayparse, _parsehook_dayabs ]) setdt(2014, 2, 19, 12) tracker = Tracker(skeleton=False) tracker.deserialize({"life": "task: something\n" "days\n" " day: today\n" " day: tomorrow\n" " day: September 20, 2014\n" }) something = tracker.root.find("something").one() assert something.find("today").one().date == date(2014, 2, 19) assert something.find("tomorrow").one().date == date(2014, 2, 20) assert something.find("sept 20, 2014").one().date == date(2014, 9, 20) assert not something.find("invalid date sept 20, 1995").first() # subject to change assert not something.find("sept 21, 2014").first() assert (searching.parse("day: today") == searching.Queries(searching.parse("today").queries[0])) setdt(2014, 2, 20, 12) assert something.find("today").one().date == date(2014, 2, 20)
def test_parse_filters(monkeypatch): def _hook1(queries): queries.append(searching.parse_single("comment: derp derp")) return queries def _hook2(queries): queries.append(searching.parse_single("task: some random query")) return queries monkeypatch.setattr(searching, "parsecreatefilters", [ _hook1, _hook2 ]) assert searching.parse("around the world") == searching.Queries( searching.parse_single("around the world"), searching.parse_single("comment: derp derp"), searching.parse_single("task: some random query"), ) assert (searching.parse_create("comment: hoop doop") == searching._Creators(creators=( searching.parse_create_single("comment: hoop doop"), searching.parse_create_single("comment: derp derp"), searching.parse_create_single("task: some random query") )) )
def find(self, query, rigid=False): from treeoflife import searching if rigid: query = searching.parse_single(query) else: query = searching.parse(query) return query(self)
def __init__(self, text, root): self.query = searching.parse(text) query = self.query(root.active_node)\ .actions(creates=False).ignore_overflow() self.results = [] for result in query: if not result.can_activate: continue result.actions = ["activate"] self.results.append(result)
def __init__(self, text, root): self.query = searching.parse(text) results = self.query(root.active_node)\ .actions(matches=False).ignore_overflow().list() results.sort(key=lambda result: -result.createposition) self.results = [] for result in results: if not result.can_activate: continue result.actions = ["activate"] self.results.append(result)
def __init__(self, text, root): self.query = searching.parse(text) bound = self.query(root.active_node).actions().ignore_overflow() results = [] for result in bound: if not result.can_activate and result.exists: continue if result.can_activate: result.actions[:] = ["activate"] results.append(result) results.sort(key=lambda result: ( (0,) if result.exists else (1, -result.createposition) )) self.results = results
def test_searchhooks_mincreate(setdt, monkeypatch): monkeypatch.setattr(searching, "parsecreatefilters", [ _parsehook_dayparse, _parsehook_dayabs ]) setdt(2014, 2, 19, 12) tracker = Tracker(skeleton=False) tracker.deserialize({"life": "task: something\n" "days\n" " day: today\n" }) query = searching.parse("today > does not exist, cannot create") assert query(tracker.root).actions().list() is not None
def __init__(self, text, root): self.query = searching.parse(text) self.results = self.query(root.active_node)\ .actions(matches=False).ignore_overflow().list() self.results.sort(key=lambda result: -result.createposition)