improved generation of hashed ID for inline footnotes by adding a nonce
This commit is contained in:
parent
81201c5a21
commit
abbebab00f
|
@ -331,6 +331,10 @@ class ObsidianStyleFootnotes(FootnoteExtension):
|
|||
"""A block processor extended to handle Obsidian inline footnotes."""
|
||||
RE_INLINE = re.compile(r'\^\[(.+)]')
|
||||
|
||||
def __init__(self, footnotes: FootnoteExtension) -> None:
|
||||
super(ObsidianStyleFootnotes.BlockProcessor, self).__init__(footnotes)
|
||||
self._inlines_nonce = 0
|
||||
|
||||
def run(self, parent: etree.Element, blocks: list[str]) -> bool:
|
||||
""" Find, set, and remove footnote definitions. """
|
||||
block = blocks.pop(0)
|
||||
|
@ -373,7 +377,8 @@ class ObsidianStyleFootnotes(FootnoteExtension):
|
|||
|
||||
if m_inline:
|
||||
footnote = m_inline.group(1).strip()
|
||||
id = hashlib.sha1(bytes(footnote, 'utf-8')).hexdigest()
|
||||
id = hashlib.sha1(bytes(f"{footnote}{self._inlines_nonce}", 'utf-8')).hexdigest()
|
||||
self._inlines_nonce += 1
|
||||
self.footnotes.setFootnote(id, footnote)
|
||||
blocks.insert(0, block[:m_inline.start(0)].rstrip()
|
||||
+ INLINE_FOOTNOTE_REF_PATTERN.format(id) + block[m_inline.end(0):])
|
||||
|
|
Loading…
Reference in New Issue
Block a user