コード例 #1
0
    def _filters(self):
        filters = []

        def arg_filters():
            result = []
            for arg in self.args:
                if re.match(Filter.ORDINAL_TAG_MATCH, arg):
                    argfilter = Filter.OrdinalTagFilter(arg)
                elif len(arg) > 1 and arg[0] == '-':
                    # when a word starts with -, exclude it
                    argfilter = Filter.GrepFilter(arg[1:])
                    argfilter = Filter.NegationFilter(argfilter)
                else:
                    argfilter = Filter.GrepFilter(arg)

                result.append(argfilter)

            return result

        if not self.show_all:
            filters.append(Filter.DependencyFilter(self.todolist))
            filters.append(Filter.RelevanceFilter())

        filters += arg_filters()

        if not self.show_all:
            filters.append(Filter.LimitFilter(config().list_limit()))

        return filters
コード例 #2
0
    def test_filter16(self):
        todos = load_file('test/data/FilterTest1.txt')
        grep = Filter.NegationFilter(Filter.GrepFilter('+project'))

        filtered_todos = grep.filter(todos)
        reference = load_file('test/data/FilterTest3-result.txt')

        self.assertEquals(todolist_to_string(filtered_todos), \
            todolist_to_string(reference))
コード例 #3
0
    def test_filter17(self):
        todos = load_file('test/data/FilterTest1.txt')
        grep1 = Filter.GrepFilter('task')
        grep2 = Filter.GrepFilter('project')
        andfilter = Filter.AndFilter(grep1, grep2)

        filtered_todos = andfilter.filter(todos)
        reference = load_file('test/data/FilterTest4-result.txt')

        self.assertEquals(todolist_to_string(filtered_todos), \
            todolist_to_string(reference))
コード例 #4
0
    def test_filter18(self):
        todos = load_file('test/data/FilterTest1.txt')
        grep1 = Filter.GrepFilter('part')
        grep2 = Filter.GrepFilter('important')
        grep = Filter.OrFilter(grep1, grep2)

        filtered_todos = grep.filter(todos)
        reference = load_file('test/data/FilterTest5-result.txt')

        self.assertEquals(todolist_to_string(filtered_todos), \
            todolist_to_string(reference))
コード例 #5
0
ファイル: ExpressionCommand.py プロジェクト: wzel/topydo
    def _filters(self):
        filters = []

        if not self.show_all:
            filters.append(Filter.DependencyFilter(self.todolist))
            filters.append(Filter.RelevanceFilter())

        args = self.args[:-1] if self.last_argument else self.args
        filters += Filter.get_filter_list(args)

        if not self.show_all:
            filters.append(Filter.LimitFilter(self.limit))

        return filters
コード例 #6
0
        def arg_filters():
            result = []
            for arg in self.args:
                if re.match(Filter.ORDINAL_TAG_MATCH, arg):
                    argfilter = Filter.OrdinalTagFilter(arg)
                elif len(arg) > 1 and arg[0] == '-':
                    # when a word starts with -, exclude it
                    argfilter = Filter.GrepFilter(arg[1:])
                    argfilter = Filter.NegationFilter(argfilter)
                else:
                    argfilter = Filter.GrepFilter(arg)

                result.append(argfilter)

            return result
コード例 #7
0
ファイル: FilterTest.py プロジェクト: netimen/topydo
    def test_filter7(self):
        otf = Filter.OrdinalTagFilter('due:Non')

        result = otf.filter(self.todos)

        self.assertEqual(len(result), 1)
        self.assertEqual(result[0].source(), self.todo3)
コード例 #8
0
ファイル: test_filter.py プロジェクト: wzel/topydo
    def test_filter8(self):
        pf = Filter.PriorityFilter('(<Z)')

        result = pf.filter(self.todos)

        self.assertEqual(len(result), 1)
        self.assertEqual(result[0].source(), self.todo5)
コード例 #9
0
ファイル: test_filter.py プロジェクト: wzel/topydo
    def test_filter3(self):
        cf = Filter.CompletionFilter('completion:2015-12-19')

        result = cf.filter(self.todos)

        self.assertEqual(len(result), 1)
        self.assertEqual(result[0].source(), self.todo2)
