Add core physics manuscript: The Computability of Recursive Coherence
This commit is contained in:
@@ -0,0 +1,65 @@
|
||||
"""Definition."""
|
||||
import xml.etree.ElementTree as etree
|
||||
from .block import Block
|
||||
from ..blocks import BlocksExtension
|
||||
|
||||
|
||||
class Definition(Block):
|
||||
"""
|
||||
Definition.
|
||||
|
||||
Converts non `ul`, `ol` blocks (ideally `p` tags) into `dt`
|
||||
and will convert first level `li` elements of `ul` and `ol`
|
||||
elements to `dd` tags. When done, the `ul`, and `ol` elements
|
||||
will be removed.
|
||||
"""
|
||||
|
||||
NAME = 'define'
|
||||
|
||||
def on_create(self, parent):
|
||||
"""Create the element."""
|
||||
|
||||
return etree.SubElement(parent, 'dl')
|
||||
|
||||
def on_end(self, block):
|
||||
"""Convert non list items to details."""
|
||||
|
||||
remove = []
|
||||
offset = 0
|
||||
for i, child in enumerate(list(block)):
|
||||
if child.tag.lower() in ('dt', 'dd'):
|
||||
continue
|
||||
|
||||
elif child.tag.lower() not in ('ul', 'ol'):
|
||||
if child.tag.lower() == 'p':
|
||||
child.tag = 'dt'
|
||||
else:
|
||||
dt = etree.Element('dt')
|
||||
dt.append(child)
|
||||
block.insert(i + offset, dt)
|
||||
block.remove(child)
|
||||
else:
|
||||
for li in list(child):
|
||||
offset += 1
|
||||
li.tag = 'dd'
|
||||
block.insert(i + offset, li)
|
||||
child.remove(li)
|
||||
remove.append(child)
|
||||
|
||||
for el in remove:
|
||||
block.remove(el)
|
||||
|
||||
|
||||
class DefinitionExtension(BlocksExtension):
|
||||
"""Definition Blocks Extension."""
|
||||
|
||||
def extendMarkdownBlocks(self, md, block_mgr):
|
||||
"""Extend Markdown blocks."""
|
||||
|
||||
block_mgr.register(Definition, self.getConfigs())
|
||||
|
||||
|
||||
def makeExtension(*args, **kwargs):
|
||||
"""Return extension."""
|
||||
|
||||
return DefinitionExtension(*args, **kwargs)
|
||||
Reference in New Issue
Block a user