Exemple #1
0
    def ShowDialog(self, selectedText, template, template_path):
        self._recentSnippetPath = template_path
        dirname = os.path.dirname(template_path)
        self._selectedText = selectedText
        self._parser = SnippetParser(template, dirname, self._application)
        variables_list = self._parser.getVariables()

        # Get non builtin variables
        variables = sorted([var for var
                            in variables_list
                            if not var.startswith('__')])

        self.dialog.hideVarPanel()
        self.dialog.setSnippetText(template)
        [*map(lambda var: self.dialog.addStringVariable(var), variables)]

        shortTemplateName = self._getShortTemplateName(template_path)
        self.dialog.templateFileName = shortTemplateName
        self.dialog.wikiCommandChecked = False

        # Show dialog if user must enter variable's values
        self._updateResult()
        if (self._application.selectedPage is not None and
                self._application.selectedPage.getTypeString() == u'wiki'):
            self.dialog.setWikiCommandSetVisible(True)
        else:
            self.dialog.setWikiCommandSetVisible(False)

        self.dialog.setFocusToFirstVariable()
        self.dialog.Show()
    def test_unicode_02(self):
        from snippets.snippetparser import SnippetParser
        template = 'Переменная = {{переменная}}'
        right_result = 'Переменная = '
        selectedText = ''
        page = self.testPage
        vars = {}

        parser = SnippetParser(template, '.', self.application)
        result = parser.process(selectedText, page, **vars)
        self.assertEqual(result, right_result)
    def test_unicode_01(self):
        from snippets.snippetparser import SnippetParser

        page = self.testPage
        template = 'Переменная = {{переменная}}'
        selectedText = ''
        vars = {'переменная': 'Проверка 123'}
        right_result = 'Переменная = Проверка 123'

        parser = SnippetParser(template, '.', self.application)
        result = parser.process(selectedText, page, **vars)
        self.assertEqual(result, right_result)
Exemple #4
0
    def test_global_var_01(self):
        from snippets.snippetparser import SnippetParser
        page = self.testPage
        template = u'{{__title}}'
        selectedText = u''
        vars = {}

        right_result = page.title

        parser = SnippetParser(template, self._application)
        result = parser.process(selectedText, page, **vars)

        self.assertEqual(result, right_result)
    def test_global_var_pageid(self):
        from snippets.snippetparser import SnippetParser
        page = self.testPage
        template = '{{__pageid}}'
        selectedText = ''
        vars = {}

        right_result = self.application.pageUidDepot.createUid(page)

        parser = SnippetParser(template, '.', self.application)
        result = parser.process(selectedText, page, **vars)

        self.assertEqual(result, right_result)
    def test_global_var_type(self):
        from snippets.snippetparser import SnippetParser
        page = self.testPage
        template = '{{__type}}'
        selectedText = ''
        vars = {}

        right_result = 'wiki'

        parser = SnippetParser(template, '.', self.application)
        result = parser.process(selectedText, page, **vars)

        self.assertEqual(result, right_result)
Exemple #7
0
    def test_global_var_06(self):
        from snippets.snippetparser import SnippetParser
        page = self.testPage
        template = u'{{__pageid}}'
        selectedText = u''
        vars = {}

        right_result = self._application.pageUidDepot.createUid(page)

        parser = SnippetParser(template, self._application)
        result = parser.process(selectedText, page, **vars)

        self.assertEqual(result, right_result)
Exemple #8
0
    def test_global_var_folder(self):
        from snippets.snippetparser import SnippetParser
        page = self.testPage
        template = u'{{__folder}}'
        selectedText = u''
        vars = {}

        right_result = page.path

        parser = SnippetParser(template, u'.', self._application)
        result = parser.process(selectedText, page, **vars)

        self.assertEqual(result, right_result)
    def test_global_var_tags_02(self):
        from snippets.snippetparser import SnippetParser
        page = self.testPage
        page.tags = ['проверка', 'test', 'тест']
        template = '{% for tag in __tags %}{{tag}}---{% endfor %}'
        selectedText = ''
        vars = {}

        right_result = 'test---проверка---тест---'

        parser = SnippetParser(template, '.', self.application)
        result = parser.process(selectedText, page, **vars)

        self.assertEqual(result, right_result)