コード例 #10
0
    def test_filter28(self):
        todos = load_file('test/data/FilterTest3.txt')
        otf = Filter.OrdinalTagFilter('value:<16a')

        filtered_todos = otf.filter(todos)

        self.assertEquals(todolist_to_string(filtered_todos), "")
コード例 #11
0
ファイル: test_filter.py プロジェクト: wzel/topydo
    def test_filter1(self):
        cf = Filter.CreationFilter('create:2015-12-19')

        result = cf.filter(self.todos)

        self.assertEqual(len(result), 1)
        self.assertEqual(result[0].source(), self.todo1)
コード例 #12
0
    def test_filter5(self):
        otf = Filter.OrdinalTagFilter('due:!today')

        result = otf.filter(self.todos)

        self.assertEquals(len(result), 1)
        self.assertEquals(str(result[0]), self.todo2)
コード例 #13
0
ファイル: DepCommand.py プロジェクト: netimen/topydo
    def _handle_ls(self):
        """ Handles the ls subsubcommand. """
        try:
            arg1 = self.argument(1)
            arg2 = self.argument(2)

            todos = []
            if arg2 == 'to':
                # dep ls 1 to ...
                number = arg1
                todo = self.todolist.todo(number)
                todos = self.todolist.children(todo)
            elif arg1 == 'to':
                # dep ls ... to 1
                number = arg2
                todo = self.todolist.todo(number)
                todos = self.todolist.parents(todo)
            else:
                self.error(self.usage())

            if todos:
                sorter = Sorter(config().sort_string())
                instance_filter = Filter.InstanceFilter(todos)
                view = View(sorter, [instance_filter], self.todolist)
                self.out(self.printer.print_list(view.todos))
        except InvalidTodoException:
            self.error("Invalid todo number given.")
        except InvalidCommandArgument:
            self.error(self.usage())
コード例 #14
0
    def test_filter23(self):
        todos = load_file('test/data/FilterTest3.txt')
        otf = Filter.OrdinalTagFilter('due:=2014-11-99')

        filtered_todos = otf.filter(todos)

        self.assertEquals(todolist_to_string(filtered_todos), "")
コード例 #15
0
    def test_filter10(self):
        """ Test instance filter """
        todos = load_file('test/data/FilterTest1.txt')
        instance_filter = Filter.InstanceFilter([])

        filtered_todos = instance_filter.filter(todos)

        self.assertEquals([], filtered_todos)
コード例 #16
0
    def test_filter4(self):
        otf = Filter.OrdinalTagFilter('due:<1w')

        result = otf.filter(self.todos)

        self.assertEquals(len(result), 2)
        self.assertEquals(str(result[0]), self.todo1)
        self.assertEquals(str(result[1]), self.todo2)
コード例 #17
0
    def test_filter14(self):
        """ Test limit filter. """
        todos = load_file('test/data/FilterTest1.txt')
        limit_filter = Filter.LimitFilter(-1)

        filtered_todos = limit_filter.filter(todos)

        self.assertEquals(todos, filtered_todos)
コード例 #18
0
    def test_filter15(self):
        """ Test limit filter. """
        todos = load_file('test/data/FilterTest1.txt')
        limit_filter = Filter.LimitFilter(100)

        filtered_todos = limit_filter.filter(todos)

        self.assertEquals(len(filtered_todos), 4)
コード例 #19
0
    def test_filter20(self):
        todos = load_file('test/data/FilterTest3.txt')
        otf = Filter.OrdinalTagFilter('due:<2014-11-10')

        filtered_todos = otf.filter(todos)
        reference = load_file('test/data/FilterTest6-result.txt')

        self.assertEquals(todolist_to_string(filtered_todos), \
            todolist_to_string(reference))
コード例 #20
0
ファイル: test_filter.py プロジェクト: wzel/topydo
    def test_filter5(self):
        pf = Filter.PriorityFilter('(<=C)')

        result = pf.filter(self.todos)

        self.assertEqual(len(result), 3)
        self.assertEqual(result[0].source(), self.todo3)
        self.assertEqual(result[1].source(), self.todo4)
        self.assertEqual(result[2].source(), self.todo5)
