コード例 #1
0
	def model_from_data(self, notebook, page, attrib, data):
		tree = WikiParser().parse(data)
		element = tree._etree.getroot().find('table') # XXX - should use token interface instead
		if element is not None:
			return self.model_from_element(element.attrib, element)
		else:
			return TableModel(attrib, [data.strip()], [''])
コード例 #2
0
    def runTest(self):
        def basename(name):
            if ":" in name:
                return name.split(":")[-1]
            else:
                return name

        db = sqlite3.connect(':memory:')
        db.row_factory = sqlite3.Row
        pi = PagesIndexer(db, None, tests.MockObject())
        for i, name, cont in self.PAGES:
            db.execute(
                'INSERT INTO pages(id, name, lowerbasename, sortkey, parent, source_file) VALUES (?, ?, ?, ?, 1, 1)',
                (i, name, basename(name).lower(), natural_sort_key(name)))

        ## Test PagesViewInternal methods
        iview = PagesViewInternal(db)
        i, pn = iview.resolve_pagename(Path(''), ['foo'])
        self.assertEqual((i, pn), (3, Path('Foo')))

        i, pn = iview.resolve_link(Path('Foo'), HRef.new_from_wiki_link('Bar'))
        self.assertEqual((i, pn), (2, Path('Bar')))

        ## Test the actual indexer
        pageindexer = tests.MaskedObject(pi, 'connect')
        indexer = LinksIndexer(db, pageindexer)

        for i, name, cont in self.PAGES:
            row = {
                'id': i,
                'name': name,
                'sortkey': natural_sort_key(name),
                'is_link_placeholder': False
            }
            indexer.on_page_row_inserted(pageindexer, row)

        ###
        pageindexer.setObjectAccess('insert_link_placeholder')
        for i, name, text in self.PAGES:
            tree = WikiParser().parse(text)
            row = {'id': i, 'name': name}
            indexer.on_page_changed(pageindexer, row, tree)

        indexer.update()

        links = sorted((r['source'], r['target'])
                       for r in db.execute('SELECT * FROM links'))
        self.assertEqual(links, [(3, 2), (3, 4)])

        ###
        pageindexer.setObjectAccess('remove_page')
        for i, name, cont in self.PAGES:
            row = {'id': i, 'name': name, 'is_link_placeholder': False}
            indexer.on_page_row_deleted(pageindexer, row)

        indexer.update()

        rows = db.execute('SELECT * FROM links').fetchall()
        self.assertEqual(rows, [])
コード例 #3
0
	def testModelFromElement(self):
		tree = WikiParser().parse(TABLE_WIKI_TEXT)
		element = tree._etree.getroot().find('table')
		self.assertIsNotNone(element)
		model = self.otype.model_from_element(element.attrib, element)

		builder = OldParseTreeBuilder() # XXX
		builder.start('zim-tree')
		self.otype.dump(builder, model)
		builder.end('zim-tree')
		tree = ParseTree(builder.close())

		#self.assertEquals(list(tree.iter_tokens()), TABLE_TOKENS) -- XXX should work but doesn;t :(
		self.assertEquals(''.join(WikiDumper().dump(tree)), TABLE_WIKI_TEXT[1:-1])
コード例 #4
0
ファイル: tasklist.py プロジェクト: thorhans/zimt
    def testLabelledCheckboxes(self):
        mydate = '%04i-%02i-%02i' % parse_date('11/12')

        wanted = [
            (t('TODO: test heading with label'), []),
            (t('A'), []),
            (t('B'), []),
            (t('C'), []),
            (t('FIXME: dus'), []),

            # this time does not inherit due-date from non-task:
            (t('TODO: BAR !!!', prio=3), []),
            (t('Some more tasks !!!', prio=3, tags='home'), [
                (t('Foo !', prio=1, tags='home'), []),
                (t('Bar', prio=3, tags='home'), []),
            ]),
            (t('TODO: dus'), []),
            (t('FIXME: jaja - TODO !! @FIXME', prio=2, tags='FIXME'), []),
            (t('TODO: dus - list item'), []),
            (t('FIXME: jaja - TODO !! @FIXME - list item',
               prio=2,
               tags='FIXME'), []),
            (t('A', tags='someday'), []),
            (t('B', tags='someday'), [
                (t('B-1', tags='someday'), []),
            ]),
            (t('C', tags='someday'), []),
            (t('main task', tags='home'), [
                (t('do this', open=False, tags='home'), []),
                (t('Next: do that', tags='home'), []),
                (t('Next: do something else', tags='home'), []),
            ]),
        ]

        tree = WikiParser().parse(WIKI_TEXT)
        tb = TokenBuilder()
        tree.visit(tb)
        tokens = tb.tokens
        testTokenStream(tokens)

        parser = TaskParser(all_checkboxes=False)
        with tests.LoggingFilter('zim.plugins.tasklist',
                                 'Invalid date format'):
            tasks = parser.parse(tokens)

        #~ import pprint; pprint.pprint(tasks)
        self.assertEqual(tasks, wanted)
