Anton Shestakov <engored@ya.ru>, Mon, 15 Sep 2014 23:53:49 +0900
Minor edits and reordering.
rst2cheatsheet.py
Permissions: -rwxr-xr-x
from docutils.core import publish_parts from docutils.writers import html4css1 class CheatsheetWriter(html4css1.Writer): html4css1.Writer.__init__(self) self.translator_class = CheatsheetTranslator class CheatsheetTranslator(html4css1.HTMLTranslator): def visit_section(self, node): if not self.section_level: self.body.append(self.starttag(node, 'div', CLASS='uk-float-left uk-margin-large-right uk-margin-bottom')) def depart_section(self, node): if not self.section_level: self.body.append('</div>') def visit_title(self, node): if self.section_level == 1: self.body.append('<!--h1>') self.body.append(self.starttag(node, 'h2', '')) def depart_title(self, node): if self.section_level == 1: self.body.append('</h1-->\n') self.body.append('</h2>\n') def visit_literal(self, node): self.body.append(self.starttag(node, 'code', '')) def visit_title_reference(self, node): self.body.append(self.starttag(node, 'kbd', '')) def depart_title_reference(self, node): self.body.append('</kbd>') def visit_definition_list(self, node): self.body.append(self.starttag(node, 'table', CLASS='table-cheats uk-text-left')) def depart_definition_list(self, node): self.body.append('</table>\n') def visit_definition_list_item(self, node): self.body.append(self.starttag(node, 'tr', '')) def depart_definition_list_item(self, node): self.body.append('</tr>\n') def visit_term(self, node): self.body.append(self.starttag(node, 'td', '')) def depart_term(self, node): self.body.append('</td>') def visit_definition(self, node): self.body.append(self.starttag(node, 'td', '')) def depart_definition(self, node): self.body.append('</td>') with open(source_path, 'r') as sf: parts = publish_parts(source=source, source_path=source_path, writer=CheatsheetWriter()) with open('template.html', 'r') as tf: print template.replace('{{ content }}', parts['fragment']).encode('utf-8')