Revision: linuxbios@linuxbios.org--devel/freebios--devel--2.0--patch-12
Creator:  Stefan Reinauer <stepan@openbios.org>

Add timestamp to mkOptionList.py

mkOptionList.py: add timestamp


git-svn-id: svn://svn.coreboot.org/coreboot/trunk@1930 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
diff --git a/util/optionlist/Makefile b/util/optionlist/Makefile
new file mode 100644
index 0000000..c11c80dd
--- /dev/null
+++ b/util/optionlist/Makefile
@@ -0,0 +1,7 @@
+all:
+	./mkOptionList.py
+	@#saxon  Options.xml Options.xsl >Options.html
+	xsltproc Options.xsl Options.xml > Options.html
+	
+clean:
+	rm Options.xml Options.html
diff --git a/util/optionlist/Options.xsl b/util/optionlist/Options.xsl
new file mode 100644
index 0000000..3502a24
--- /dev/null
+++ b/util/optionlist/Options.xsl
@@ -0,0 +1,54 @@
+<?xml version="1.0"?>
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+<!--<xsl:choose>
+<xsl:when test="system-property('xsl:vendor')='Transformiix'">
+-->
+<xsl:output method="xml"
+	    doctype-public="PUBLIC -//W3C//DTD XHTML 1.0 Strict//EN"
+            doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
+            encoding="utf-8"
+	    indent="yes" />
+<!--
+</xsl:when>
+<xsl:otherwise>
+<xsl:output method="xhtml"
+	    doctype-public="PUBLIC -//W3C//DTD XHTML 1.0 Strict//EN"
+            doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
+            encoding="utf-8"
+	    indent="yes" />
+</xsl:otherwise>
+</xsl:choose>
+-->
+
+<xsl:template match="/">
+<html>
+<head>
+<title>LinuxBIOS Options</title>
+</head>
+<body>
+<h2>LinuxBIOS Options</h2>
+<p>This is an automatically generated list of LinuxBIOS compile time
+options. Created at <xsl:value-of select="//creationdate"/>.</p>
+<table border="1">
+<tr bgcolor="#0975a7">
+<th align="left">Option</th>
+<th align="left">Comment</th>
+<th align="left">Default</th>
+<th align="left">Export</th>
+<th align="left">Format</th>
+</tr>
+<xsl:for-each select="options/option">
+<tr>
+<td><xsl:value-of select="@name"/></td>
+<td><xsl:value-of select="comment"/></td>
+<td><xsl:value-of select="default"/></td>
+<td><xsl:value-of select="export"/></td>
+<td><xsl:value-of select="format"/></td>
+</tr>
+</xsl:for-each>
+</table>
+</body>
+</html>
+</xsl:template>
+</xsl:stylesheet>
diff --git a/util/optionlist/README b/util/optionlist/README
new file mode 100644
index 0000000..655af61
--- /dev/null
+++ b/util/optionlist/README
@@ -0,0 +1,24 @@
+I would like to contribute the following to the LinuxBIOS wiki in case
+it's useable:
+
+1. I have written a rather small python script to convert the Options.lb
+   to a XML file which is much more useable for the web in most cases.
+
+2. I have written a XSLT to convert the XML file to (X)HTML to be able
+   to present it as a table.
+
+Florob (Florian Zeitz <florian-zeitz@lycos.de>)
+
+ChangeLog
+---------
+
+* 2005-03-19 stepan
+  - fix xml stylesheet to work with xsltproc and saxon
+  - add Makefile
+  - make script a bit more verbose
+
+* 2005-03-15 florob
+  - Initial version
+
+
+
diff --git a/util/optionlist/mkOptionList.py b/util/optionlist/mkOptionList.py
new file mode 100755
index 0000000..c91f11a
--- /dev/null
+++ b/util/optionlist/mkOptionList.py
@@ -0,0 +1,123 @@
+#!/usr/bin/python
+
+def xmlString(string):
+	for i in range(len(string)-1):
+		if string[i] == "&":
+			string = string[:i] + "&amp;" + string[i+1:]
+		if string[i] == "<":
+			string = string[:i] + "&lt;" + string[i+1:]
+		if string[i] == ">":
+			string = string[:i] + "&gt;" + string[i+1:]
+	return string
+
+def openInfile(filename):
+	"getting the input from the inputfile (e.g. Options.lb)"
+	infile = open(filename, "r")
+	infile.seek(0)
+	input = infile.readlines()
+	infile.close()
+	return input
+
+def prepInput(input):
+	"preparing the input for parsing (not really neccessary, but makes things simpler and doesnt take too long)"
+	i = -1
+	while True:
+		i += 1
+		if i >= len(input): break
+		if input[i] == ("" or "\n"):
+			input.pop(i)
+		if input[i][0:1] == "\t":
+			input[i] = input[i][1:]
+			i = -1
+	return input
+
+def parseInput(input):
+	"parse the output"
+	output = ""
+	for line in input:
+		line = xmlString(line)
+		if line[:6] == "define":
+			output = output + '<option name="' + line[7:-1] + '">' + "\n"
+		elif line[:3] == "end":
+			output = output + '</option>' + "\n\n"
+		elif line[:7] == "default":
+			output = output + '<default>' + line[8:-1] + '</default>' + "\n"
+		elif line[:6] == "format":
+			output = output + '<format>' + line[7:-1] + '</format>' + "\n"
+		elif line[:6] == "export":
+			output = output + '<export>' + line[7:-1] + '</export>' + "\n"
+		elif line[:7] == "comment":
+			output = output + '<comment>' + line[8:-1] + '</comment>' + "\n"
+	
+	return output
+
+def parseArgv():
+	"parse the given arguments"
+	import sys
+
+	In = Out = False
+
+	if len(sys.argv) >= 2:
+		if sys.argv[1] == ("-h" or "--help"):
+			print "Syntax: mkOptionList.py [infile] [outfile]"
+		else:
+			In = True
+			inFilename = sys.argv[1]
+	if len(sys.argv) >= 3:
+		if sys.argv[2] == ("-h" or "--help"):
+			print "Syntax: mkOptionList.py [infile] [outfile]"
+		else:
+			Out = True
+			outFilename = sys.argv[2]
+
+	if In and not Out:
+		return inFilename
+	elif In and Out:
+		return inFilename, outFilename
+	
+
+def main():
+	import time
+	if not parseArgv():
+		inFilename = "../../src/config/Options.lb"
+		outFilename = "Options.xml"
+	else:
+		inFilename, outFilename = parseArgv()
+	
+	input = openInfile(inFilename)
+	input = prepInput(input)
+	output = parseInput(input)
+	
+	print "mkOptionList.py: LinuxBIOS option list generator"
+	print " input file : ", inFilename
+	print " output file: ", outFilename
+	
+	#opening the output file
+	outfile = open(outFilename, "w", 0)
+
+	#write the beginning of the XML to the output file
+	outfile.write('<?xml version="1.0"?>')
+	outfile.write("\n")
+	outfile.write('<?xml-stylesheet type="text/xsl" href="Options.xsl"?>')
+	outfile.write("\n")
+	outfile.write('<options>')
+	outfile.write("\n")
+	outfile.write('<creationdate>')
+	outfile.write(time.strftime('%Y/%m/%d %H:%M:%S'))
+	outfile.write('</creationdate>')
+	outfile.write("\n")
+
+	
+	#write the parsed file to the output file
+	outfile.write(output)
+	
+	#write closing tags to the output file and close it
+	outfile.write('</options>')
+	outfile.write("\n")
+	outfile.flush()
+	outfile.close()
+
+	print "Done!"
+
+if __name__ == "__main__":
+	main()