Mercurial > libervia-backend
diff sat/plugins/plugin_syntax_wiki_dotclear.py @ 2624:56f94936df1e
code style reformatting using black
author | Goffi <goffi@goffi.org> |
---|---|
date | Wed, 27 Jun 2018 20:14:46 +0200 |
parents | 26edcf3a30eb |
children | 003b8b4b56a7 |
line wrap: on
line diff
--- a/sat/plugins/plugin_syntax_wiki_dotclear.py Wed Jun 27 07:51:29 2018 +0200 +++ b/sat/plugins/plugin_syntax_wiki_dotclear.py Wed Jun 27 20:14:46 2018 +0200 @@ -21,6 +21,7 @@ from sat.core.i18n import _ from sat.core.log import getLogger + log = getLogger(__name__) from sat.core.constants import Const as C from sat.core import exceptions @@ -36,61 +37,70 @@ C.PI_DEPENDENCIES: ["TEXT-SYNTAXES"], C.PI_MAIN: "DCWikiSyntax", C.PI_HANDLER: "", - C.PI_DESCRIPTION: _("""Implementation of Dotclear wiki syntax""") + C.PI_DESCRIPTION: _("""Implementation of Dotclear wiki syntax"""), } -NOTE_TPL = u'[{}]' # Note template -NOTE_A_REV_TPL = u'rev_note_{}' -NOTE_A_TPL = u'note_{}' +NOTE_TPL = u"[{}]" # Note template +NOTE_A_REV_TPL = u"rev_note_{}" +NOTE_A_TPL = u"note_{}" ESCAPE_CHARS_BASE = r"(?P<escape_char>[][{}%|\\/*#@{{}}~$-])" -ESCAPE_CHARS_EXTRA = r"!?_+'()" # These chars are not escaped in XHTML => dc_wiki conversion, - # but are used in the other direction -ESCAPE_CHARS = ESCAPE_CHARS_BASE.format('') -FLAG_UL = 'ul' # must be the name of the element -FLAG_OL = 'ol' -ELT_WITH_STYLE = ('img', 'div') # elements where a style attribute is expected +ESCAPE_CHARS_EXTRA = ( + r"!?_+'()" +) # These chars are not escaped in XHTML => dc_wiki conversion, +# but are used in the other direction +ESCAPE_CHARS = ESCAPE_CHARS_BASE.format("") +FLAG_UL = "ul" # must be the name of the element +FLAG_OL = "ol" +ELT_WITH_STYLE = ("img", "div") # elements where a style attribute is expected -wiki = [r'\\' + ESCAPE_CHARS_BASE.format(ESCAPE_CHARS_EXTRA), - r"^!!!!!(?P<h1_title>.+?)$", - r"^!!!!(?P<h2_title>.+?)$", - r"^!!!(?P<h3_title>.+?)$", - r"^!!(?P<h4_title>.+?)$", - r"^!(?P<h5_title>.+?)$", - r"^----$(?P<horizontal_rule>)", - r"^\*(?P<list_bullet>.*?)$", - r"^#(?P<list_ordered>.*?)$", - r"^ (?P<preformated>.*?)$", - r"^> +?(?P<quote>.*?)$", - r"''(?P<emphasis>.+?)''", - r"__(?P<strong_emphasis>.+?)__", - r"%%%(?P<line_break>)", - r"\+\+(?P<insertion>.+?)\+\+", - r"--(?P<deletion>.+?)--", - r"\[(?P<link>.+?)\]", - r"\(\((?P<image>.+?)\)\)", - r"~(?P<anchor>.+?)~", - r"\?\?(?P<acronym>.+?\|.+?)\?\?", - r"{{(?P<inline_quote>.+?)}}", - r"@@(?P<code>.+?)@@", - r"\$\$(?P<footnote>.+?)\$\$", - r"(?P<text>.+?)", - ] +wiki = [ + r"\\" + ESCAPE_CHARS_BASE.format(ESCAPE_CHARS_EXTRA), + r"^!!!!!(?P<h1_title>.+?)$", + r"^!!!!(?P<h2_title>.+?)$", + r"^!!!(?P<h3_title>.+?)$", + r"^!!(?P<h4_title>.+?)$", + r"^!(?P<h5_title>.+?)$", + r"^----$(?P<horizontal_rule>)", + r"^\*(?P<list_bullet>.*?)$", + r"^#(?P<list_ordered>.*?)$", + r"^ (?P<preformated>.*?)$", + r"^> +?(?P<quote>.*?)$", + r"''(?P<emphasis>.+?)''", + r"__(?P<strong_emphasis>.+?)__", + r"%%%(?P<line_break>)", + r"\+\+(?P<insertion>.+?)\+\+", + r"--(?P<deletion>.+?)--", + r"\[(?P<link>.+?)\]", + r"\(\((?P<image>.+?)\)\)", + r"~(?P<anchor>.+?)~", + r"\?\?(?P<acronym>.+?\|.+?)\?\?", + r"{{(?P<inline_quote>.+?)}}", + r"@@(?P<code>.+?)@@", + r"\$\$(?P<footnote>.+?)\$\$", + r"(?P<text>.+?)", +] -wiki_re = re.compile('|'.join(wiki), re.MULTILINE | re.DOTALL) -wiki_block_level_re = re.compile(r"^///html(?P<html>.+?)///\n\n|(?P<paragraph>.+?)(?:\n{2,}|\Z)", re.MULTILINE | re.DOTALL) +wiki_re = re.compile("|".join(wiki), re.MULTILINE | re.DOTALL) +wiki_block_level_re = re.compile( + r"^///html(?P<html>.+?)///\n\n|(?P<paragraph>.+?)(?:\n{2,}|\Z)", + re.MULTILINE | re.DOTALL, +) class DCWikiParser(object): - def __init__(self): self._footnotes = None for i in xrange(5): - setattr(self, - 'parser_h{}_title'.format(i), - lambda string, parent, i=i: self._parser_title(string, parent, 'h{}'.format(i))) + setattr( + self, + "parser_h{}_title".format(i), + lambda string, parent, i=i: self._parser_title( + string, parent, "h{}".format(i) + ), + ) def parser_paragraph(self, string, parent): - p_elt = parent.addElement('p') + p_elt = parent.addElement("p") self._parse(string, p_elt) def parser_html(self, string, parent): @@ -101,7 +111,7 @@ log.warning(u"Error while parsing HTML content, ignoring it: {}".format(e)) return children = list(div_elt.elements()) - if len(children) == 1 and children[0].name == 'div': + if len(children) == 1 and children[0].name == "div": div_elt = children[0] parent.addChild(div_elt) @@ -113,128 +123,130 @@ elt.addContent(string) def parser_horizontal_rule(self, string, parent): - parent.addElement('hr') + parent.addElement("hr") def _parser_list(self, string, parent, list_type): depth = 0 - while string[depth:depth+1] == '*': - depth +=1 + while string[depth : depth + 1] == "*": + depth += 1 string = string[depth:].lstrip() - for i in xrange(depth+1): + for i in xrange(depth + 1): list_elt = getattr(parent, list_type) if not list_elt: parent = parent.addElement(list_type) else: parent = list_elt - li_elt = parent.addElement('li') + li_elt = parent.addElement("li") self._parse(string, li_elt) def parser_list_bullet(self, string, parent): - self._parser_list(string, parent, 'ul') + self._parser_list(string, parent, "ul") def parser_list_ordered(self, string, parent): - self._parser_list(string, parent, 'ol') + self._parser_list(string, parent, "ol") def parser_preformated(self, string, parent): pre_elt = parent.pre if pre_elt is None: - pre_elt = parent.addElement('pre') + pre_elt = parent.addElement("pre") else: # we are on a new line, and this is important for <pre/> - pre_elt.addContent('\n') + pre_elt.addContent("\n") pre_elt.addContent(string) def parser_quote(self, string, parent): blockquote_elt = parent.blockquote if blockquote_elt is None: - blockquote_elt = parent.addElement('blockquote') + blockquote_elt = parent.addElement("blockquote") p_elt = blockquote_elt.p if p_elt is None: - p_elt = blockquote_elt.addElement('p') + p_elt = blockquote_elt.addElement("p") else: - string = u'\n' + string + string = u"\n" + string self._parse(string, p_elt) def parser_emphasis(self, string, parent): - em_elt = parent.addElement('em') + em_elt = parent.addElement("em") self._parse(string, em_elt) def parser_strong_emphasis(self, string, parent): - strong_elt = parent.addElement('strong') + strong_elt = parent.addElement("strong") self._parse(string, strong_elt) def parser_line_break(self, string, parent): - parent.addElement('br') + parent.addElement("br") def parser_insertion(self, string, parent): - ins_elt = parent.addElement('ins') + ins_elt = parent.addElement("ins") self._parse(string, ins_elt) def parser_deletion(self, string, parent): - del_elt = parent.addElement('del') + del_elt = parent.addElement("del") self._parse(string, del_elt) def parser_link(self, string, parent): - url_data = string.split(u'|') - a_elt = parent.addElement('a') + url_data = string.split(u"|") + a_elt = parent.addElement("a") length = len(url_data) if length == 1: url = url_data[0] - a_elt['href'] = url + a_elt["href"] = url a_elt.addContent(url) else: name = url_data[0] url = url_data[1] - a_elt['href'] = url + a_elt["href"] = url a_elt.addContent(name) if length >= 3: - a_elt['lang'] = url_data[2] + a_elt["lang"] = url_data[2] if length >= 4: - a_elt['title'] = url_data[3] + a_elt["title"] = url_data[3] if length > 4: log.warning(u"too much data for url, ignoring extra data") def parser_image(self, string, parent): - image_data = string.split(u'|') - img_elt = parent.addElement('img') + image_data = string.split(u"|") + img_elt = parent.addElement("img") - for idx, attribute in enumerate(('src', 'alt', 'position', 'longdesc')): + for idx, attribute in enumerate(("src", "alt", "position", "longdesc")): try: data = image_data[idx] except IndexError: break - if attribute != 'position': + if attribute != "position": img_elt[attribute] = data else: data = data.lower() - if data in ('l', 'g'): - img_elt['style'] = "display:block; float:left; margin:0 1em 1em 0" - elif data in ('r', 'd'): - img_elt['style'] = "display:block; float:right; margin:0 0 1em 1em" - elif data == 'c': - img_elt['style'] = "display:block; margin-left:auto; margin-right:auto" + if data in ("l", "g"): + img_elt["style"] = "display:block; float:left; margin:0 1em 1em 0" + elif data in ("r", "d"): + img_elt["style"] = "display:block; float:right; margin:0 0 1em 1em" + elif data == "c": + img_elt[ + "style" + ] = "display:block; margin-left:auto; margin-right:auto" else: log.warning(u"bad position argument for image, ignoring it") def parser_anchor(self, string, parent): - a_elt = parent.addElement('a') - a_elt['id'] = string + a_elt = parent.addElement("a") + a_elt["id"] = string def parser_acronym(self, string, parent): - acronym, title = string.split(u'|',1) - acronym_elt = parent.addElement('acronym', content=acronym) - acronym_elt['title'] = title + acronym, title = string.split(u"|", 1) + acronym_elt = parent.addElement("acronym", content=acronym) + acronym_elt["title"] = title def parser_inline_quote(self, string, parent): - quote_data = string.split(u'|') + quote_data = string.split(u"|") quote = quote_data[0] - q_elt = parent.addElement('q', content=quote) - for idx, attribute in enumerate(('lang', 'cite'), 1): + q_elt = parent.addElement("q", content=quote) + for idx, attribute in enumerate(("lang", "cite"), 1): try: data = quote_data[idx] except IndexError: @@ -242,21 +254,21 @@ q_elt[attribute] = data def parser_code(self, string, parent): - parent.addElement('code', content=string) + parent.addElement("code", content=string) def parser_footnote(self, string, parent): idx = len(self._footnotes) + 1 note_txt = NOTE_TPL.format(idx) - sup_elt = parent.addElement('sup') - sup_elt['class'] = 'note' - a_elt = sup_elt.addElement('a', content=note_txt) - a_elt['id'] = NOTE_A_REV_TPL.format(idx) - a_elt['href'] = u'#{}'.format(NOTE_A_TPL.format(idx)) + sup_elt = parent.addElement("sup") + sup_elt["class"] = "note" + a_elt = sup_elt.addElement("a", content=note_txt) + a_elt["id"] = NOTE_A_REV_TPL.format(idx) + a_elt["href"] = u"#{}".format(NOTE_A_TPL.format(idx)) - p_elt = domish.Element((None, 'p')) - a_elt = p_elt.addElement('a', content=note_txt) - a_elt['id'] = NOTE_A_TPL.format(idx) - a_elt['href'] = u'#{}'.format(NOTE_A_REV_TPL.format(idx)) + p_elt = domish.Element((None, "p")) + a_elt = p_elt.addElement("a", content=note_txt) + a_elt["id"] = NOTE_A_TPL.format(idx) + a_elt["href"] = u"#{}".format(NOTE_A_REV_TPL.format(idx)) self._parse(string, p_elt) # footnotes are actually added at the end of the parsing self._footnotes.append(p_elt) @@ -273,7 +285,7 @@ return matched = match.group(match.lastgroup) try: - parser = getattr(self, 'parser_{}'.format(match.lastgroup)) + parser = getattr(self, "parser_{}".format(match.lastgroup)) except AttributeError: log.warning(u"No parser found for {}".format(match.lastgroup)) # parent.addContent(string) @@ -282,46 +294,46 @@ def parse(self, string): self._footnotes = [] - div_elt = domish.Element((None, 'div')) + div_elt = domish.Element((None, "div")) self._parse(string, parent=div_elt, block_level=True) if self._footnotes: - foot_div_elt = div_elt.addElement('div') - foot_div_elt['class'] = 'footnotes' + foot_div_elt = div_elt.addElement("div") + foot_div_elt["class"] = "footnotes" # we add a simple horizontal rule which can be customized # with footnotes class, instead of a text which would need # to be translated - foot_div_elt.addElement('hr') + foot_div_elt.addElement("hr") for elt in self._footnotes: foot_div_elt.addChild(elt) return div_elt class XHTMLParser(object): - def __init__(self): self.flags = None self.toto = 0 - self.footnotes = None # will hold a map from url to buffer id - for i in xrange(1,6): - setattr(self, - 'parser_h{}'.format(i), - lambda elt, buf, level=i: self.parserHeading(elt, buf, level) - ) + self.footnotes = None # will hold a map from url to buffer id + for i in xrange(1, 6): + setattr( + self, + "parser_h{}".format(i), + lambda elt, buf, level=i: self.parserHeading(elt, buf, level), + ) def parser_a(self, elt, buf): try: - url = elt['href'] + url = elt["href"] except KeyError: # probably an anchor try: - id_ = elt['id'] + id_ = elt["id"] if not id_: # we don't want empty values raise KeyError except KeyError: self.parserGeneric(elt, buf) else: - buf.append(u'~~{}~~'.format(id_)) + buf.append(u"~~{}~~".format(id_)) return link_data = [url] @@ -329,52 +341,54 @@ if name != url: link_data.insert(0, name) - lang = elt.getAttribute('lang') - title = elt.getAttribute('title') + lang = elt.getAttribute("lang") + title = elt.getAttribute("title") if lang is not None: link_data.append(lang) elif title is not None: - link_data.appand(u'') + link_data.appand(u"") if title is not None: link_data.append(title) - buf.append(u'[') - buf.append(u'|'.join(link_data)) - buf.append(u']') + buf.append(u"[") + buf.append(u"|".join(link_data)) + buf.append(u"]") def parser_acronym(self, elt, buf): try: - title = elt['title'] + title = elt["title"] except KeyError: log.debug(u"Acronyme without title, using generic parser") self.parserGeneric(elt, buf) return - buf.append(u'??{}|{}??'.format(unicode(elt), title)) + buf.append(u"??{}|{}??".format(unicode(elt), title)) def parser_blockquote(self, elt, buf): # we remove wrapping <p> to avoid empty line with "> " - children = list([child for child in elt.children if unicode(child).strip() not in ('', '\n')]) - if len(children) == 1 and children[0].name == 'p': + children = list( + [child for child in elt.children if unicode(child).strip() not in ("", "\n")] + ) + if len(children) == 1 and children[0].name == "p": elt = children[0] tmp_buf = [] self.parseChildren(elt, tmp_buf) - blockquote = u'> ' + u'\n> '.join(u''.join(tmp_buf).split('\n')) + blockquote = u"> " + u"\n> ".join(u"".join(tmp_buf).split("\n")) buf.append(blockquote) def parser_br(self, elt, buf): - buf.append(u'%%%') + buf.append(u"%%%") def parser_code(self, elt, buf): - buf.append(u'@@') + buf.append(u"@@") self.parseChildren(elt, buf) - buf.append(u'@@') + buf.append(u"@@") def parser_del(self, elt, buf): - buf.append(u'--') + buf.append(u"--") self.parseChildren(elt, buf) - buf.append(u'--') + buf.append(u"--") def parser_div(self, elt, buf): - if elt.getAttribute('class') == 'footnotes': + if elt.getAttribute("class") == "footnotes": self.parserFootnote(elt, buf) else: self.parseChildren(elt, buf, block=True) @@ -387,56 +401,56 @@ def parser_h6(self, elt, buf): # XXX: <h6/> heading is not managed by wiki syntax # so we handle it with a <h5/> - elt = copy.copy(elt) # we don't want to change to original element - elt.name = 'h5' + elt = copy.copy(elt) # we don't want to change to original element + elt.name = "h5" self._parse(elt, buf) def parser_hr(self, elt, buf): - buf.append(u'\n----\n') + buf.append(u"\n----\n") def parser_img(self, elt, buf): try: - url = elt['src'] + url = elt["src"] except KeyError: log.warning(u"Ignoring <img/> without src") return - image_data=[url] + image_data = [url] - alt = elt.getAttribute('alt') - style = elt.getAttribute('style', '') - desc = elt.getAttribute('longdesc') + alt = elt.getAttribute("alt") + style = elt.getAttribute("style", "") + desc = elt.getAttribute("longdesc") - if '0 1em 1em 0' in style: - position = 'L' - elif '0 0 1em 1em' in style: - position = 'R' - elif 'auto' in style: - position = 'C' + if "0 1em 1em 0" in style: + position = "L" + elif "0 0 1em 1em" in style: + position = "R" + elif "auto" in style: + position = "C" else: position = None if alt: image_data.append(alt) elif position or desc: - image_data.append(u'') + image_data.append(u"") if position: image_data.append(position) elif desc: - image_data.append(u'') + image_data.append(u"") if desc: image_data.append(desc) - buf.append(u'((') - buf.append(u'|'.join(image_data)) - buf.append(u'))') + buf.append(u"((") + buf.append(u"|".join(image_data)) + buf.append(u"))") def parser_ins(self, elt, buf): - buf.append(u'++') + buf.append(u"++") self.parseChildren(elt, buf) - buf.append(u'++') + buf.append(u"++") def parser_li(self, elt, buf): flag = None @@ -447,11 +461,11 @@ if current_flag is None: current_flag = flag if flag == current_flag: - bullets.append(u'*' if flag == FLAG_UL else u'#') + bullets.append(u"*" if flag == FLAG_UL else u"#") else: break - if flag != current_flag and buf[-1] == u' ': + if flag != current_flag and buf[-1] == u" ": # this trick is to avoid a space when we switch # from (un)ordered to the other type on the same row # e.g. *# unorder + ordered item @@ -459,64 +473,75 @@ buf.extend(bullets) - buf.append(u' ') + buf.append(u" ") self.parseChildren(elt, buf) - buf.append(u'\n') + buf.append(u"\n") def parser_ol(self, elt, buf): self.parserList(elt, buf, FLAG_OL) def parser_p(self, elt, buf): self.parseChildren(elt, buf) - buf.append(u'\n\n') + buf.append(u"\n\n") def parser_pre(self, elt, buf): - pre = u''.join([child.toXml() if domish.IElement.providedBy(child) else unicode(child) for child in elt.children]) - pre = u' ' + u'\n '.join(pre.split('\n')) + pre = u"".join( + [ + child.toXml() if domish.IElement.providedBy(child) else unicode(child) + for child in elt.children + ] + ) + pre = u" " + u"\n ".join(pre.split("\n")) buf.append(pre) def parser_q(self, elt, buf): - quote_data=[unicode(elt)] + quote_data = [unicode(elt)] - lang = elt.getAttribute('lang') - cite = elt.getAttribute('url') + lang = elt.getAttribute("lang") + cite = elt.getAttribute("url") if lang: quote_data.append(lang) elif cite: - quote_data.append(u'') + quote_data.append(u"") if cite: quote_data.append(cite) - buf.append(u'{{') - buf.append(u'|'.join(quote_data)) - buf.append(u'}}') + buf.append(u"{{") + buf.append(u"|".join(quote_data)) + buf.append(u"}}") def parser_span(self, elt, buf): self.parseChildren(elt, buf, block=True) def parser_strong(self, elt, buf): - buf.append(u'__') + buf.append(u"__") self.parseChildren(elt, buf) - buf.append(u'__') + buf.append(u"__") def parser_sup(self, elt, buf): # sup is mainly used for footnotes, so we check if we have an anchor inside - children = list([child for child in elt.children if unicode(child).strip() not in ('', '\n')]) - if (len(children) == 1 and domish.IElement.providedBy(children[0]) - and children[0].name == 'a' and '#' in children[0].getAttribute('href', '')): - url = children[0]['href'] - note_id = url[url.find('#')+1:] + children = list( + [child for child in elt.children if unicode(child).strip() not in ("", "\n")] + ) + if ( + len(children) == 1 + and domish.IElement.providedBy(children[0]) + and children[0].name == "a" + and "#" in children[0].getAttribute("href", "") + ): + url = children[0]["href"] + note_id = url[url.find("#") + 1 :] if not note_id: log.warning("bad link found in footnote") self.parserGeneric(elt, buf) return # this looks like a footnote - buf.append(u'$$') - buf.append(u' ') # placeholder + buf.append(u"$$") + buf.append(u" ") # placeholder self.footnotes[note_id] = len(buf) - 1 - buf.append(u'$$') + buf.append(u"$$") else: self.parserGeneric(elt, buf) @@ -537,39 +562,41 @@ raise exceptions.InternalError(u"flag has been removed by an other parser") def parserHeading(self, elt, buf, level): - buf.append((6-level) * u'!') + buf.append((6 - level) * u"!") for child in elt.children: # we ignore other elements for a Hx title self.parserText(child, buf) - buf.append(u'\n') + buf.append(u"\n") def parserFootnote(self, elt, buf): for elt in elt.elements(): # all children other than <p/> are ignored - if elt.name == 'p': + if elt.name == "p": a_elt = elt.a if a_elt is None: - log.warning(u"<p/> element doesn't contain <a/> in footnote, ignoring it") + log.warning( + u"<p/> element doesn't contain <a/> in footnote, ignoring it" + ) continue try: - note_idx = self.footnotes[a_elt['id']] + note_idx = self.footnotes[a_elt["id"]] except KeyError: log.warning(u"Note id doesn't match any known note, ignoring it") # we create a dummy element to parse all children after the <a/> - dummy_elt = domish.Element((None, 'note')) + dummy_elt = domish.Element((None, "note")) a_idx = elt.children.index(a_elt) - dummy_elt.children = elt.children[a_idx+1:] + dummy_elt.children = elt.children[a_idx + 1 :] note_buf = [] self.parseChildren(dummy_elt, note_buf) # now we can replace the placeholder - buf[note_idx] = u''.join(note_buf) + buf[note_idx] = u"".join(note_buf) def parserText(self, txt, buf, keep_whitespaces=False): txt = unicode(txt) if not keep_whitespaces: # we get text and only let one inter word space - txt = u' '.join(txt.split()) - txt = re.sub(ESCAPE_CHARS, r'\\\1', txt) + txt = u" ".join(txt.split()) + txt = re.sub(ESCAPE_CHARS, r"\\\1", txt) if txt: buf.append(txt) return txt @@ -582,9 +609,9 @@ def parseChildren(self, elt, buf, block=False): first_visible = True for child in elt.children: - if not block and not first_visible and buf and buf[-1][-1] not in (' ','\n'): + if not block and not first_visible and buf and buf[-1][-1] not in (" ", "\n"): # we add separation if it isn't already there - buf.append(u' ') + buf.append(u" ") if domish.IElement.providedBy(child): self._parse(child, buf) first_visible = False @@ -595,7 +622,7 @@ def _parse(self, elt, buf): elt_name = elt.name.lower() - style = elt.getAttribute('style') + style = elt.getAttribute("style") if style and elt_name not in ELT_WITH_STYLE: # if we have style we use generic parser to put raw HTML # to avoid losing it @@ -604,7 +631,9 @@ try: parser = getattr(self, "parser_{}".format(elt_name)) except AttributeError: - log.debug("Can't find parser for {} element, using generic one".format(elt.name)) + log.debug( + "Can't find parser for {} element, using generic one".format(elt.name) + ) parser = self.parserGeneric parser(elt, buf) @@ -613,7 +642,7 @@ self.footnotes = {} buf = [] self._parse(elt, buf) - return u''.join(buf) + return u"".join(buf) def parseString(self, string): wrapped_html = u"<div>{}</div>".format(string) @@ -623,7 +652,7 @@ log.warning(u"Error while parsing HTML content: {}".format(e)) return children = list(div_elt.elements()) - if len(children) == 1 and children[0].name == 'div': + if len(children) == 1 and children[0].name == "div": div_elt = children[0] return self.parse(div_elt) @@ -637,7 +666,9 @@ self._dc_parser = DCWikiParser() self._xhtml_parser = XHTMLParser() self._stx = self.host.plugins["TEXT-SYNTAXES"] - self._stx.addSyntax(self.SYNTAX_NAME, self.parseWiki, self.parseXHTML, [self._stx.OPT_NO_THREAD]) + self._stx.addSyntax( + self.SYNTAX_NAME, self.parseWiki, self.parseXHTML, [self._stx.OPT_NO_THREAD] + ) def parseWiki(self, wiki_stx): div_elt = self._dc_parser.parse(wiki_stx)