for hook in state.hooks_pre_page:
hook(path=path)
+ page = Empty()
+ page.filename = filename
+ page.url = url
+ page.prefix_wbr = path[0]
+
# Render the file
- with open(input_filename, 'r') as f: pub = publish_rst(state, f.read(), source_path=input_filename)
+ with open(input_filename, 'r') as f:
+ try:
+ pub = publish_rst(state, f.read(), source_path=input_filename)
+ except docutils.utils.SystemMessage:
+ logging.error("Failed to process %s, rendering an empty page", input_filename)
+
+ # Empty values for fields expected by other code
+ page.breadcrumb = [(os.path.basename(input_filename), url)]
+ page.summary = ''
+ page.content = ''
+ entry = state.name_map['.'.join(path)]
+ entry.summary = page.summary
+ entry.name = page.breadcrumb[-1][0]
+ render(config=state.config,
+ template='page.html',
+ filename=page.filename,
+ url=page.url,
+ env=env,
+ page=page)
+ return
# Extract metadata from the page
metadata = {}
# Breadcrumb, we don't do page hierarchy yet
assert len(path) == 1
- breadcrumb = [(pub.writer.parts.get('title'), url)]
-
- page = Empty()
- page.filename = filename
- page.url = url
- page.breadcrumb = breadcrumb
- page.prefix_wbr = path[0]
+ page.breadcrumb = [(pub.writer.parts.get('title'), url)]
# Set page content and add extra metadata from there
page.content = pub.writer.parts.get('body').rstrip()
# for index
entry = state.name_map['.'.join(path)]
entry.summary = page.summary
- entry.name = breadcrumb[-1][0]
+ entry.name = page.breadcrumb[-1][0]
if not state.config['SEARCH_DISABLED']:
result = Empty()
--- /dev/null
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="UTF-8" />
+ <title>error.rst | My Python Project</title>
+ <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:400,400i,600,600i%7CSource+Code+Pro:400,400i,600" />
+ <link rel="stylesheet" href="m-dark+documentation.compiled.css" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+</head>
+<body>
+<header><nav id="navigation">
+ <div class="m-container">
+ <div class="m-row">
+ <a href="index.html" id="m-navbar-brand" class="m-col-t-8 m-col-m-none m-left-m">My Python Project</a>
+ </div>
+ </div>
+</nav></header>
+<main><article>
+ <div class="m-container m-container-inflatable">
+ <div class="m-row">
+ <div class="m-col-l-10 m-push-l-1">
+ <h1>
+ error.rst
+ </h1>
+ </div>
+ </div>
+ </div>
+</article></main>
+</body>
+</html>
class Page(BaseTestCase):
def test(self):
self.run_python({
- 'INPUT_PAGES': ['index.rst', 'another.rst']
+ 'INPUT_PAGES': ['index.rst', 'another.rst', 'error.rst']
})
self.assertEqual(*self.actual_expected_contents('index.html'))
self.assertEqual(*self.actual_expected_contents('another.html'))
+ self.assertEqual(*self.actual_expected_contents('error.html'))
self.assertEqual(*self.actual_expected_contents('pages.html'))
class InputSubdir(BaseTestCase):