#!/usr/bin/env python ############################################################################ # # MODULE: mkrest.py # AUTHOR(S): Luca Delucchi # PURPOSE: Create HTML manual page snippets # COPYRIGHT: (C) 2012 by Luca Delucchi # and the GRASS Development Team # # This program is free software under the GNU General # Public License (>=v2). Read the file COPYING that # comes with GRASS for details. # ############################################################################# import sys import string import re import subprocess from datetime import datetime pgm = sys.argv[1] if len(sys.argv) > 1: year = sys.argv[2] else: year = str(datetime.now().year) src_file = "%s.html" % pgm tmp_file = "%s.tmp.txt" % pgm #TODO add copyright footer_index = string.Template(\ """ :doc:`Main Page ` - :doc:`${INDEXNAMECAP} index <${INDEXNAME}>` - :doc:`Full index ` 2003-${YEAR} `GRASS Development Team `_ """) footer_noindex = string.Template(\ """ :doc:`Main Page ` - :doc:`Full index ` 2003-${YEAR} `GRASS Development Team `_ """) def read_file(name): try: f = open(name, 'rb') s = f.read() f.close() return s except IOError: return "" replacement = { '*`' : '`', '`* `' : '`', '>`_*' : '>`_', '>`_,*' : '>`_,', '``*\ "' : '``"', '***' : '**' } src_data = read_file(src_file) title = re.search('()', src_data, re.IGNORECASE) if title: title_name = title.group(2).strip() sys.stdout.write("%s\n" % title_name) title_style = "=" * (len(title_name)+2) sys.stdout.write("%s\n\n" % title_style) tmp_data = read_file(tmp_file) if tmp_data: sys.stdout.write(tmp_data) process = subprocess.Popen('pandoc -s -r html %s -w rst' % src_file, shell=True, stdout=subprocess.PIPE) html_text = process.communicate()[0] if html_text: for k, v in replacement.iteritems(): html_text = html_text.replace(k, v) #TODO remove with space if string start with it, " vector..." -> "vector..." # not if it is a tab: " vector...." -> " vector..." # for line in html_text.splitlines(True): # sys.stdout.write("%s" % line.lstrip()) sys.stdout.write(html_text) index_names = { 'd': 'display', 'db': 'database', 'g': 'general', 'i': 'imagery', 'm': 'misc', 'ps': 'postscript', 'p': 'paint', 'r': 'raster', 'r3': 'raster3D', 's': 'sites', 't': 'temporal', 'v': 'vector' } index = re.search('()', src_data, re.IGNORECASE) if index: index_name = index.group(2).strip() else: mod_class = pgm.split('.', 1)[0] index_name = index_names.get(mod_class, '') if index_name: sys.stdout.write(footer_index.substitute(INDEXNAME = index_name, INDEXNAMECAP = index_name.title(), YEAR = year)) else: sys.stdout.write(footer_noindex.substitute(YEAR = year)) sys.exit()