コード例 #5
0
    def testLatexExport(self):
        from zim.formats.wiki import Parser as WikiParser
        from zim.formats.latex import Dumper as LatexDumper

        folder = self.setUpFolder()
        folder.file('equation001.tex').write('a + b')
        # equation002.tex does not exist - check fallback to image

        wiki = '{{./equation001.png?type=equation}}\n{{./equation002.png?type=equation}}\n'
        wanted = '\\begin{math}\na + b\n\\end{math}\n\n\\includegraphics[]{./equation002.png}\n\n'

        linker = tests.MockObject()
        linker.resolve_source_file = lambda name: folder.file(name)
        linker.img = lambda name: name

        tree = WikiParser().parse(wiki)
        latex = LatexDumper(linker).dump(tree)

        self.assertEqual(latex, wanted.splitlines(True))
コード例 #6
0
	def runTest(self):
		notebook = self.setUpNotebook()

		page = notebook.get_page(Path('Page1'))
		tree = WikiParser().parse('test 123\n')

		signals = tests.SignalLogger(notebook)

		op = notebook.store_page_async(page, tree)
		thread = op._thread
		while thread.is_alive():
			tests.gtk_process_events()

		tests.gtk_process_events()
		self.assertFalse(op.error_event.is_set())

		text = page.dump('wiki')
		self.assertEqual(text[-1], 'test 123\n')
		self.assertEqual(signals['stored-page'], [(page,)]) # post handler happened as well
コード例 #7
0
ファイル: tasklist.py プロジェクト: thorhans/zimt
    def testDate(self):
        text = '''\
[ ] Task <2018-12
[ ] Task >2018-12
'''
        wanted = [(t('Task <2018-12', due='2018-12-31'), []),
                  (t('Task >2018-12', start='2018-12-01'), [])]

        tree = WikiParser().parse(text)
        tb = TokenBuilder()
        tree.visit(tb)
        tokens = tb.tokens
        testTokenStream(tokens)

        parser = TaskParser()
        tasks = parser.parse(tokens)

        #import pprint; pprint.pprint(tasks)
        self.assertEqual(tasks, wanted)
コード例 #8
0
    def runTest(self):
        db = sqlite3.connect(':memory:')
        db.row_factory = sqlite3.Row

        indexer = TagsIndexer(db, tests.MockObject(), tests.MockObject())
        for i, name, text in self.PAGES:
            tree = WikiParser().parse(text)
            row = {'id': i, 'name': name}
            indexer.on_page_changed(None, row, tree)
        indexer.on_finish_update(None)

        self.assertTags(db, [('tag1', 1), ('tag2', 2), ('tag3', 3)], [(1, 2),
                                                                      (2, 2),
                                                                      (2, 3),
                                                                      (3, 3)])

        for i, name, content in self.PAGES:
            row = {'id': i, 'name': name}
            indexer.on_page_row_deleted(None, row)
        indexer.on_finish_update(None)

        self.assertTags(db, [], [])
コード例 #9
0
ファイル: tasklist.py プロジェクト: rayleyva/zim-desktop-wiki
    def testLabelledCheckboxes(self):
        from zim.plugins.tasklist.indexer import TaskParser

        from zim.parsing import parse_date
        NO_DATE = '9999'

        def t(desc, open=True, start=0, due=NO_DATE, prio=0, tags=''):
            # Generate a task tuple
            # 0:open, 1:prio, 2:start, 3:due, 4:tags, 5:desc
            if tags:
                tags = set(str(tags).split(','))
            else:
                tags = set()
            return [open, prio, start, due, tags, str(desc)]

        mydate = '%04i-%02i-%02i' % parse_date('11/12')

        wanted = [
            (t('TODO: test heading with label'), []),
            (t('A'), []),
            (t('B'), []),
            (t('C'), []),
            (t('FIXME: dus'), []),

            # this time does not inherit due-date from non-task:
            (t('TODO: BAR !!!', prio=3), []),
            (t('Some more tasks !!!', prio=3, tags='home'), [
                (t('Foo !', prio=1, tags='home'), []),
                (t('Bar', prio=3, tags='home'), []),
            ]),
            (t('TODO: dus'), []),
            (t('FIXME: jaja - TODO !! @FIXME', prio=2, tags='FIXME'), []),
            (t('TODO: dus - list item'), []),
            (t('FIXME: jaja - TODO !! @FIXME - list item',
               prio=2,
               tags='FIXME'), []),
            (t('A', tags='someday'), []),
            (t('B', tags='someday'), [
                (t('B-1', tags='someday'), []),
            ]),
            (t('C', tags='someday'), []),
            (t('main task', tags='home'), [
                (t('do this', open=False, tags='home'), []),
                (t('Next: do that', tags='home'), []),
                (t('Next: do something else', tags='home'), []),
            ]),
        ]

        tree = WikiParser().parse(WIKI_TEXT)
        tb = TokenBuilder()
        tree.visit(tb)
        tokens = tb.tokens
        testTokenStream(tokens)

        parser = TaskParser(all_checkboxes=False)
        with tests.LoggingFilter('zim.plugins.tasklist',
                                 'Invalid date format'):
            tasks = parser.parse(tokens)

        #~ import pprint; pprint.pprint(tasks)
        self.assertEqual(tasks, wanted)
