6:33cf8f66683a
Anton Shestakov <engored@ya.ru>, Mon, 15 Sep 2014 13:04:46 +0900
More on vim.

previous change 0:65366ba5ac77

rst2cheatsheet.py

Permissions: -rwxr-xr-x

Other formats: Feeds:
#!/usr/bin/env python
from sys import argv
from docutils.core import publish_parts
from docutils.writers import html4css1
class CheatsheetWriter(html4css1.Writer):
def __init__(self):
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'))
self.section_level += 1
def depart_section(self, node):
self.section_level -= 1
if not self.section_level:
self.body.append('</div>')
def visit_title(self, node):
if self.section_level == 1:
self.body.append('<!--h1>')
else:
self.body.append(self.starttag(node, 'h2', ''))
def depart_title(self, node):
if self.section_level == 1:
self.body.append('</h1-->\n')
else:
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'))
self.body.append('\n')
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>')
source_path = argv[1]
with open(source_path, 'r') as sf:
source = sf.read()
parts = publish_parts(source=source, source_path=source_path, writer=CheatsheetWriter())
with open('template.html', 'r') as tf:
template = tf.read()
print template.replace('{{ content }}', parts['fragment']).encode('utf-8')