def extendMarkdown(self, md, md_globals): """Insert <ins>test</ins> tags as ^^test^^ and/or <sup>test</sup> tags as ^test^.""" config = self.getConfigs() insert = bool(config.get('insert', True)) superscript = bool(config.get('superscript', True)) smart = bool(config.get('smart_insert', True)) if "^" not in md.ESCAPED_CHARS and (insert or superscript): md.ESCAPED_CHARS.append('^') if " " not in md.ESCAPED_CHARS and superscript: md.ESCAPED_CHARS.append(' ') ins_rule = RE_SMART_INS if smart else RE_INS sup_ins_rule = RE_SUP_INS sup_ins2_rule = RE_SMART_SUP_INS2 if smart else RE_SUP_INS2 sup_rule = RE_SUP if insert: md.inlinePatterns.add("ins", SimpleTagPattern(ins_rule, "ins"), "<not_strong") if superscript: md.inlinePatterns.add( "sup_ins", DoubleTagPattern(sup_ins_rule, "sup,ins"), "<ins") md.inlinePatterns.add( "sup_ins2", DoubleTagPattern(sup_ins2_rule, "sup,ins"), "<ins") md.inlinePatterns.add("sup", SimpleTagPattern(sup_rule, "sup"), ">ins" if smart else "<ins") elif superscript: md.inlinePatterns.add("sup", SimpleTagPattern(sup_rule, "sup"), "<not_strong")
def extendMarkdown(self, md, md_globals): """Insert <ins>test</ins> tags as ^^test^^ and/or <sup>test</sup> tags as ^test^.""" config = self.getConfigs() insert = bool(config.get('insert', True)) superscript = bool(config.get('superscript', True)) smart = bool(config.get('smart_insert', True)) escape_chars = [] if insert or superscript: escape_chars.append('^') if superscript: escape_chars.append(' ') util.escape_chars(md, escape_chars) ins_rule = RE_SMART_INS if smart else RE_INS sup_ins_rule = RE_SUP_INS sup_ins2_rule = RE_SMART_SUP_INS2 if smart else RE_SUP_INS2 sup_rule = RE_SUP if insert: md.inlinePatterns.add("ins", SimpleTagPattern(ins_rule, "ins"), "<not_strong") md.inlinePatterns.add('not_caret', SimpleTextPattern(RE_NOT_CARET), "<ins") if superscript: md.inlinePatterns.add("sup_ins", DoubleTagPattern(sup_ins_rule, "sup,ins"), "<ins") md.inlinePatterns.add("sup_ins2", DoubleTagPattern(sup_ins2_rule, "sup,ins"), "<ins") md.inlinePatterns.add("sup", SimpleTagPattern(sup_rule, "sup"), ">ins" if smart else "<ins") elif superscript: md.inlinePatterns.add("sup", SimpleTagPattern(sup_rule, "sup"), "<not_strong") md.inlinePatterns.add('not_caret', SimpleTextPattern(RE_NOT_CARET), "<sup")
def extendMarkdown(self, md, md_globals): """Insert <del>test</del> tags as ~~test~~ and <sub>test</sub> tags as ~test~.""" config = self.getConfigs() delete = bool(config.get('delete', True)) subscript = bool(config.get('subscript', True)) smart = bool(config.get('smart_delete', True)) if "~" not in md.ESCAPED_CHARS and (delete or subscript): md.ESCAPED_CHARS.append('~') if " " not in md.ESCAPED_CHARS and subscript: md.ESCAPED_CHARS.append(' ') delete_rule = RE_SMART_DEL if smart else RE_DEL sub_del_rule = RE_SMART_SUB_DEL if smart else RE_SUB_DEL sub_del2_rule = RE_SMART_SUB_DEL2 if smart else RE_SUB_DEL2 sub_rule = RE_SUB if delete: md.inlinePatterns.add("del", SimpleTagPattern(delete_rule, "del"), "<not_strong") if subscript: md.inlinePatterns.add("sub_del", DoubleTagPattern(sub_del_rule, "sub,del"), "<del") md.inlinePatterns.add("sub_del2", DoubleTagPattern(sub_del2_rule, "sub,del"), "<del") md.inlinePatterns.add("sub", SimpleTagPattern(sub_rule, "sub"), ">del" if smart else "<del") elif subscript: md.inlinePatterns.add("sub", SimpleTagPattern(sub_rule, "sub"), "<not_strong")
def extendMarkdown(self, md, md_globals): DEL_RE = r"(\~\~)(.+?)(\~\~)" INS_RE = r"(\+\+)(.+?)(\+\+)" md.inlinePatterns.add('del', SimpleTagPattern(DEL_RE, 'del'), '<not_strong') md.inlinePatterns.add('ins', SimpleTagPattern(INS_RE, 'ins'), '<not_strong')
def extendMarkdown(self, md, md_globals): """Insert `<del>test</del>` tags as `~~test~~` and `<sub>test</sub>` tags as `~test~`.""" config = self.getConfigs() delete = bool(config.get('delete', True)) subscript = bool(config.get('subscript', True)) smart = bool(config.get('smart_delete', True)) escape_chars = [] if delete or subscript: escape_chars.append('~') if subscript: escape_chars.append(' ') util.escape_chars(md, escape_chars) delete_rule = RE_SMART_DEL if smart else RE_DEL sub_del_rule = RE_SMART_SUB_DEL if smart else RE_SUB_DEL sub_del2_rule = RE_SMART_SUB_DEL2 if smart else RE_SUB_DEL2 sub_rule = RE_SUB if delete: md.inlinePatterns.add("del", SimpleTagPattern(delete_rule, "del"), "<not_strong") md.inlinePatterns.add('not_tilde', SimpleTextPattern(RE_NOT_TILDE), "<del") if subscript: md.inlinePatterns.add("sub_del", DoubleTagPattern(sub_del_rule, "sub,del"), "<del") md.inlinePatterns.add("sub_del2", DoubleTagPattern(sub_del2_rule, "sub,del"), "<del") md.inlinePatterns.add("sub", SimpleTagPattern(sub_rule, "sub"), ">del" if smart else "<del") elif subscript: md.inlinePatterns.add("sub", SimpleTagPattern(sub_rule, "sub"), "<not_strong") md.inlinePatterns.add('not_tilde', SimpleTextPattern(RE_NOT_TILDE), "<sub")
def extendMarkdown(self, md, md_globals): patterns = md.inlinePatterns # H_{2}O and E=mc^{2} SUBSCRIPT_RE = r'(_)\{([^}]+)\}' SUPERSCRIPT_RE = r'(\^)\{([^}]+)\}' patterns['subscript'] = SimpleTagPattern(SUBSCRIPT_RE, 'sub') patterns['superscript'] = SimpleTagPattern(SUPERSCRIPT_RE, 'sup')
def extendMarkdown(self, md, md_globals): # noqa: N802 """Insert 'del' pattern before 'not_strong' pattern.""" md.inlinePatterns.add('del', SimpleTagPattern(DEL_RE, 'del'), '<not_strong') md.inlinePatterns.add('ins', SimpleTagPattern(INS_RE, 'ins'), '<not_strong')
def extendMarkdown(self, md, md_globals): """Modifies inline patterns.""" md.inlinePatterns.add('del', SimpleTagPattern(r"(\~\~)(.+?)(\~\~)", 'del'), '<not_strong') md.inlinePatterns.add('ins', SimpleTagPattern(r"(\+\+)(.+?)(\+\+)", 'ins'), '<not_strong')
def extendMarkdown(self, md, md_globals): """Modifies inline patterns.""" md.inlinePatterns.add('del', SimpleTagPattern(DEL_RE, 'del'), '<not_strong') md.inlinePatterns.add('ins', SimpleTagPattern(INS_RE, 'ins'), '<not_strong') md.inlinePatterns.add('mark', SimpleTagPattern(MARK_RE, 'mark'), '<not_strong')
def extendMarkdown(self, md): md.registerExtension(self) md.inlinePatterns.add('mi_bb_bold_alt', SimpleTagPattern(STRONG_ALT_RE, 'strong'), '>strong') md.inlinePatterns.add('mi_bb_bold', SimpleTagPattern(STRONG_RE, 'strong'), '>strong') md.inlinePatterns.add('mi_bb_italics', SimpleTagPattern(EMPHASIS_RE, 'em'), '>emphasis')
def extendMarkdown(self, md, md_globals): data_for_replacing_text = self.getConfig('data_for_replacing_text') autolink_with_name_tag = AutolinkWihtNamePattern(AUTOLINK_WITH_NAME_RE, md) md.inlinePatterns.add('autolink_2', autolink_with_name_tag, '<autolink') escape_brackets = XmlTagPattern(XML_TAG_RE, 'span') md.inlinePatterns.add('escape_brackets', escape_brackets, '>backtick') del_tag = SlackInlineTagPattern(DEL_RE, 'del') md.inlinePatterns.add('del', del_tag, '>not_strong') ins_tag = SimpleTagPattern(INS_RE, 'ins') md.inlinePatterns.add('ins', ins_tag, '>del') strong_tag = SlackInlineTagPattern(STRONG_RE, 'strong') md.inlinePatterns['strong'] = strong_tag emph_tag = SlackInlineTagPattern(EMPH_RE, 'em') md.inlinePatterns['emphasis'] = emph_tag ping_here_tag = SimpleTagPatternWithClassOptions(PING_HERE_RE, 'span', 'here', pre_text='@') md.inlinePatterns.add('ping_here', ping_here_tag, '>ins') ping_channel_tag = SimpleTagPatternWithClassOptions(PING_CHANNEL_RE, 'span', 'channel', pre_text='@') md.inlinePatterns.add('ping_channel', ping_channel_tag, '>ping_here') ping_user_group_tag = SimpleTagPatternWithClassOptions(PING_USER_GROUP_RE, 'span', 'user_group') md.inlinePatterns.add('ping_user_group', ping_user_group_tag, '>ping_channel') preformatted_tag = SimpleTagPattern(PREFORMATTED_RE, 'pre') md.inlinePatterns.add('preformatted', preformatted_tag, '<backtick') md.parser.blockprocessors['ulist'] = UListProcessor(md.parser) md.parser.blockprocessors['olist'] = OListProcessor(md.parser) if isinstance(data_for_replacing_text, list): username_with_name_tag = SimpleTagPatternWithClassOptionsAndData(USERNAME_WITH_NAME_RE, 'span', 'username', data_for_replacing_text) md.inlinePatterns.add('username_with_name', username_with_name_tag, '<link') username_tag = SimpleTagPatternWithClassOptionsAndData(USERNAME_RE, 'span', 'username', data_for_replacing_text) md.inlinePatterns.add('username', username_tag, '<link') channel_tag = SimpleTagPatternWithClassOptionsAndData(CHANNEL_RE, 'span', 'channel', data_for_replacing_text) md.inlinePatterns.add('channel', channel_tag, '<username') channel_2_tag = SimpleTagPatternWithClassOptionsAndData(CHANNEL_2_RE, 'span', 'channel', data_for_replacing_text) md.inlinePatterns.add('channel_2', channel_2_tag, '>channel') else: username_tag = SimpleTagPatternWithClassOptions(USERNAME_WITH_NAME_RE, 'span', 'username') md.inlinePatterns.add('username_with_name', username_tag, '<link') username_tag = SimpleTagPatternWithClassOptions(USERNAME_RE, 'span', 'username') md.inlinePatterns.add('username', username_tag, '<link') channel_tag = SimpleTagPatternWithClassOptions(CHANNEL_RE, 'span', 'channel') md.inlinePatterns.add('channel', channel_tag, '<username') channel_2_tag = SimpleTagPatternWithClassOptions(CHANNEL_2_RE, 'span', 'channel') md.inlinePatterns.add('channel_2', channel_2_tag, '>channel')
def make_better(self, md): """ Configure all the pattern rules. This should be used instead of smart_strong package. pymdownx.extra should be used in place of markdown.extensions.extra. """ config = self.getConfigs() enabled = config["smart_enable"] if enabled: enable_all = enabled == "all" enable_under = enabled == "underscore" or enable_all enable_star = enabled == "asterisk" or enable_all star_strong_em = SMART_STAR_STRONG_EM if enable_star else STAR_STRONG_EM under_strong_em = SMART_UNDER_STRONG_EM if enable_under else UNDER_STRONG_EM star_em_strong = SMART_STAR_EM_STRONG if enable_star else STAR_EM_STRONG under_em_strong = SMART_UNDER_EM_STRONG if enable_under else UNDER_EM_STRONG star_strong_em2 = SMART_STAR_STRONG_EM2 if enable_star else STAR_STRONG_EM2 under_strong_em2 = SMART_UNDER_STRONG_EM2 if enable_under else UNDER_STRONG_EM2 star_strong = SMART_STAR_STRONG if enable_star else STAR_STRONG under_strong = SMART_UNDER_STRONG if enable_under else UNDER_STRONG star_emphasis = SMART_STAR_EM if enable_star else STAR_EM under_emphasis = SMART_UNDER_EM if enable_under else UNDER_EM md.inlinePatterns["strong_em"] = DoubleTagPattern( star_strong_em, 'strong,em') md.inlinePatterns.add("strong_em2", DoubleTagPattern(under_strong_em, 'strong,em'), '>strong_em') if util.MD3: # pragma: no cover value = md.inlinePatterns["em_strong"] index = md.inlinePatterns._priority[ md.inlinePatterns.get_index_for_name("strong_em2")].priority md.inlinePatterns.register(value, "em_strong", index + 1) else: md.inlinePatterns.link("em_strong", ">strong_em2") md.inlinePatterns["em_strong"] = DoubleTagPattern( star_em_strong, 'em,strong') md.inlinePatterns.add('em_strong2', DoubleTagPattern(under_em_strong, 'em,strong'), '>em_strong') md.inlinePatterns.add('strong_em3', DoubleTagPattern(star_strong_em2, 'strong,em'), '>em_strong2') md.inlinePatterns.add('strong_em4', DoubleTagPattern(under_strong_em2, 'strong,em'), '>strong_em3') md.inlinePatterns["strong"] = SimpleTagPattern(star_strong, 'strong') md.inlinePatterns.add("strong2", SimpleTagPattern(under_strong, 'strong'), '>strong') md.inlinePatterns["emphasis"] = SimpleTagPattern(star_emphasis, 'em') md.inlinePatterns["emphasis2"] = SimpleTagPattern(under_emphasis, 'em')
def extendMarkdown(self, md, md_globals): """Add support for <mark>test</mark> tags as ==test==.""" util.escape_chars(md, ['=']) config = self.getConfigs() if config.get('smart_mark', True): md.inlinePatterns.add("mark", SimpleTagPattern(RE_SMART_MARK, "mark"), "<not_strong") else: md.inlinePatterns.add("mark", SimpleTagPattern(RE_MARK, "mark"), "<not_strong") md.inlinePatterns.add('not_mark', SimpleTextPattern(RE_NOT_MARK), "<mark")
def extendMarkdown(self, md): del_tag = SimpleTagPattern(self.REGEX_DEL, 'del') md.inlinePatterns.register(del_tag, 'del', 15) mark_tag = SimpleTagPattern(self.REGEX_MARK, 'mark') md.inlinePatterns.register(mark_tag, 'mark', 15) sup_tag = SimpleTagPattern(self.REGEX_SUP, 'sup') md.inlinePatterns.register(sup_tag, 'sup', 10) sub_tag = SimpleTagPattern(self.REGEX_SUB, 'sub') md.inlinePatterns.register(sub_tag, 'sub', 10)
def extendMarkdown(self, md, md_globals): """Add support for <mark>test</mark> tags as ==test==.""" if "=" not in md.ESCAPED_CHARS: md.ESCAPED_CHARS.append('=') config = self.getConfigs() if config.get('smart_mark', True): md.inlinePatterns.add("mark", SimpleTagPattern(RE_SMART_MARK, "mark"), "<not_strong") else: md.inlinePatterns.add("mark", SimpleTagPattern(RE_MARK, "mark"), "<not_strong")
def extendMarkdown(self, md, md_globals): # strikethrough del_tag = SimpleTagPattern(self.DEL_RE, 'del') md.inlinePatterns.add('del', del_tag, '_end') # underline ins_tag = SimpleTagPattern(self.INS_RE, 'ins') md.inlinePatterns.add('ins', ins_tag, '_end') # italic em_tag = SimpleTagPattern(self.EM_RE, 'em') md.inlinePatterns['emphasis'] = em_tag # bold strong_tag = SimpleTagPattern(self.STRONG_RE, 'strong') md.inlinePatterns['strong'] = strong_tag
def extendMarkdown(self, md, md_globals): md.inlinePatterns['uriregex'] = _URIPattern(_URI_RE, md) s_tag = SimpleTagPattern(_STRIKE_RE, 'strike') md.inlinePatterns.add('s', s_tag, '>not_strong') sup_tag = _SuperPattern(_SUPER_RE, md) md.inlinePatterns.add('sup', sup_tag, '>not_strong') html_pattern = md.inlinePatterns['html'] old = html_pattern.handleMatch def handleMatch(match): # Reddit allows interesting markdown, for example this should pass # through fully: "Hello <name>!" group_number = 2 if markdown.version_info[0] <= 2 else 1 raw_html = html_pattern.unescape(match.group(2)) try: root = ElementTree.fromstring('<div>'+raw_html+'</div>') except ElementTree.ParseError: # This is not proper html, so pass it through rather than # extracting it into an unchangeable stash return raw_html else: # This is proper html, so pass it through return old(data) html_pattern.handleMatch = handleMatch
def extendMarkdown(self, md, md_globals): # noqa: N802 """Insert 'superscript' pattern before 'not_strong' pattern.""" md.inlinePatterns.add( "superscript", SimpleTagPattern(SUPERSCRIPT_RE, "sup"), "<not_strong", )
def extendMarkdown(self, md, md_globals): md.registerExtension(self) # Add inline pseudo form pattern. Replace all inlinePatterns that # include an underscore with patterns that do not include underscores. md.inlinePatterns['em_strong'] = DoubleTagPattern( EM_STRONG_RE, 'strong,em') md.inlinePatterns['strong_em'] = DoubleTagPattern( STRONG_EM_RE, 'em,strong') md.inlinePatterns['strong'] = SimpleTagPattern(STRONG_RE, 'strong') md.inlinePatterns['pseudo-form'] = PseudoFormPattern(PSEUDO_FORM_RE) md.inlinePatterns['section-symbol'] = SectionSymbolPattern( SECTION_SYMBOL_RE) del md.inlinePatterns['emphasis2'] # Add block reference processor for `see(label)` syntax md.parser.blockprocessors.add( 'blockreference', BlockReferenceProcessor( md.parser, url_resolver=self.getConfig('url_resolver'), contents_resolver=self.getConfig('contents_resolver'), render_block_reference=self.getConfig( 'render_block_reference'), ), '<paragraph') # Replace the default paragraph processor with one that handles # `{label}` syntax and gives default hash-based ids to paragraphs md.parser.blockprocessors['paragraph'] = \ LabeledParagraphProcessor(md.parser) # Delete the ordered list processor del md.parser.blockprocessors['olist']
def extendMarkdown(self, md, md_globals): # Needs to come before escape matching because \ is pretty important in LaTeX md.inlinePatterns.add("mathjaxblocks", HtmlPattern(LATEX_BLOCK, md), "<escape") md.inlinePatterns.add("mathjaxexprs", HtmlPattern(LATEX_EXPR, md), "<escape") md.inlinePatterns.add("del", SimpleTagPattern(DEL_RE, "del"), ">not_strong")
def get_content(obj): md = markdown.Markdown(extensions=[ 'utils.markdown_extension:ChangeCodeExtension', 'pymdownx.extra', 'pymdownx.critic', 'pymdownx.tilde' ]) md.inlinePatterns.add('ins', SimpleTagPattern(INS_RE, 'ins'), '<not_strong') return md.convert(obj.content)
def extendMarkdown(self, md): # Автор: mahorin. Пакет: atchmd md.parser.blockprocessors.deregister('quote') md.parser.blockprocessors.deregister('hashheader') md.parser.blockprocessors.deregister('setextheader') md.parser.blockprocessors.deregister('olist') md.parser.blockprocessors.deregister('ulist') md.preprocessors.deregister('html_block') md.inlinePatterns.deregister('html') md.inlinePatterns.deregister('reference') md.inlinePatterns.deregister('link') md.inlinePatterns.deregister('image_link') md.inlinePatterns.deregister('image_reference') md.inlinePatterns.deregister('linebreak') del_tag = SimpleTagPattern(DEL_RE, 'del') md.inlinePatterns.register(del_tag, 'del', 71) ins_tag = SimpleTagPattern(INS_RE, 'ins') md.inlinePatterns.register(ins_tag, 'ins', 72) spoil_tag = SimpleTagPattern(SPOIL_RE, 'spoiler') md.inlinePatterns.register(spoil_tag, 'spoil', 73) link_tag = AtchLinkInlineProcessor(ATCHLINK_RE) link_tag.md = md md.inlinePatterns.register(link_tag, 'atchlink', 75) quote_tag = AtchQuoteInlineProcessor(ATCHQUOTE_RE) quote_tag.md = md md.inlinePatterns.register(quote_tag, 'atchquote', 74) # Автор: selcuk. Пакет: urlify md.preprocessors.register(URLify(md), 'urlify', 76) # Автор: kriwil. Пакет: newtab md.inlinePatterns['link'] = NewTabLinkPattern(LINK_RE, md) md.inlinePatterns['reference'] = NewTabReferencePattern( REFERENCE_RE, md) md.inlinePatterns['short_reference'] = NewTabReferencePattern( REFERENCE_RE, md) md.inlinePatterns['autolink'] = NewTabAutolinkPattern(AUTOLINK_RE, md) md.inlinePatterns['automail'] = NewTabAutomailPattern(AUTOMAIL_RE, md)
def extendMarkdown(self, md, md_globals): highlight_pattern = SimpleTagPattern(self.HIGHLIGHT_RE, 'mark') md.inlinePatterns.add('highlight', highlight_pattern, '_end') vid_pattern = VideoPattern(self.VID_RE) md.inlinePatterns.add('video_link', vid_pattern, '_begin') url_pattern = IFramePattern(self.URL_RE) md.inlinePatterns.add('iframe_link', url_pattern, '_begin')
def extendMarkdown(self, md, md_globals): # Strike-throw del_tag = SimpleTagPattern(STRIKE_RE, 'del') md.inlinePatterns.add('del', del_tag, '>not_strong') # Automatic links alink = AutolinkInlineProcessor(AUTOMATIC_LINK_RE, md) #md.inlinePatterns.register(alink, 'automatic_link', 65) md.inlinePatterns.add('automatic_link', alink, '>del')
def extendMarkdown(self, md, md_globals): # Needs to come before escape matching because \ is pretty important # in LaTeX md.inlinePatterns.add('mathjaxblocks', HtmlPattern(LATEX_BLOCK, md), '<escape') md.inlinePatterns.add('mathjaxexprs', HtmlPattern(LATEX_EXPR, md), '<escape') md.inlinePatterns.add('del', SimpleTagPattern(DEL_RE, 'del'), '>not_strong')
def get_desc(obj): md = markdown.Markdown(extensions=[ 'utils.markdown_extension:ChangeCodeExtension', 'pymdownx.extra', 'pymdownx.critic', 'pymdownx.tilde' ]) md.inlinePatterns.add('ins', SimpleTagPattern(INS_RE, 'ins'), '<not_strong') desc = strip_tags(md.convert(obj.content))[:54] return '{}...'.format(desc)
def md_to_html(self, request, pk=None): content = request.query_params.get('content', '') md = markdown.Markdown(extensions=[ 'utils.markdown_extension:ChangeCodeExtension', 'pymdownx.extra', 'pymdownx.critic', 'pymdownx.tilde' ]) md.inlinePatterns.add('ins', SimpleTagPattern(INS_RE, 'ins'), '<not_strong') return Response(md.convert(content), status=status.HTTP_200_OK)
def extendMarkdown(self, md, md_globals): data_for_replacing_text = self.getConfig('data_for_replacing_text') del_tag = SimpleTagPattern(DEL_RE, 'del') md.inlinePatterns.add('del', del_tag, '>not_strong') ins_tag = SimpleTagPattern(INS_RE, 'ins') md.inlinePatterns.add('ins', ins_tag, '>del') strong_tag = SimpleTagPattern(STRONG_RE, 'strong') md.inlinePatterns['strong'] = strong_tag emph_tag = SimpleTagPattern(EMPH_RE, 'em') md.inlinePatterns.add('em', emph_tag, '>del') preformatted_tag = SimpleTagPattern(PREFORMATTED_RE, 'pre') md.inlinePatterns.add('preformatted', preformatted_tag, '<backtick') # newline_tag = SubstituteTagPattern(NEWLINE_RE, 'br') # md.inlinePatterns.add('linebreak2', newline_tag, '>linebreak') if isinstance(data_for_replacing_text, list): username_tag = SimpleTagPatternWithClassOptionsAndData( USERNAME_RE, 'span', 'username', data_for_replacing_text) md.inlinePatterns.add('username', username_tag, '<link') channel_tag = SimpleTagPatternWithClassOptionsAndData( CHANNEL_RE, 'span', 'channel', data_for_replacing_text) md.inlinePatterns.add('channel', channel_tag, '<username') channel_2_tag = SimpleTagPatternWithClassOptionsAndData( CHANNEL_2_RE, 'span', 'channel', data_for_replacing_text) md.inlinePatterns.add('channel_2', channel_2_tag, '>channel') else: username_tag = SimpleTagPatternWithClassOptions( USERNAME_RE, 'span', 'username') md.inlinePatterns.add('username', username_tag, '<link') channel_tag = SimpleTagPatternWithClassOptions( CHANNEL_RE, 'span', 'channel') md.inlinePatterns.add('channel', channel_tag, '<username') channel_2_tag = SimpleTagPatternWithClassOptions( CHANNEL_2_RE, 'span', 'channel') md.inlinePatterns.add('channel_2', channel_2_tag, '>channel')
def extendMarkdown(self, md, md_globals): md.registerExtension(self) md.inlinePatterns["strong"] = SimpleTagPattern(STRONG_RE, "strong") md.inlinePatterns.add("file", FilePattern(FILE_RE), ">emphasis2") md.inlinePatterns.add("image", ImagePattern(IMAGE_RE), ">emphasis2") md.inlinePatterns.add("mention", SimpleTagPattern(MENTION_RE, "strong"), ">emphasis2") md.inlinePatterns.add("space_mention", SimpleTagPattern(SPACE_MENTION_RE, "strong"), ">emphasis2") del md.preprocessors["html_block"] del md.preprocessors["reference"] del md.inlinePatterns["autolink"] del md.inlinePatterns["automail"] del md.inlinePatterns["em_strong"] del md.inlinePatterns["entity"] del md.inlinePatterns["html"] del md.inlinePatterns["image_link"] del md.inlinePatterns["image_reference"] del md.inlinePatterns["reference"] del md.inlinePatterns["short_reference"] del md.inlinePatterns["strong_em"] del md.parser.blockprocessors[ "code"] # `code` is an indented code block, WW only supports 'fenced' code blocks (using ```\nbackticks\n```) del md.parser.blockprocessors["hashheader"] del md.parser.blockprocessors["hr"] del md.parser.blockprocessors["indent"] del md.parser.blockprocessors["olist"] del md.parser.blockprocessors["quote"] del md.parser.blockprocessors["setextheader"] del md.parser.blockprocessors["ulist"]
def extendMarkdown(self, md): del_tag = SimpleTagPattern(DEL_RE, "del") md.inlinePatterns.register(del_tag, "del", 40)