コード例 #10
0
ファイル: tasklist.py プロジェクト: rayleyva/zim-desktop-wiki
    def testAllCheckboxes(self):
        from zim.plugins.tasklist.indexer import TaskParser

        from zim.parsing import parse_date
        NO_DATE = '9999'

        def t(desc, open=True, start=0, due=NO_DATE, prio=0, tags=''):
            # Generate a task tuple
            # 0:open, 1:prio, 2:start, 3:due, 4:tags, 5:desc
            if tags:
                tags = set(str(tags).split(','))
            else:
                tags = set()
            return [open, prio, start, due, tags, str(desc)]

        mydate = '%04i-%02i-%02i' % parse_date('11/12')

        wanted = [
            (t('TODO: test heading with label'), []),
            (t('A'), []),
            (t('B'), []),
            (t('C'), []),
            (t('D'), []),
            (t('E'), []),
            (t('FIXME: dus'), []),
            (t('Simple'), []),
            (t('List'), []),
            (t('List with'), [
                (t('Nested items'), []),
                (t('Some are done', open=False), []),
                (t('Done but with open child', open=True), [
                    (t('Others not', open=False), []),
                    (t('FOOOOO'), []),
                ]),
            ]),
            (t('Bar'), []),
            (t('And then there are @tags', tags='tags'), []),
            (t('Next: And due dates'), []),
            (t('Date [d: 11/12]', due=mydate), []),
            (
                t('Date [d: 11/12/2012]', due='2012-12-11'),
                [
                    (t('TODO: BAR !!!', prio=3, due='2012-12-11'), []),
                    # due date is inherited
                ]),
            (t('Date <2012-03-27 >2012-03-01',
               due='2012-03-27',
               start='2012-03-01'), []),
            (t('Date < wk1213.3', due='2012-03-28'), []),
            (t('Date < wk1213.3! with punctuation', due='2012-03-28',
               prio=1), []),
            (t('Not a date < wk1213.8'), []),
            (t('Not a date < wk1213foooooo'), []),

            # this list inherits the @home tag - and inherits prio
            (t('Some more tasks !!!', prio=3, tags='home'), [
                (t('Foo !', prio=1, tags='home'), []),
                (t('Bar', prio=3, tags='home'), []),
            ]),
            (t('TODO: dus'), []),
            (t('FIXME: jaja - TODO !! @FIXME', prio=2, tags='FIXME'), []),
            (t('TODO: dus - list item'), []),
            (t('FIXME: jaja - TODO !! @FIXME - list item',
               prio=2,
               tags='FIXME'), []),
            (t('Sub item bullets'), []),
            (t('Sub item numbered'), []),
            (t('Main @tag1 @tag2 !', prio=1, tags='tag1,tag2'), [
                (t('Sub1', prio=1, open=False, tags='tag1,tag2'), []),
                (t('Sub2 @tag3 !!!!', prio=4, tags='tag1,tag2,tag3'), [
                    (t('Sub2-1', prio=4, open=False,
                       tags='tag1,tag2,tag3'), []),
                    (t('Sub2-2 @tag4',
                       prio=4,
                       open=False,
                       tags='tag1,tag2,tag3,tag4'), []),
                    (t('Sub2-3', prio=4, tags='tag1,tag2,tag3'), []),
                ]),
                (t('Sub3', prio=1, tags='tag1,tag2'), []),
            ]),
            (t('A', tags='someday'), []),
            (t('B', tags='someday'), [
                (t('B-1', tags='someday'), []),
            ]),
            (t('C', tags='someday'), []),
            (t('main task', tags='home'), [
                (t('do this', open=False, tags='home'), []),
                (t('Next: do that', tags='home'), []),
                (t('Next: do something else', tags='home'), []),
            ]),
            (t('Closed parent task', open=True), [
                (t('With open child'), []),
                (t('Must be open as well to show up in list'), []),
            ]),
            (t('Closed parent task', open=False), [
                (t('With closed children', open=False), []),
                (t('Should not', open=False), []),
            ]),
        ]

        tree = WikiParser().parse(WIKI_TEXT)
        tb = TokenBuilder()
        tree.visit(tb)
        tokens = tb.tokens
        testTokenStream(tokens)

        parser = TaskParser()
        with tests.LoggingFilter('zim.plugins.tasklist',
                                 'Invalid date format'):
            tasks = parser.parse(tokens)

        #~ import pprint; pprint.pprint(tasks)
        self.assertEqual(tasks, wanted)
コード例 #11
0
ファイル: tableeditor.py プロジェクト: thorhans/zimt
 def parseAndDump(self, text):
     tree = WikiParser().parse(text)
     self.assertEquals(list(tree.iter_tokens()), TABLE_TOKENS)