Exemple #10
0
    def test_global_var_tags_03_empty(self):
        from snippets.snippetparser import SnippetParser
        page = self.testPage
        page.tags = []
        template = u'{{__tags}}'
        selectedText = u''
        vars = {}

        right_result = u''

        parser = SnippetParser(template, u'.', self._application)
        result = parser.process(selectedText, page, **vars)

        self.assertEqual(result, right_result)
Exemple #11
0
    def test_global_var_tags_02(self):
        from snippets.snippetparser import SnippetParser
        page = self.testPage
        page.tags = [u'проверка', u'test', u'тест']
        template = u'{% for tag in __tags %}{{tag}}---{% endfor %}'
        selectedText = u''
        vars = {}

        right_result = u'test---проверка---тест---'

        parser = SnippetParser(template, u'.', self._application)
        result = parser.process(selectedText, page, **vars)

        self.assertEqual(result, right_result)
Exemple #12
0
    def test_global_var_tags_01(self):
        from snippets.snippetparser import SnippetParser
        page = self.testPage
        page.tags = ['проверка', 'test', 'тест']
        template = '{{__tags}}'
        selectedText = ''
        vars = {}

        right_result = 'test, проверка, тест'

        parser = SnippetParser(template, '.', self.application)
        result = parser.process(selectedText, page, **vars)

        self.assertEqual(result, right_result)
Exemple #13
0
    def test_global_var_04(self):
        from snippets.snippetparser import SnippetParser
        page = self.testPage
        template = u'{{__attach}}'
        selectedText = u''
        vars = {}

        right_result = Attachment(page).getAttachPath(False)

        parser = SnippetParser(template, self._application)
        result = parser.process(selectedText, page, **vars)

        self.assertEqual(result, right_result)
        self.assertTrue(os.path.exists(right_result))
Exemple #14
0
    def test_global_var_attach(self):
        from snippets.snippetparser import SnippetParser
        page = self.testPage
        template = '{{__attach}}'
        selectedText = ''
        vars = {}

        right_result = Attachment(page).getAttachPath(False)

        parser = SnippetParser(template, '.', self.application)
        result = parser.process(selectedText, page, **vars)

        self.assertEqual(result, right_result)
        self.assertTrue(os.path.exists(right_result))
Exemple #15
0
 def _parseSnippet(self,
                   snippet_text,
                   current_dir,
                   params_dict,
                   selected_text=u''):
     snippet_parser = SnippetParser(snippet_text, current_dir,
                                    self._application)
     try:
         result = snippet_parser.process(selected_text, self.parser.page,
                                         **params_dict)
     except SnippetException as e:
         text = _(u'Snippet error: \n') + e.message
         return self._format_error(text)
     return self.parser.parseWikiMarkup(result)
Exemple #16
0
    def test_global_var_tags_03_empty(self):
        from snippets.snippetparser import SnippetParser
        page = self.testPage
        page.tags = []
        template = u'{{__tags}}'
        selectedText = u''
        vars = {}

        right_result = u''

        parser = SnippetParser(template, u'.', self._application)
        result = parser.process(selectedText, page, **vars)

        self.assertEqual(result, right_result)
Exemple #17
0
    def test_global_var_crdate(self):
        from snippets.snippetparser import SnippetParser
        date = datetime(2016, 12, 9, 14, 0)
        page = self.testPage
        page.creationdatetime = date
        template = u'{{__crdate}}'
        selectedText = u''
        vars = {}

        right_result = unicode(date)

        parser = SnippetParser(template, u'.', self._application)
        result = parser.process(selectedText, page, **vars)

        self.assertEqual(result, right_result)
Exemple #18
0
    def test_global_var_crdate(self):
        from snippets.snippetparser import SnippetParser
        date = datetime(2016, 12, 9, 14, 0)
        page = self.testPage
        page.creationdatetime = date
        template = '{{__crdate}}'
        selectedText = ''
        vars = {}

        right_result = str(date)

        parser = SnippetParser(template, '.', self.application)
        result = parser.process(selectedText, page, **vars)

        self.assertEqual(result, right_result)
Exemple #19
0
    def test_global_var_eddate(self):
        from snippets.snippetparser import SnippetParser
        date = datetime(2016, 12, 9, 14, 23)
        page = self.testPage
        page.datetime = date
        template = u'{{__eddate}}'
        selectedText = u''
        vars = {}

        right_result = unicode(date)

        parser = SnippetParser(template, u'.', self._application)
        result = parser.process(selectedText, page, **vars)

        self.assertEqual(result, right_result)
Exemple #20
0
    def test_vars_01(self):
        from snippets.snippetparser import SnippetParser
        template = u'{{varname}}'
        selectedText = u''
        vars = {u'varname': u'Проверка 123'}

        right_result = u'Проверка 123'
        right_variables = {u'varname'}

        page = self.testPage
        parser = SnippetParser(template, self._application)
        result = parser.process(selectedText, page, **vars)
        variables = parser.getVariables()

        self.assertEqual(result, right_result)
        self.assertEqual(variables, right_variables)
Exemple #21
0
    def test_empty(self):
        from snippets.snippetparser import SnippetParser
        template = u''
        selectedText = u''
        vars = {}

        right_result = u''
        right_variables = set()

        page = self.testPage
        parser = SnippetParser(template, self._application)
        result = parser.process(selectedText, page, **vars)
        variables = parser.getVariables()

        self.assertEqual(result, right_result)
        self.assertEqual(variables, right_variables)
Exemple #22
0
    def ShowDialog(self, selectedText, template):
        if self._application.selectedPage is None:
            return

        if self._dialog is None:
            self._dialog = VariablesDialog(self._application.mainWindow,
                                           self._application)
            self._dialog.ok_button.Bind(wx.EVT_BUTTON, handler=self._onOk)
            self._dialog.Bind(EVT_VAR_CHANGE, handler=self._onVarChange)

        self._selectedText = selectedText
        self._parser = SnippetParser(template, self._application)

        # Get non builtin variables
        variables = sorted([var for var
                            in self._parser.getVariables()
                            if not var.startswith('__')])

        self._dialog.setSnippetText(template)
        map(lambda var: self._dialog.addStringVariable(var), variables)

        # Show dialog if user must enter variable's values
        if variables:
            self._updateResult()
            self._dialog.Show()
        else:
            self._finishDialog()
Exemple #23
0
    def test_error_02(self):
        from snippets.snippetparser import SnippetParser, SnippetException
        template = u'Переменная = {{переменная}}'

        parser = SnippetParser(template, u'.', self._application)

        self.assertRaises(SnippetException, parser.getVariables)
Exemple #24
0
    def test_vars_01(self):
        from snippets.snippetparser import SnippetParser
        template = '{{varname}}'
        selectedText = ''
        vars = {'varname': 'Проверка 123'}

        right_result = 'Проверка 123'
        right_variables = {'varname'}

        page = self.testPage
        parser = SnippetParser(template, '.', self.application)
        result = parser.process(selectedText, page, **vars)
        variables = parser.getVariables()

        self.assertEqual(result, right_result)
        self.assertEqual(variables, right_variables)
Exemple #25
0
    def test_empty(self):
        from snippets.snippetparser import SnippetParser
        template = ''
        selectedText = ''
        vars = {}

        right_result = ''
        right_variables = set()

        page = self.testPage
        parser = SnippetParser(template, '.', self.application)
        result = parser.process(selectedText, page, **vars)
        variables = parser.getVariables()

        self.assertEqual(result, right_result)
        self.assertEqual(variables, right_variables)
Exemple #26
0
 def _parseSnippet(self,
                   snippet_text,
                   current_dir,
                   params_dict,
                   selected_text=u''):
     snippet_parser = SnippetParser(snippet_text,
                                    current_dir,
                                    self._application)
     try:
         result = snippet_parser.process(selected_text,
                                         self.parser.page,
                                         **params_dict)
     except SnippetException as e:
         text = _(u'Snippet error: \n') + str(e)
         return self._format_error(text)
     return self.parser.parseWikiMarkup(result)