コード例 #21
0
    def test_filter31(self):
        todos = load_file('test/data/FilterTest3.txt')
        otf = Filter.OrdinalTagFilter('value:>-8')

        filtered_todos = otf.filter(todos)
        reference = load_file('test/data/FilterTest13-result.txt')

        self.assertEquals(todolist_to_string(filtered_todos),
            todolist_to_string(reference))
コード例 #22
0
    def test_filter13(self):
        """ Test limit filter. """
        todos = load_file('test/data/FilterTest1.txt')
        limit_filter = Filter.LimitFilter(1)

        filtered_todos = limit_filter.filter(todos)

        self.assertEquals(len(filtered_todos), 1)
        self.assertEquals(filtered_todos[0].source(), '(C) This is part of some +Project')
コード例 #23
0
    def test_filter8(self):
        """ Test case sensitive match (forced, with lowercase). """
        todos = load_file('test/data/FilterTest1.txt')
        grep = Filter.GrepFilter('+Project', False)

        filtered_todos = grep.filter(todos)
        reference = load_file('test/data/FilterTest1a-result.txt')

        self.assertEquals(todolist_to_string(filtered_todos), \
            todolist_to_string(reference))
コード例 #24
0
    def test_filter7(self):
        """ Tests the dependency filter. """
        todolist = load_file_to_todolist('test/data/FilterTest2.txt')
        depfilter = Filter.DependencyFilter(todolist)

        filtered_todos = depfilter.filter(todolist.todos())
        reference = load_file('test/data/FilterTest2-result.txt')

        self.assertEquals(todolist_to_string(filtered_todos), \
            todolist_to_string(reference))
コード例 #25
0
    def test_filter4(self):
        """ Test case insensitive match. """
        todos = load_file('test/data/FilterTest1.txt')
        grep = Filter.GrepFilter('+project')

        filtered_todos = grep.filter(todos)
        reference = load_file('test/data/FilterTest1a-result.txt')

        self.assertEquals(todolist_to_string(filtered_todos), \
            todolist_to_string(reference))
コード例 #26
0
    def test_view(self):
        """ Check filters and printer for views. """
        todofile = TodoFile('test/data/FilterTest1.txt')
        ref = load_file('test/data/ViewTest1-result.txt')

        todolist = TodoList(todofile.read())
        sorter = Sorter('text')
        todofilter = Filter.GrepFilter('+Project')
        view = todolist.view(sorter, [todofilter])

        self.assertEqual(print_view(view), todolist_to_string(ref))
コード例 #27
0
ファイル: test_filter.py プロジェクト: wzel/topydo
    def test_filter8(self):
        """
        OrdinalTagFilter should resort to a simple GrepFilter when a tag
        appears more than once.
        """
        otf = Filter.OrdinalTagFilter('key:value2')

        result = otf.filter(self.todos)

        self.assertEqual(len(result), 1)
        self.assertEqual(result[0].source(), self.todo5)
コード例 #28
0
ファイル: ExpressionCommand.py プロジェクト: bram85/topydo
    def _filters(self):
        filters = []

        if not self.show_all:
            filters.append(Filter.DependencyFilter(self.todolist))
            filters.append(Filter.RelevanceFilter())

        args = self.args[:-1] if self.last_argument else self.args
        filters += Filter.get_filter_list(args)

        if not self.show_all:
            filters.append(Filter.LimitFilter(self.limit))

        return filters
コード例 #29
0
        def todo_by_regexp(p_identifier):
            """
            Returns the todo that is (uniquely) identified by the given regexp.
            If the regexp matches more than one item, no result is returned.
            """
            result = None

            candidates = Filter.GrepFilter(p_identifier).filter(self._todos)

            if len(candidates) == 1:
                result = candidates[0]
            else:
                raise InvalidTodoException

            return result
コード例 #30
0
    def test_filter19(self):
        todos = load_file('test/data/FilterTest1.txt')
        grep = Filter.GrepFilter(1)
        filtered_todos = grep.filter(todos)

        self.assertEquals(filtered_todos, [])
コード例 #31
0
    def test_filter3(self):
        todo = Todo("(C) Relevant")
        relevance = Filter.RelevanceFilter()
        result = relevance.filter([todo])

        self.assertEquals(result, [todo])