From 99ce916df00929c919f6753317fabc6b5a0b88a8 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sun, 27 Apr 2014 20:47:08 +0100 Subject: [PATCH] HTML format --- README.md | 4 +-- makeJargon.py | 69 +++++++++++++++++++++++++++++++++++++++++++++++---- 2 files changed, 66 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 1a92399..a9d5645 100644 --- a/README.md +++ b/README.md @@ -17,10 +17,10 @@ As a Git repository the file isn't all that useful. You can export it in other ```bash python makeJargon.py ``` +All of the resulting documents can be found in the _docs_ subdirectory. Current formats supported are manpages, HTML and org-mode markup. + To install the manpage: ```bash sudo install -m 644 docs/jargon.1.gz /usr/local/share/man/man1 ``` - -The org-mode formatted document can be found in _docs/jargon-org.txt_ diff --git a/makeJargon.py b/makeJargon.py index 598a18c..e860baa 100755 --- a/makeJargon.py +++ b/makeJargon.py @@ -75,7 +75,7 @@ def saveLicense(fp, year, publishername): fp.write("A copy of the license is included in the section entitled \"GNU\n") fp.write("Free Documentation License\".\n\n") -def jargonWithDefinitions(text, definitions): +def jargonWithDefinitions(text, definitions, isHtml): result = '' prevpos = 0 for i in range(definitions): @@ -83,9 +83,19 @@ def jargonWithDefinitions(text, definitions): if pos > -1 and i > 0: if result != '': result = result + "\n\n" - result = result + text[prevpos:pos] + + if not isHtml: + result = result + text[prevpos:pos] + else: + result = result + "

" + text[prevpos:pos] + "

" + prevpos = pos - return result + "\n\n" + text[prevpos:] + + if not isHtml: + result = result + "\n\n" + text[prevpos:] + else: + result = result + "\n\n" + "

" + text[prevpos:] + "

" + return result def jargonToManpage(manpageFilename, entries, version, publishername): year = int(time.strftime("%Y")) @@ -109,7 +119,7 @@ def jargonToManpage(manpageFilename, entries, version, publishername): text = entry[1] definitions = jargonSubdefinitions(entry[1]) if definitions > 1: - text = jargonWithDefinitions(text, definitions) + text = jargonWithDefinitions(text, definitions, False) fp.write(".SH " + title + "\n") fp.write(text + "\n\n") @@ -150,7 +160,7 @@ def jargonToOrgMode(orgFilename, entries, version, publishername): text = entry[1] definitions = jargonSubdefinitions(entry[1]) if definitions > 1: - text = jargonWithDefinitions(text, definitions) + text = jargonWithDefinitions(text, definitions, False) if title[0:1] != subsection: subsection = title[0:1] @@ -161,9 +171,58 @@ def jargonToOrgMode(orgFilename, entries, version, publishername): fp.close() +def jargonToHTML(htmlFilename, entries, version, publishername): + year = int(time.strftime("%Y")) + + if not os.path.isdir("docs"): + os.system("mkdir docs") + + if os.path.isfile(htmlFilename): + os.system("rm " + htmlFilename) + + fp = open(htmlFilename,'w') + + fp.write("\n") + fp.write("\n") + fp.write(" \n") + fp.write(" The Jargon File\n") + fp.write(" \n") + fp.write(" \n") + fp.write("

The Jargon File

\n") + fp.write("

License

\n") + fp.write("

\n") + saveLicense(fp, year, publishername) + fp.write("

\n") + fp.write("

Glossary

\n") + + subsection = '' + for entry in entries: + title = entry[0] + text = entry[1] + + if title[0:1] != subsection: + subsection = title[0:1] + fp.write("

" + subsection.upper() + "

\n") + + fp.write("

" + title + "

\n") + + definitions = jargonSubdefinitions(entry[1]) + if definitions > 1: + text = jargonWithDefinitions(text, definitions, True) + fp.write(" " + text + "\n") + else: + fp.write("

\n") + fp.write(" " + text + "\n") + fp.write("

\n") + + fp.write(" \n"); + fp.write("\n") + fp.close() + if __name__ == "__main__": version = "x.xx" publishername = "My Name" entries = jargonGetEntries('entries') jargonToManpage("docs/jargon.1", entries, version, publishername) jargonToOrgMode("docs/jargon-org.txt", entries, version, publishername) + jargonToHTML("docs/jargon.html", entries, version, publishername)