Change paragraph symbol to section symbol. Add checkbox rules.
This commit is contained in:
parent
ec00f0ced2
commit
270952f1ce
1 changed files with 14 additions and 4 deletions
|
@ -44,7 +44,6 @@ SLUG_CHARACTERS = string.ascii_lowercase + string.digits + '_'
|
||||||
|
|
||||||
session = requests.Session()
|
session = requests.Session()
|
||||||
|
|
||||||
|
|
||||||
class SyntaxHighlighting:
|
class SyntaxHighlighting:
|
||||||
def block_code(self, text, lang):
|
def block_code(self, text, lang):
|
||||||
inlinestyles = self.options.get('inlinestyles') or False
|
inlinestyles = self.options.get('inlinestyles') or False
|
||||||
|
@ -132,6 +131,8 @@ class VoussoirInlineGrammar(mistune.InlineGrammar):
|
||||||
subreddit = re.compile(r'\/r\/[A-Za-z0-9_]+')
|
subreddit = re.compile(r'\/r\/[A-Za-z0-9_]+')
|
||||||
redditor = re.compile(r'\/u\/[A-Za-z0-9_\-]+')
|
redditor = re.compile(r'\/u\/[A-Za-z0-9_\-]+')
|
||||||
youtube_embed = re.compile(r'\[youtube:([A-Za-z0-9_\-]{11})\]')
|
youtube_embed = re.compile(r'\[youtube:([A-Za-z0-9_\-]{11})\]')
|
||||||
|
checkbox_checked = re.compile(r'\[x\]')
|
||||||
|
checkbox_unchecked = re.compile(r'\[ \]')
|
||||||
dash_spacer = re.compile(r'^\s*-$', re.MULTILINE)
|
dash_spacer = re.compile(r'^\s*-$', re.MULTILINE)
|
||||||
# This `text` override is based on this article:
|
# This `text` override is based on this article:
|
||||||
# https://ana-balica.github.io/2015/12/21/mistune-custom-lexers-we-are-going-deeper/
|
# https://ana-balica.github.io/2015/12/21/mistune-custom-lexers-we-are-going-deeper/
|
||||||
|
@ -148,6 +149,8 @@ class VoussoirInlineGrammar(mistune.InlineGrammar):
|
||||||
class VoussoirInline(mistune.InlineLexer):
|
class VoussoirInline(mistune.InlineLexer):
|
||||||
default_rules = copy.copy(mistune.InlineLexer.default_rules)
|
default_rules = copy.copy(mistune.InlineLexer.default_rules)
|
||||||
default_rules.remove('text')
|
default_rules.remove('text')
|
||||||
|
default_rules.insert(0, 'checkbox_checked')
|
||||||
|
default_rules.insert(0, 'checkbox_unchecked')
|
||||||
default_rules.insert(0, 'mdash')
|
default_rules.insert(0, 'mdash')
|
||||||
default_rules.insert(0, 'larr')
|
default_rules.insert(0, 'larr')
|
||||||
default_rules.insert(0, 'rarr')
|
default_rules.insert(0, 'rarr')
|
||||||
|
@ -171,6 +174,12 @@ class VoussoirInline(mistune.InlineLexer):
|
||||||
tagname = qualname.split('.')[-1]
|
tagname = qualname.split('.')[-1]
|
||||||
return f'<a class="tag_link" data-qualname="{qualname}">[{tagname}]</a>'
|
return f'<a class="tag_link" data-qualname="{qualname}">[{tagname}]</a>'
|
||||||
|
|
||||||
|
def output_checkbox_checked(self, m):
|
||||||
|
return '<input type="checkbox" checked/>'
|
||||||
|
|
||||||
|
def output_checkbox_unchecked(self, m):
|
||||||
|
return '<input type="checkbox"/>'
|
||||||
|
|
||||||
def output_footnote_link(self, m):
|
def output_footnote_link(self, m):
|
||||||
global footnote_link_index
|
global footnote_link_index
|
||||||
ret = f'<a id="footnote_link_{footnote_link_index}" class="footnote_link" href="#footnote_text_{footnote_link_index}" data-index={footnote_link_index}>[{footnote_link_index}]</a>'
|
ret = f'<a id="footnote_link_{footnote_link_index}" class="footnote_link" href="#footnote_text_{footnote_link_index}" data-index={footnote_link_index}>[{footnote_link_index}]</a>'
|
||||||
|
@ -281,7 +290,8 @@ def dump_file(path):
|
||||||
|
|
||||||
# SOUP HELPERS
|
# SOUP HELPERS
|
||||||
################################################################################
|
################################################################################
|
||||||
PARAGRAPH_SYMBOL = chr(182)
|
SECTION_SYMBOL = '§'
|
||||||
|
|
||||||
def add_header_anchors(soup):
|
def add_header_anchors(soup):
|
||||||
'''
|
'''
|
||||||
Give each <hX> an <a> to link to it.
|
Give each <hX> an <a> to link to it.
|
||||||
|
@ -298,7 +308,7 @@ def add_header_anchors(soup):
|
||||||
new_a = soup.new_tag('a')
|
new_a = soup.new_tag('a')
|
||||||
new_a['href'] = '#' + slug
|
new_a['href'] = '#' + slug
|
||||||
new_a['class'] = 'header_anchor_link'
|
new_a['class'] = 'header_anchor_link'
|
||||||
new_a.append(f' ({PARAGRAPH_SYMBOL})')
|
new_a.append(f' ({SECTION_SYMBOL})')
|
||||||
header.append(new_a)
|
header.append(new_a)
|
||||||
|
|
||||||
def add_toc(soup, max_level=None):
|
def add_toc(soup, max_level=None):
|
||||||
|
@ -343,7 +353,7 @@ def add_toc(soup, max_level=None):
|
||||||
toc_line = toc.new_tag('li')
|
toc_line = toc.new_tag('li')
|
||||||
toc_a = toc.new_tag('a')
|
toc_a = toc.new_tag('a')
|
||||||
|
|
||||||
toc_a.append(get_innertext(header).replace(f' ({PARAGRAPH_SYMBOL})', ''))
|
toc_a.append(get_innertext(header).replace(f' ({SECTION_SYMBOL})', ''))
|
||||||
toc_a['href'] = f'#{header["id"]}'
|
toc_a['href'] = f'#{header["id"]}'
|
||||||
toc_line.append(toc_a)
|
toc_line.append(toc_a)
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue