summaryrefslogtreecommitdiff
path: root/scripts/rst2htmldeco.py
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/rst2htmldeco.py')
-rwxr-xr-xscripts/rst2htmldeco.py231
1 files changed, 0 insertions, 231 deletions
diff --git a/scripts/rst2htmldeco.py b/scripts/rst2htmldeco.py
deleted file mode 100755
index 699d6f2..0000000
--- a/scripts/rst2htmldeco.py
+++ /dev/null
@@ -1,231 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-# vim:ts=4:sw=4:expandtab
-
-#* Author: Mark Mitchell
-#* Copyright 2005-2008 Mark Mitchell, All Rights Reserved
-#* License: see __license__ below.
-
-# Use Python 3 print function in Python >= 2.6
-from __future__ import print_function
-
-__doc__ = """
-Renders reStructuredText files to HTML using the custom docutils writer
-docutils_htmldeco_writer, which inserts a common header and navigation menu at
-the top of all HTML pages. The header and navigation HTML blobs are
-kept in a separate python file, html_fragments.py.
-
-Usage:
- rst2htmldeco.py [options] SRCFILE OUTFILE
-
- SRCFILE is the path to a restructured text file.
- For example: ./AUTHORS.txt
-
- OUTFILE is the path where the HTML file is written.
- For example: ./www/authors.html
-
- Options:
-
- -h --help Print this help message
- -e --embed-stylesheet=<FILE>
- The stylesheet will be embedded in the HTML.
- -l --link-stylesheet=<URL>
- The HTML file will Link to the stylesheet,
- using the URL verbatim.
- -r --url-prefix=<PATH>
- The value of url-prefix is prefixed to all the URLs in the
- path to get to the top directory from the OUTFILE
- directory. Used to create working relative URLs in the custom
- header and navigation menu. Defaults to empty.
- Example: --url-prefix=../../
-
-
- -e and -l are mutually excusive. If neither is specified, nothing
- will work.
-
- Note that images referenced from the stylesheet may require different
- image-dir paths depending on whether the stylesheet is embedded or linked.
- If linked, image URLs in the stylesheet are relative to the stylesheet's
- location. If embedded, image URLs in the stylesheet are relative to the
- HTML file's path.
-
-Embedding vs. linking stylesheet
-=================================
-
-Embedding stylesheet
-----------------------
-* The HTML file needs no additional files in particular locations in order
- to render nicely.
-* The size of every HTML file is inflated. Download time is increased.
-
-Linking stylesheet
--------------------
-* Best performance for files served via HTTP, as browsers will download the
- stylesheet once and cache it, and individual HTML files will be more compact.
-
-* No need to regenerate every HTML file if the stylesheet is changed.
-
-* If the HTML file is detached from stylesheet, it will look very plain
- when rendered by a browser.
-
-Images are always referenced (there's two, the logo and banner background),
-so will not be rendered if the HTML file is detached from the image files.
-"""
-
-__copyright__ = "2005, 2008, Mark Mitchell"
-
-__license__ = """
-Copyright 2005, 2008, Mark Mitchell
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this oftware and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-The Software is provided "as is", without warranty of any kind,
-express or implied, including but not limited to the warranties of
-merchantability, fitness for a particular purpose and noninfringement.
-In no event shall the authors or copyright holders be liable for any
-claim, damages or other liability, whether in an action of contract,
-tort or otherwise, arising from, out of or in connection with Software
-or the use or other dealings in the Software.
-"""
-
-import sys
-import os, os.path
-import locale
-import getopt
-
-import html_fragments
-
-
-try:
- locale.setlocale(locale.LC_ALL, '')
-except:
- pass
-
-from docutils.core import publish_cmdline, default_description
-
-
-# Python module name of the custom HTML writer, must be in sys.path
-rst_writer = 'docutils_htmldeco_writer'
-
-docutils_opts = [
- '--cloak-email-addresses', # Obfusticate email addresses
- '--no-generator', # no "Generated by Docutils" credit and link at the end of the document.
- # '--date', # Include the date at the end of the document (UTC)
- # '--time', # Include the time & date (UTC)
- '--no-datestamp', # Do not include a datestamp of any kind
- '--traceback', # Enable Python tracebacks when Docutils is halted.
- '--rfc-references', # Recognize and link to standalone RFC references (like "RFC 822")
- '--rfc-base-url=http://tools.ietf.org/html/', # Base URL for RFC references
-]
-
-
-def make_html(src, dest, embed_stylesheet=False,
- stylesheet=None, url_prefix=''):
-
- # Fix the url_prefix path in the banner HTML.
- # This Python tricky business is necessary because the custom docutils
- # writer, which inserts the HTML blobs, can't do it, because docutils
- # doesn't provide any way to pass an argument such as image_dir to the
- # writer.
- # There must be a better way, but I haven't figured it out yet.
- if url_prefix:
- html_fragments.url_prefix = url_prefix.rstrip('/') + '/'
- html_fragments.nav = html_fragments.make_nav()
- html_fragments.banner = html_fragments.make_banner()
- html_fragments.footer = html_fragments.make_footer()
-
- args = list(docutils_opts)
- if embed_stylesheet:
- # for embedded stylesheet
- args.append('--stylesheet-path=%s' % stylesheet)
- args.append('--embed-stylesheet')
- else:
- # for linked stylesheet
- args.append('--stylesheet=%s' % stylesheet)
- args.append('--link-stylesheet')
- if src is not None:
- args.append(src)
- if dest is not None:
- args.append(dest)
-
- # Invoke docutils processing of the reST document. This call
- # to a docutils method ends up executing the custom HTML writer
- # in docutils_htmldeco_writer.py
- description = ('Generates (X)HTML documents from standalone reStructuredText '
- 'sources, with custom banner and footer. ' + default_description)
- publish_cmdline(writer_name=rst_writer,
- description=description,
- argv=args)
-
-
-def main(argv=None):
- if argv is None:
- argv = sys.argv[1:]
-
- # parse command line options
- try:
- opts, posn_args = getopt.getopt(argv, 'he:l:u:',
- ['help',
- 'embed-stylesheet=',
- 'link-stylesheet=',
- 'url-prefix=',
- ])
- except getopt.GetoptError as msg:
- print(msg)
- print(__doc__)
- return 1
-
- # process options
- embed_stylesheet = False
- link_stylesheet = True
- stylesheet = None
- url_prefix = ''
-
- for opt, val in opts:
- if opt in ("-h", "--help"):
- print(__doc__)
- return 0
-
- if opt in ("-e", "--embed-stylesheet"):
- link_stylesheet = False
- embed_stylesheet = True
- stylesheet = val
-
- if opt in ("-l", "--link-stylesheet"):
- embed_stylesheet = False
- link_stylesheet = True
- stylesheet = val
-
- if opt in ("-u", "--url-prefix"):
- url_prefix = val
-
- #if len(posn_args) != 2:
- # print >> sys.stderr, 'Missing arguments'
- # print >> sys.stderr, __doc__
- # return 1
-
- try:
- srcfile_path = posn_args[0]
- except IndexError:
- srcfile_path = None
- try:
- outfile_path = posn_args[1]
- except IndexError:
- outfile_path = None
-
- make_html(srcfile_path, outfile_path, embed_stylesheet=embed_stylesheet,
- stylesheet=stylesheet, url_prefix=url_prefix)
- return 0
-
-
-if __name__ == '__main__':
- sys.exit(main())