Beispiel #1
0
    def getToken (self):
        """
        Создать элементы из прикрепленных файлов.
        Отдельно картинки, отдельно все файлы
        """
        attachesAll = []

        attaches = Attachment (self.parser.page).attachmentFull
        attaches.sort (self.sortByLength, reverse=True)

        for attach in attaches:
            fname = os.path.basename (attach)
            if self.filterFile (fname):
                attach = Literal (fname)
                attachesAll.append (attach)

        finalToken = Literal (self.attachString) + concatenate (attachesAll)
        finalToken = finalToken.setParseAction (self.convertToLink)("attach")
        return finalToken
Beispiel #2
0
    def getToken (self):
        """
        Создать элементы из прикрепленных файлов.
        Отдельно картинки, отдельно все файлы
        """
        attachesAll = []

        attaches = Attachment (self.parser.page).attachmentFull
        attaches.sort (key=len, reverse=True)

        for attach in attaches:
            fname = os.path.basename (attach)
            if self.filterFile (fname):
                attach = Literal (fname)
                attachesAll.append (attach)

        finalToken = Literal (self.attachString) + concatenate (attachesAll)
        finalToken = finalToken.setParseAction (self.convertToLink)("attach")
        return finalToken
Beispiel #3
0
    def getToken(self):
        tableCell = Regex(r"(?P<text>(.|(\\\n))*?)\|\|")
        tableCell.setParseAction(self.__convertTableCell)

        tableRow = LineStart() + Literal("||") + OneOrMore(tableCell).leaveWhitespace() + Optional(LineEnd())
        tableRow.setParseAction(self.__convertTableRow)

        table = LineStart() + Regex(r"\|\| *(?P<params>.+)?") + LineEnd() + OneOrMore(tableRow)
        table = table.setParseAction(self.__convertTable)("table")

        return table
Beispiel #4
0
class QuoteToken (object):
    quoteStart = '[>'
    quoteEnd = '<]'
    anyExcept = Combine(ZeroOrMore(NotAny (Literal(quoteStart) | Literal(quoteEnd)) + CharsNotIn('', exact=1)))

    def __init__ (self, parser):
        self.parser = parser


    def getToken (self):
        token = Forward()
        token << (Suppress(QuoteToken.quoteStart) +
                  (OneOrMore(QuoteToken.anyExcept + token) +
                   QuoteToken.anyExcept | QuoteToken.anyExcept) +
                  Suppress(QuoteToken.quoteEnd)).leaveWhitespace().setParseAction(self.__parse)("quote")
        return token


    def __parse (self, s, l, t):
        text = u''.join(t)
        leftpos = text.find (u'<blockquote>')
        rightpos = text.rfind (u'</blockquote>')

        if leftpos == -1 or rightpos == -1:
            return u''.join([u'<blockquote>', self.parser.parseWikiMarkup (text), u'</blockquote>'])

        lefttext = text[:leftpos]
        righttext = text[rightpos:]
        centertext = text[leftpos:rightpos]

        return u''.join([
            u'<blockquote>',
            self.parser.parseWikiMarkup (lefttext),
            centertext,
            self.parser.parseWikiMarkup (righttext),
            u'</blockquote>'])
Beispiel #5
0
 def getToken(self):
     token1 = Literal(
         LineBreakToken.expression1).setParseAction(lambda s, l, t: "<br/>")
     token2 = Literal(
         LineBreakToken.expression2).setParseAction(lambda s, l, t: "<br/>")
     return (token1 | token2)("linebreak")
Beispiel #6
0
 def _getForbiddenToken(self):
     return Literal('\n\n').leaveWhitespace()
Beispiel #7
0
 def _getEndToken(self):
     return Literal('%%')