summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeorg Brandl <georg@python.org>2010-05-23 16:22:15 +0200
committerGeorg Brandl <georg@python.org>2010-05-23 16:22:15 +0200
commit50058db27358e6e484a4679b7fae9d507c4d4c8e (patch)
tree361a946e347df2451d36465964dbba37d1340e75
parentc3c6bba21450a9eb3149320e34b1e1ced08eea3b (diff)
downloadsphinx-git-50058db27358e6e484a4679b7fae9d507c4d4c8e.tar.gz
Escape all strings put into the Qt help XML files.
-rw-r--r--sphinx/builders/qthelp.py43
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('"','&quot;')
+ title = escape(refnode.astext()).replace('"','&quot;')
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('"','&quot;')
+ title = escape(node.astext()).replace('"','&quot;')
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: