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
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
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
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>'])
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")
def _getForbiddenToken(self): return Literal('\n\n').leaveWhitespace()
def _getEndToken(self): return Literal('%%')