Skip to content

Commit 7cf34e2

Browse files
committed
Attempt to fix issue mythmon#144. Add source_path=None to all renderer
render() definitions so it can be passed through to the actual RST docutils renderer. This code fails on the test site, and has some debug print statements added. It is intended as an illustration only, definitely not production quality.
1 parent 5612ae0 commit 7cf34e2

File tree

3 files changed

+30
-10
lines changed

3 files changed

+30
-10
lines changed
+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
title: reStructuredText Test Page with Deliberate Error
2+
category: tests
3+
tags: [rest, sample]
4+
---
5+
6+
reStructuredText Page with Deliberate Error
7+
===========================================
8+
9+
For issue #144: reStructuredText rendering errors don't show
10+
filename, just "string"
11+
12+
The following will trigger a rst rendering error:
13+
- Should be an extra newline between the
14+
- first bullet point and the preceeding paragraph
15+
16+
End of deliberate error document.
17+

wok/page.py

+6-3
Original file line numberDiff line numberDiff line change
@@ -117,8 +117,11 @@ def from_file(cls, path, options, engine, renderer=renderers.Plain):
117117
page.build_meta()
118118

119119
page.engine.run_hook('page.render.pre', page)
120-
page.meta['content'] = page.renderer.render(page.original)
121-
page.meta['preview'] = page.renderer.render(page.original_preview)
120+
print "DEBUG: page.path=\"" + str(page.path) + "\""
121+
print "DEBUG: page.renderer=\"" + str(page.renderer) + "\""
122+
print "DEBUG: page.renderer.render=\"" + str(page.renderer.render) + "\""
123+
page.meta['content'] = page.renderer.render(page.original, source_path=page.path)
124+
page.meta['preview'] = page.renderer.render(page.original_preview, source_path=page.path)
122125
page.engine.run_hook('page.render.post', page)
123126

124127
return page
@@ -342,7 +345,7 @@ def build_meta(self):
342345

343346
self.engine.run_hook('page.meta.post', self)
344347

345-
def render(self, templ_vars=None):
348+
def render(self, templ_vars=None, source_path=None):
346349
"""
347350
Renders the page with the template engine.
348351
"""

wok/renderers.py

+7-7
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ class Renderer(object):
1616
extensions = []
1717

1818
@classmethod
19-
def render(cls, plain):
19+
def render(cls, plain, source_path=None):
2020
return plain
2121
all.append(Renderer)
2222

@@ -25,7 +25,7 @@ class Plain(Renderer):
2525
extensions = ['txt']
2626

2727
@classmethod
28-
def render(cls, plain):
28+
def render(cls, plain, source_path=None):
2929
return plain.replace('\n', '<br>')
3030
all.append(Plain)
3131

@@ -42,7 +42,7 @@ class Markdown(Renderer):
4242
plugins.extend(['codehilite(css_class=codehilite)', 'fenced_code'])
4343

4444
@classmethod
45-
def render(cls, plain):
45+
def render(cls, plain, source_path=None):
4646
return markdown(plain, cls.plugins)
4747

4848
all.append(Markdown)
@@ -64,7 +64,7 @@ class Markdown2(Renderer):
6464
extras.append('fenced-code-blocks')
6565

6666
@classmethod
67-
def render(cls, plain):
67+
def render(cls, plain, source_path=None):
6868
return markdown2.markdown(plain, extras=cls.extras)
6969

7070
all.append(Markdown2)
@@ -87,9 +87,9 @@ class ReStructuredText(Renderer):
8787
extensions = ['rst']
8888

8989
@classmethod
90-
def render(cls, plain):
90+
def render(cls, plain, source_path=None):
9191
w = rst_html_writer()
92-
return docutils.core.publish_parts(plain, writer=w)['body']
92+
return docutils.core.publish_parts(plain, source_path=source_path, writer=w)['body']
9393

9494
all.append(ReStructuredText)
9595
except ImportError:
@@ -104,7 +104,7 @@ class Textile(Renderer):
104104
extensions = ['textile']
105105

106106
@classmethod
107-
def render(cls, plain):
107+
def render(cls, plain, source_path=None):
108108
return textile.textile(plain)
109109

110110
all.append(Textile)

0 commit comments

Comments
 (0)