diff options
| author | Georg Brandl <georg@python.org> | 2010-05-23 16:22:15 +0200 |
|---|---|---|
| committer | Georg Brandl <georg@python.org> | 2010-05-23 16:22:15 +0200 |
| commit | 50058db27358e6e484a4679b7fae9d507c4d4c8e (patch) | |
| tree | 361a946e347df2451d36465964dbba37d1340e75 | |
| parent | c3c6bba21450a9eb3149320e34b1e1ced08eea3b (diff) | |
| download | sphinx-git-50058db27358e6e484a4679b7fae9d507c4d4c8e.tar.gz | |
Escape all strings put into the Qt help XML files.
| -rw-r--r-- | sphinx/builders/qthelp.py | 43 |
1 files changed, 22 insertions, 21 deletions
diff --git a/sphinx/builders/qthelp.py b/sphinx/builders/qthelp.py index 082c32c3a..89bda0dcf 100644 --- a/sphinx/builders/qthelp.py +++ b/sphinx/builders/qthelp.py @@ -11,10 +11,10 @@ import os import re -import cgi import codecs import posixpath from os import path +from cgi import escape from docutils import nodes @@ -34,7 +34,7 @@ collection_template = u'''\ <?xml version="1.0" encoding="utf-8" ?> <QHelpCollectionProject version="1.0"> <assistant> - <title>%(project)s %(version)s</title> + <title>%(title)s</title> <homePage>%(homepage)s</homePage> <startPage>%(startpage)s</startPage> </assistant> @@ -154,8 +154,8 @@ class QtHelpBuilder(StandaloneHTMLBuilder): if (resourcedir and not fn.endswith('.js')) or \ fn.endswith('.html'): filename = path.join(root, fn)[olen:] - #filename = filename.replace(os.sep, '\\') # XXX - projectfiles.append(file_template % {'filename': filename}) + projectfiles.append(file_template % + {'filename': escape(filename)}) projectfiles = '\n'.join(projectfiles) # it seems that the "namespace" may not contain non-alphanumeric @@ -168,15 +168,16 @@ class QtHelpBuilder(StandaloneHTMLBuilder): # write the project file f = codecs.open(path.join(outdir, outname+'.qhp'), 'w', 'utf-8') try: - f.write(project_template % {'outname': outname, - 'title': self.config.html_title, - 'version': self.config.version, - 'project': self.config.project, - 'namespace': nspace, - 'masterdoc': self.config.master_doc, - 'sections': sections, - 'keywords': keywords, - 'files': projectfiles}) + f.write(project_template % { + 'outname': escape(outname), + 'title': escape(self.config.html_title), + 'version': escape(self.config.version), + 'project': escape(self.config.project), + 'namespace': escape(nspace), + 'masterdoc': escape(self.config.master_doc), + 'sections': sections, + 'keywords': keywords, + 'files': projectfiles}) finally: f.close() @@ -187,11 +188,11 @@ class QtHelpBuilder(StandaloneHTMLBuilder): self.info('writing collection project file...') f = codecs.open(path.join(outdir, outname+'.qhcp'), 'w', 'utf-8') try: - f.write(collection_template % {'outname': outname, - 'project': self.config.project, - 'version': self.config.version, - 'homepage': homepage, - 'startpage': startpage}) + f.write(collection_template % { + 'outname': escape(outname), + 'title': escape(self.config.html_short_title), + 'homepage': escape(homepage), + 'startpage': escape(startpage)}) finally: f.close() @@ -213,7 +214,7 @@ class QtHelpBuilder(StandaloneHTMLBuilder): if self.isdocnode(node): refnode = node.children[0][0] link = refnode['refuri'] - title = cgi.escape(refnode.astext()).replace('"','"') + title = escape(refnode.astext()).replace('"','"') item = '<section title="%(title)s" ref="%(ref)s">' % { 'title': title, 'ref': link} @@ -226,7 +227,7 @@ class QtHelpBuilder(StandaloneHTMLBuilder): parts.extend(self.write_toc(subnode, indentlevel)) elif isinstance(node, nodes.reference): link = node['refuri'] - title = cgi.escape(node.astext()).replace('"','"') + title = escape(node.astext()).replace('"','"') item = section_template % {'title': title, 'ref': link} item = ' '*4*indentlevel + item.encode('ascii', 'xmlcharrefreplace') parts.append(item.encode('ascii', 'xmlcharrefreplace')) @@ -263,7 +264,7 @@ class QtHelpBuilder(StandaloneHTMLBuilder): def build_keywords(self, title, refs, subitems): keywords = [] - title = cgi.escape(title) + title = escape(title) # if len(refs) == 0: # XXX # write_param('See Also', title) if len(refs) == 1: |