Exemple #27
0
    def test_global_var_childlist_01(self):
        from snippets.snippetparser import SnippetParser
        page = self.testPage
        WikiPageFactory().create(page, "Страница 1", [])
        WikiPageFactory().create(page, "Страница 2", [])
        WikiPageFactory().create(page, "Страница 3", [])

        template = '{{__childlist}}'
        selectedText = ''
        vars = {}

        right_result = 'Страница 1, Страница 2, Страница 3'

        parser = SnippetParser(template, '.', self.application)
        result = parser.process(selectedText, page, **vars)

        self.assertEqual(result, right_result)
Exemple #28
0
    def test_global_var_childlist_01(self):
        from snippets.snippetparser import SnippetParser
        page = self.testPage
        WikiPageFactory().create(page, u"Страница 1", [])
        WikiPageFactory().create(page, u"Страница 2", [])
        WikiPageFactory().create(page, u"Страница 3", [])

        template = u'{{__childlist}}'
        selectedText = u''
        vars = {}

        right_result = u'Страница 1, Страница 2, Страница 3'

        parser = SnippetParser(template, u'.', self._application)
        result = parser.process(selectedText, page, **vars)

        self.assertEqual(result, right_result)
Exemple #29
0
    def test_include_01(self):
        from snippets.snippetparser import SnippetParser
        template = '{{varname}} {% include "included" %}'
        selectedText = ''
        vars = {
            'varname': 'Проверка 123',
            'var_inc': 'Абырвалг',
        }

        right_result = 'Проверка 123 Включенный шаблон Абырвалг'
        right_variables = {'varname', 'var_inc'}

        page = self.testPage
        parser = SnippetParser(template, 'testdata/snippets', self.application)
        result = parser.process(selectedText, page, **vars)
        variables = parser.getVariables()

        self.assertEqual(result, right_result)
        self.assertEqual(variables, right_variables)
Exemple #30
0
    def test_vars_02(self):
        from snippets.snippetparser import SnippetParser
        template = u'{{varname}}'
        selectedText = u''
        vars = {
            u'varname': u'Проверка 123',
            u'varname_2': u'Абырвалг',
        }

        right_result = u'Проверка 123'
        right_variables = {u'varname'}

        page = self.testPage
        parser = SnippetParser(template, u'.', self._application)
        result = parser.process(selectedText, page, **vars)
        variables = parser.getVariables()

        self.assertEqual(result, right_result)
        self.assertEqual(variables, right_variables)
Exemple #31
0
    def _onSnippetEditIdle(self, event):
        if not self._snippetChanged:
            return

        path = self._getSelectedItemData().path
        if os.path.isdir(path):
            return

        snippet_text = self._dialog.currentSnippet
        parser = SnippetParser(snippet_text, os.path.dirname(path),
                               self._application)
        try:
            parser.getVariables()
        except SnippetException as e:
            self._dialog.setError(e.message)
        else:
            self._dialog.setError(_(u'No snippet errors'))

        self._snippetChanged = False
Exemple #32
0
    def test_error_01(self):
        from snippets.snippetparser import SnippetParser, SnippetException
        template = u'Переменная = {{переменная}}'
        selectedText = u''
        vars = {u'переменная': u'Проверка 123'}

        page = self.testPage
        parser = SnippetParser(template, u'.', self._application)

        self.assertRaises(SnippetException, parser.process, selectedText, page,
                          **vars)
Exemple #33
0
    def _onSnippetEditIdle(self, event):
        if not self._snippetChanged:
            return

        path = self._getSelectedItemData().path
        if os.path.isdir(path):
            return

        snippet_text = self._dialog.currentSnippet
        parser = SnippetParser(snippet_text,
                               os.path.dirname(path),
                               self._application)
        try:
            parser.getVariables()
        except SnippetException as e:
            self._dialog.setError(e.message)
        else:
            self._dialog.setError(_(u'No snippet errors'))

        self._snippetChanged = False
Exemple #34
0
    def test_global_var_attachilist(self):
        from snippets.snippetparser import SnippetParser
        fnames = ['ccc.png', 'aaa.tmp', 'zzz.doc']
        page = self.testPage
        attachdir = Attachment(page).getAttachPath(True)
        for fname in fnames:
            fullpath = os.path.join(attachdir, fname)
            with open(fullpath, 'w'):
                pass

        page = self.testPage
        template = '{{__attachlist}}'
        selectedText = ''
        vars = {}

        right_result = 'aaa.tmp, ccc.png, zzz.doc'

        parser = SnippetParser(template, '.', self.application)
        result = parser.process(selectedText, page, **vars)

        self.assertEqual(result, right_result)
