Source code for oncilla.reStructuredTextToHtml
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
**reStructuredTextToHtml.py**
**Platform:**
Windows, Linux, Mac Os X.
**Description:**
Converts a reStructuredText file to html.
**Others:**
"""
#**********************************************************************************************************************
#*** Future imports.
#**********************************************************************************************************************
from __future__ import unicode_literals
#**********************************************************************************************************************
#*** Encoding manipulations.
#**********************************************************************************************************************
import sys
def _setEncoding():
"""
Sets the Application encoding.
"""
reload(sys)
sys.setdefaultencoding("utf-8")
_setEncoding()
#**********************************************************************************************************************
#*** External imports.
#**********************************************************************************************************************
import argparse
import os
#**********************************************************************************************************************
#*** Internal imports.
#**********************************************************************************************************************
import foundations.decorators
import foundations.verbose
from foundations.io import File
#**********************************************************************************************************************
#*** Module attributes.
#**********************************************************************************************************************
__author__ = "Thomas Mansencal"
__copyright__ = "Copyright (C) 2008 - 2014 - Thomas Mansencal"
__license__ = "GPL V3.0 - http://www.gnu.org/licenses/"
__maintainer__ = "Thomas Mansencal"
__email__ = "thomas.mansencal@gmail.com"
__status__ = "Production"
__all__ = ["LOGGER",
"RESOURCES_DIRECTORY",
"CSS_FILE",
"TIDY_SETTINGS_FILE",
"RST2HTML",
"reStructuredTextToHtml",
"getCommandLineArguments",
"main"]
LOGGER = foundations.verbose.installLogger()
RESOURCES_DIRECTORY = os.path.join(os.path.dirname(__file__), "resources")
CSS_FILE = os.path.join(RESOURCES_DIRECTORY, "css", "style.css")
TIDY_SETTINGS_FILE = os.path.join(RESOURCES_DIRECTORY, "tidy", "tidySettings.rc")
RST2HTML = "rst2html.py"
foundations.verbose.getLoggingConsoleHandler()
foundations.verbose.setVerbosityLevel(3)
#**********************************************************************************************************************
#*** Module classes and definitions.
#**********************************************************************************************************************
[docs]def reStructuredTextToHtml(input, output, cssFile):
"""
Outputs a reStructuredText file to html.
:param input: Input reStructuredText file to convert.
:type input: unicode
:param output: Output html file.
:type output: unicode
:param cssFile: Css file.
:type cssFile: unicode
:return: Definition success.
:rtype: bool
"""
LOGGER.info("{0} | Converting '{1}' reStructuredText file to html!".format(reStructuredTextToHtml.__name__, input))
os.system("{0} --stylesheet-path='{1}' '{2}' > '{3}'".format(RST2HTML,
os.path.join(os.path.dirname(__file__), cssFile),
input,
output))
LOGGER.info("{0} | Formatting html file!".format("Tidy"))
os.system("tidy -config {0} -m '{1}'".format(os.path.join(os.path.dirname(__file__), TIDY_SETTINGS_FILE), output))
file = File(output)
file.cache()
LOGGER.info("{0} | Replacing spaces with tabs!".format(reStructuredTextToHtml.__name__))
file.content = [line.replace(" " * 4, "\t") for line in file.content]
file.write()
return True
[docs]def getCommandLineArguments():
"""
Retrieves command line arguments.
:return: Namespace.
:rtype: Namespace
"""
parser = argparse.ArgumentParser(add_help=False)
parser.add_argument("-h",
"--help",
action="help",
help="'Displays this help message and exit.'")
parser.add_argument("-i",
"--input",
type=unicode,
dest="input",
help="'Input reStructuredText file to convert.'")
parser.add_argument("-o",
"--output",
type=unicode,
dest="output",
help="'Output html file.'")
parser.add_argument("-c",
"--cssFile",
type=unicode,
dest="cssFile",
help="'Css file.'")
if len(sys.argv) == 1:
parser.print_help()
sys.exit(1)
return parser.parse_args()
# Oncilla: Statement commented by auto-documentation process:
# Oncilla: Statement commented by auto-documentation process: @foundations.decorators.systemExit
[docs]def main():
"""
Starts the Application.
:return: Definition success.
:rtype: bool
"""
args = getCommandLineArguments()
args.cssFile = args.cssFile if foundations.common.pathExists(args.cssFile) else CSS_FILE
return reStructuredTextToHtml(args.input,
args.output,
args.cssFile)
# Oncilla: Statement commented by auto-documentation process:
# Oncilla: Statement commented by auto-documentation process: if __name__ == "__main__":
# Oncilla: Statement commented by auto-documentation process: main()
# Oncilla: Statement commented by auto-documentation process: