Skip to content

Commit

Permalink
Re #6630. More on the move from lxml to minidom.
Browse files Browse the repository at this point in the history
Had to reorder parameters in the helper functions to make life a bit easier.
  • Loading branch information
peterfpeterson committed Mar 6, 2013
1 parent e30c297 commit 3a05d84
Show file tree
Hide file tree
Showing 3 changed files with 50 additions and 50 deletions.
9 changes: 5 additions & 4 deletions Code/Mantid/docs/qtassistant/assistant_common.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,19 +24,20 @@ def assertDirs(outputdir, verbose=False):
print "creating '%s'" % direc
os.makedirs(direc)

def addEle(doc, parent, tag, attrs={}):
def addEle(doc, tag, parent=None, attrs={}):
"""Assumes that the 'doc' that comes in is a xml.dom.minidom.Document
"""
ele = doc.createElement(tag)
for key in attrs.keys():
ele.setAttribute(key, attrs[key])
parent.appendChild(ele)
if parent is not None:
parent.appendChild(ele)
return ele

def addTxtEle(doc, parent, tag, text, attrs={}):
def addTxtEle(doc, tag, text, parent=None, attrs={}):
"""Assumes that the 'doc' that comes in is a xml.dom.minidom.Document
"""
ele = addEle(doc, parent, tag, attrs)
ele = addEle(doc, tag, parent, attrs)
text = doc.createTextNode(text)
ele.appendChild(text)
return ele
73 changes: 36 additions & 37 deletions Code/Mantid/docs/qtassistant/fitfunctions_help.py
Original file line number Diff line number Diff line change
@@ -1,60 +1,59 @@
from lxml import etree as le # python-lxml on rpm based systems
import lxml.html
from lxml.html import builder as lhbuilder
import os
from xml.dom.minidom import Document

from assistant_common import WEB_BASE, HTML_DIR
from assistant_common import WEB_BASE, HTML_DIR, addEle, addTxtEle

def process_function(name, qhp, outputdir, **kwargs): # was (args, algo):
import mantid.api
func = mantid.api.FunctionFactory.createFunction(name)
#print "***", func, dir(func)

root = le.Element("html")
head = le.SubElement(root, "head")
head.append(lhbuilder.META(lhbuilder.TITLE(name + " Fit Function")))
body = le.SubElement(root, "body")
body.append(lhbuilder.CENTER(lhbuilder.H1(name + " Fit Function")))
text = '<a href="%s">wiki help</a>' % (WEB_BASE+name)
body.append(lxml.html.fragment_fromstring(text))
body.append(lhbuilder.HR())

body.append(lhbuilder.H3("Summary"))

doc = Document()
root = addEle(doc, "html", doc)
head = addEle(doc, "head", root)
addTxtEle(doc, "title", name + " Fit Function", head)
body = addEle(doc, "body", root)
temp = addEle(doc, "center", body)
addTxtEle(doc, "h1", name + " Fit Function", temp)
addTxtEle(doc, "a", "wiki help", body, {"href":WEB_BASE+name})
addEle(doc, "hr", body)
addTxtEle(doc, "h3", "Summary", body)
if func.numParams() <= 0:
body.append(lhbuilder.H3("No Parameters"))
addTxtEle(doc, "h3", "No Parameters", body)
else:
body.append(lhbuilder.H3("Parameters"))
table = le.SubElement(body, "table",
**{"border":"1", "cellpadding":"5", "cellspacing":"0"})
header_row = le.SubElement(table, "tr")
header_row.append(lhbuilder.TH("Order"))
header_row.append(lhbuilder.TH("Name"))
header_row.append(lhbuilder.TH("Default"))
header_row.append(lhbuilder.TH("Explicit"))
header_row.append(lhbuilder.TH("Description"))
addTxtEle(doc, "h3", "Parameters", body)
table = addEle(doc, "table", body, {"border":"1", "cellpadding":"5", "cellspacing":"0"})
header_row = addEle(doc, "tr", table)
addTxtEle(doc, "th", "Order", header_row)
addTxtEle(doc, "th", "Name", header_row)
addTxtEle(doc, "th", "Default", header_row)
addTxtEle(doc, "th", "Explicit", header_row)
addTxtEle(doc, "th", "Description", header_row)
for number in range(func.numParams()):
row = le.SubElement(table, "tr")
row.append(lhbuilder.TD(str(number+1)))
row.append(lhbuilder.TD(func.getParamName(number)))
row.append(lhbuilder.TD(str(func.getParamValue(number))))
row.append(lhbuilder.TD(str(func.getParamExplicit(number))))
row = addEle(doc, "tr", table)
addTxtEle(doc, "td", str(number+1), row)
addTxtEle(doc, "td", func.getParamName(number), row)
addTxtEle(doc, "td", str(func.getParamValue(number)), row)
addTxtEle(doc, "td", str(func.getParamExplicit(number)), row)
descr = func.getParamDescr(number)
if len(descr) <= 0:
descr = u'\u00a0' # hack to create r'&nbsp;'
row.append(lhbuilder.TD(descr))
# u"\u00A0".encode('utf-16') # hack to create r'&nbsp;'
descr = " " # should be &nbsp
addTxtEle(doc, "td", descr, row)