Exemple #35
0
    def test_include_01(self):
        from snippets.snippetparser import SnippetParser
        template = u'{{varname}} {% include "included" %}'
        selectedText = u''
        vars = {
            u'varname': u'Проверка 123',
            u'var_inc': u'Абырвалг',
        }

        right_result = u'Проверка 123 Включенный шаблон Абырвалг'
        right_variables = {u'varname', u'var_inc'}

        page = self.testPage
        parser = SnippetParser(template,
                               u'../test/snippets',
                               self._application)
        result = parser.process(selectedText, page, **vars)
        variables = parser.getVariables()

        self.assertEqual(result, right_result)
        self.assertEqual(variables, right_variables)
Exemple #36
0
    def test_global_var_attachilist(self):
        from snippets.snippetparser import SnippetParser
        fnames = [u'ccc.png', u'aaa.tmp', u'zzz.doc']
        page = self.testPage
        attachdir = Attachment(page).getAttachPath(True)
        for fname in fnames:
            fullpath = os.path.join(attachdir, fname)
            with open(fullpath, 'w'):
                pass

        page = self.testPage
        template = u'{{__attachlist}}'
        selectedText = u''
        vars = {}

        right_result = u'aaa.tmp, ccc.png, zzz.doc'

        parser = SnippetParser(template, u'.', self._application)
        result = parser.process(selectedText, page, **vars)

        self.assertEqual(result, right_result)
Exemple #37
0
    def test_global_var_childlist_02(self):
        from snippets.snippetparser import SnippetParser
        page = self.testPage
        subpage1 = WikiPageFactory().create(page, u"Страница 1", [])
        subpage2 = WikiPageFactory().create(page, u"Страница 2", [])
        subpage3 = WikiPageFactory().create(page, u"Страница 3", [])

        subpage2.order = 1
        subpage3.order = 4
        subpage1.order = 10

        template = u'{{__childlist}}'
        selectedText = u''
        vars = {}

        right_result = u'Страница 2, Страница 3, Страница 1'

        parser = SnippetParser(template, u'.', self._application)
        result = parser.process(selectedText, page, **vars)

        self.assertEqual(result, right_result)
Exemple #38
0
class VariablesDialogController(object):
    '''
    Controller to manage VariablesDialog.
    '''
    def __init__(self, application):
        self._application = application

        self.onFinishDialog = Event()
        self._dialog = None
        self._parser = None
        self._selectedText = u''

    def ShowDialog(self, selectedText, template):
        if self._application.selectedPage is None:
            return

        if self._dialog is None:
            self._dialog = VariablesDialog(self._application.mainWindow,
                                           self._application)
            self._dialog.ok_button.Bind(wx.EVT_BUTTON, handler=self._onOk)
            self._dialog.Bind(EVT_VAR_CHANGE, handler=self._onVarChange)

        self._selectedText = selectedText
        self._parser = SnippetParser(template, self._application)

        # Get non builtin variables
        variables = sorted([var for var
                            in self._parser.getVariables()
                            if not var.startswith('__')])

        self._dialog.setSnippetText(template)
        map(lambda var: self._dialog.addStringVariable(var), variables)

        # Show dialog if user must enter variable's values
        if variables:
            self._updateResult()
            self._dialog.Show()
        else:
            self._finishDialog()

    def destroy(self):
        self.onFinishDialog.clear()
        if self._dialog is not None:
            self._dialog.ok_button.Unbind(wx.EVT_BUTTON, handler=self._onOk)
            self._dialog.Unbind(EVT_VAR_CHANGE, handle=self._onVarChange)
            self._dialog.Close()
            self._dialog = None

    def _finishDialog(self):
        if self._application.selectedPage is not None:
            text = self._dialog.getResult()
            self.onFinishDialog(FinishDialogParams(text))
        self._dialog.Close()
        self._dialog = None

    def _onOk(self, event):
        self._finishDialog()

    def _onVarChange(self, event):
        self._updateResult()

    def _updateResult(self):
        variables = self._dialog.getVarDict()
        text = self._parser.process(self._selectedText,
                                    self._application.selectedPage,
                                    **variables)
        self._dialog.setResult(text)
