Remove support for extension block

This commit is contained in:
Eric Holscher 2015-02-13 11:39:29 -08:00
parent d5b2aee45c
commit af2e7c4b35

View file

@ -1,9 +1,8 @@
from contextlib import contextmanager from contextlib import contextmanager
import itertools import itertools
import os.path
from docutils import parsers, nodes from docutils import parsers, nodes
from CommonMark import DocParser from CommonMark import DocParser, HTMLRenderer
from warnings import warn from warnings import warn
__all__ = ['CommonMarkParser'] __all__ = ['CommonMarkParser']
@ -38,16 +37,11 @@ class _SectionHandler(object):
class CommonMarkParser(object, parsers.Parser): class CommonMarkParser(object, parsers.Parser):
supported = ('md', 'markdown') supported = ('md', 'markdown')
def __init__(self, env=None):
self.env = env
def convert_blocks(self, blocks): def convert_blocks(self, blocks):
for block in blocks: for block in blocks:
self.convert_block(block) self.convert_block(block)
def convert_block(self, block): def convert_block(self, block):
tag = attr = info_words = None
if (block.t == "Document"): if (block.t == "Document"):
self.convert_blocks(block.children) self.convert_blocks(block.children)
elif (block.t == "ATXHeader") or (block.t == "SetextHeader"): elif (block.t == "ATXHeader") or (block.t == "SetextHeader"):
@ -71,8 +65,6 @@ class CommonMarkParser(object, parsers.Parser):
self.horizontal_rule() self.horizontal_rule()
elif (block.t == "HtmlBlock"): elif (block.t == "HtmlBlock"):
self.html_block(block) self.html_block(block)
elif (block.t == "ExtensionBlock"):
self.extension_block(block)
else: else:
warn("Unsupported block type: " + block.t) warn("Unsupported block type: " + block.t)
@ -162,29 +154,6 @@ class CommonMarkParser(object, parsers.Parser):
raw_node.line = block.start_line raw_node.line = block.start_line
self.current_node.append(raw_node) self.current_node.append(raw_node)
def extension_block(self, block):
rst_template = '.. {name}:: {arguments}'
rst_options_template = ' :{arg}: {value}'
to_parse = rst_template.format(
name=block.title,
arguments=block.attributes.pop('arguments', ''),
)
to_parse += "\n"
for arg, value in block.attributes.items():
to_parse += rst_options_template.format(
arg=arg,
value=value,
)
to_parse += "\n\n"
for line in block.strings:
to_parse += " {}\n".format(line)
print "Sphinx Directive:\n[\n%s\n]\n" % to_parse
document = self.env.node_from_directive(to_parse)
for node in document.children:
self.current_node.append(node)
def horizontal_rule(self): def horizontal_rule(self):
transition_node = nodes.transition() transition_node = nodes.transition()
self.current_node.append(transition_node) self.current_node.append(transition_node)
@ -237,6 +206,12 @@ def inline_html(inline):
return literal_node return literal_node
def inline_entity(inline):
val = HTMLRenderer().renderInline(inline)
entity_node = nodes.paragraph('', val, format='html')
return entity_node
def reference(block): def reference(block):
ref_node = nodes.reference() ref_node = nodes.reference()
@ -247,7 +222,7 @@ def reference(block):
ref_node['refuri'] = block.destination ref_node['refuri'] = block.destination
else: else:
ref_node['refname'] = label ref_node['refname'] = label
self.document.note_refname(ref_node) # self.document.note_refname(ref_node)
if block.title: if block.title:
ref_node['title'] = block.title ref_node['title'] = block.title
@ -259,7 +234,6 @@ def reference(block):
def image(block): def image(block):
img_node = nodes.image() img_node = nodes.image()
label = make_refname(block.label)
img_node['uri'] = block.destination img_node['uri'] = block.destination
if block.title: if block.title:
@ -273,31 +247,26 @@ def parse_inline(parent_node, inline):
node = None node = None
if (inline.t == "Str"): if (inline.t == "Str"):
node = nodes.Text(inline.c) node = nodes.Text(inline.c)
node.line = inline.start_line
elif (inline.t == "Softbreak"): elif (inline.t == "Softbreak"):
node = nodes.Text('\n') node = nodes.Text('\n')
node.line = inline.start_line
elif inline.t == "Emph": elif inline.t == "Emph":
node = emph(inline.c) node = emph(inline.c)
node.line = inline.start_line
elif inline.t == "Strong": elif inline.t == "Strong":
node = strong(inline.c) node = strong(inline.c)
node.line = inline.start_line
elif inline.t == "Link": elif inline.t == "Link":
node = reference(inline) node = reference(inline)
node.line = inline.start_line
elif inline.t == "Image": elif inline.t == "Image":
node = image(inline) node = image(inline)
node.line = inline.start_line
elif inline.t == "Code": elif inline.t == "Code":
node = inline_code(inline) node = inline_code(inline)
node.line = inline.start_line
elif inline.t == "Html": elif inline.t == "Html":
node = inline_html(inline) node = inline_html(inline)
node.line = inline.start_line elif (inline.t == "Entity"):
node = inline_entity(inline)
else: else:
warn("Unsupported inline type " + inline.t) warn("Unsupported inline type " + inline.t)
return return
node.line = inline.start_line
parent_node.append(node) parent_node.append(node)