cats = []
for category in func.categories():
cats.append('<a href="fitfunctions_index.html#%s">%s</a>' % (category, category))
ref = "fitfunctions_index.html#%s" % (category)
cats.append(addTxtEle(doc, "a", category, attrs={"href":ref}))
if len(cats) > 0:
text = '<p><b>Categories:</b> ' + " ".join(cats) + '</p>'
body.append(lxml.html.fragment_fromstring(text))
p = addEle(doc, "p", body)
addTxtEle(doc, "b", "Categories:", p)
for category in cats:
p.appendChild(category)

# write out the file
outfile = "FitFunc_%s.html" % name
qhp.addFile(os.path.join(HTML_DIR, outfile), name)
outfile = os.path.join(outputdir, outfile)
handle = open(outfile, 'w')
handle.write(le.tostring(root, pretty_print=True,
xml_declaration=False))
handle.write(doc.toprettyxml(indent=" ", encoding='utf-8'))
18 changes: 9 additions & 9 deletions Code/Mantid/docs/qtassistant/qhpfile.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,14 @@
class QHPFile:
def __init__(self, namespace, folder="doc"):
self.__doc = Document()
self.__root = addEle(self.__doc, self.__doc,"QtHelpProject",
self.__root = addEle(self.__doc,"QtHelpProject", self.__doc,
{"version":"1.0"})

addTxtEle(self.__doc, self.__root, "namespace", namespace)
addTxtEle(self.__doc, self.__root, "virtualFolder", folder)
addTxtEle(self.__doc, "namespace", namespace, self.__root)
addTxtEle(self.__doc, "virtualFolder", folder, self.__root)


self.__filterSect = addEle(self.__doc, self.__root, "filterSection")
self.__filterSect = addEle(self.__doc, "filterSection", self.__root)

self.__keywordsEle = None # should have 'keywords' section
self.__keywords = []
Expand All @@ -32,16 +32,16 @@ def addTOC(self, contents):
def addFile(self, filename, keyword=None):
if not keyword is None:
if self.__keywordsEle is None:
self.__keywordsEle = addEle(self.__doc, self.__filterSect,
"keywords")
self.__keywordsEle = addEle(self.__doc, "keywords",
self.__filterSect)
if not keyword in self.__keywords:
addEle(self.__doc, self.__keywordsEle, "keyword",
addEle(self.__doc, "keyword", self.__keywordsEle,
{"name":keyword, "ref":filename})
self.__keywords.append(keyword)
if self.__filesEle is None:
self.__filesEle = addEle(self.__doc, self.__filterSect, "files")
self.__filesEle = addEle(self.__doc, "files", self.__filterSect)
if not filename in self.__files:
addTxtEle(self.__doc, self.__filesEle, "file", filename)
addTxtEle(self.__doc, "file", filename, self.__filesEle)
self.__files.append(filename)

def __str__(self):
Expand Down

0 comments on commit 3a05d84

Please sign in to comment.