Exemple #39
0
class VariablesDialogController(object):
    '''
    Controller to manage VariablesDialog.
    '''
    def __init__(self, application):
        self._application = application

        self.onFinishDialogEvent = Event()
        self._parser = None
        self._selectedText = u''
        self._config = SnippetsConfig(self._application.config)
        self._recentSnippetPath = None

        self._dialog = VariablesDialog(self._application.mainWindow)
        self._dialog.ok_button.Bind(wx.EVT_BUTTON, handler=self._onOk)
        self._dialog.Bind(EVT_VAR_CHANGE, handler=self._onVarChange)
        self._dialog.SetClientSize((self._config.variablesDialogWidth,
                                    self._config.variablesDialogHeight))

    @property
    def dialog(self):
        return self._dialog

    def ShowDialog(self, selectedText, template, template_path):
        self._recentSnippetPath = template_path
        dirname = os.path.dirname(template_path)
        self._selectedText = selectedText
        self._parser = SnippetParser(template, dirname, self._application)
        variables_list = self._parser.getVariables()

        # Get non builtin variables
        variables = sorted([var for var
                            in variables_list
                            if not var.startswith('__')])

        self.dialog.hideVarPanel()
        self.dialog.setSnippetText(template)
        [*map(lambda var: self.dialog.addStringVariable(var), variables)]

        shortTemplateName = self._getShortTemplateName(template_path)
        self.dialog.templateFileName = shortTemplateName
        self.dialog.wikiCommandChecked = False

        # Show dialog if user must enter variable's values
        self._updateResult()
        if (self._application.selectedPage is not None and
                self._application.selectedPage.getTypeString() == u'wiki'):
            self.dialog.setWikiCommandSetVisible(True)
        else:
            self.dialog.setWikiCommandSetVisible(False)

        self.dialog.setFocusToFirstVariable()
        self.dialog.Show()

    def _getShortTemplateName(self, template_fname):
        '''
        Convert full template path to short path
        '''
        snippets_dir = getSnippetsDir()
        shortTemplateName = template_fname

        if shortTemplateName.startswith(snippets_dir):
            shortTemplateName = shortTemplateName[len(snippets_dir) + 1:]

        shortTemplateName = shortTemplateName.replace(u'\\', u'/')
        return shortTemplateName

    def destroy(self):
        self.onFinishDialogEvent.clear()
        self.dialog.ok_button.Unbind(wx.EVT_BUTTON, handler=self._onOk)
        self.dialog.Unbind(EVT_VAR_CHANGE, handler=self._onVarChange)
        self.dialog.Close()
        self.dialog.Destroy()

    def FinishDialog(self):
        try:
            w, h = self._dialog.GetClientSize()
            self._config.variablesDialogWidth = w
            self._config.variablesDialogHeight = h
            self._config.recentSnippet = self._recentSnippetPath
        except EnvironmentError:
            pass

        text = self.GetResult()
        self.onFinishDialogEvent(FinishDialogParams(text))
        self.dialog.Close()

    def CloseDialog(self):
        self.dialog.Close()

    def GetResult(self):
        if not self.dialog.wikiCommandChecked:
            return self.dialog.getResult()
        else:
            return self._makeWikiCommand(self.dialog.getVarDict(),
                                         self.dialog.templateFileName)

    def _makeWikiCommand(self, vardict, template_name):
        vars_str = u''

        for varname in sorted(vardict.keys()):
            value = vardict[varname]
            if u'"' not in value:
                vars_str += u' {name}="{value}"'.format(name=varname,
                                                        value=vardict[varname])
            else:
                vars_str += u" {name}='{value}'".format(name=varname,
                                                        value=vardict[varname])

        result = u'(:snip file="{template}"{vars}:)(:snipend:)'.format(
            template=template_name,
            vars=vars_str)
        return result

    def _onOk(self, event):
        self.FinishDialog()

    def _onVarChange(self, event):
        self._updateResult()

    def _updateResult(self):
        variables = self.dialog.getVarDict()
        text = self._parser.process(self._selectedText,
                                    self._application.selectedPage,
                                    **variables)
        self.dialog.setResult(text)