Exemple #1
0
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)
Exemple #2
0
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")
        ))
    )
Exemple #3
0
 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)
Exemple #4
0
 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)
Exemple #5
0
 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)
Exemple #6
0
    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
Exemple #7
0
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
Exemple #8
0
 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)