Don't create Javascript by ourselves, we have sphinx.util.jsonimpl.dumps for that

This commit is contained in:
Daniel Neuhäuser 2010-08-10 20:09:07 +02:00
parent 023f342bed
commit 9545df0d56

View File

@ -11,6 +11,7 @@
import sys import sys
import cPickle as pickle import cPickle as pickle
import posixpath
from os import path from os import path
from datetime import datetime from datetime import datetime
@ -18,6 +19,7 @@ from jinja2 import Environment, FileSystemLoader
from sphinx.application import Sphinx from sphinx.application import Sphinx
from sphinx.util.osutil import ensuredir from sphinx.util.osutil import ensuredir
from sphinx.util.jsonimpl import dumps as dump_json
from sphinx.websupport.search import BaseSearch, search_adapters from sphinx.websupport.search import BaseSearch, search_adapters
from sphinx.websupport.storage import StorageBackend from sphinx.websupport.storage import StorageBackend
from sphinx.websupport.errors import * from sphinx.websupport.errors import *
@ -352,33 +354,28 @@ class WebSupport(object):
that remains the same throughout the lifetime of the that remains the same throughout the lifetime of the
:class:`~sphinx.websupport.WebSupport` object. :class:`~sphinx.websupport.WebSupport` object.
""" """
parts = ['<script type="text/javascript">', comment_urls = [
'var COMMENT_OPTIONS = {'] ('addCommentURL', 'add_comment'),
if self.docroot is not '': ('getCommentsURL', 'get_comments'),
parts.append('addCommentURL: "/%s/%s",' % (self.docroot, ('processVoteURL', 'process_vote'),
'add_comment')) ('acceptCommentURL', 'accept_comment'),
parts.append('getCommentsURL: "/%s/%s",' % (self.docroot, ('rejectCommentURL', 'reject_comment'),
'get_comments')) ('deleteCommentURL', 'delete_comment')
parts.append('processVoteURL: "/%s/%s",' % (self.docroot, ]
'process_vote')) static_urls = [
parts.append('acceptCommentURL: "/%s/%s",' % (self.docroot, ('commentImage', 'comment.png'),
'accept_comment')) ('commentBrightImage', 'comment-bright.png'),
parts.append('rejectCommentURL: "/%s/%s",' % (self.docroot, ('upArrow', 'up.png'),
'reject_comment')) ('upArrowPressed', 'up-pressed.png'),
parts.append('deleteCommentURL: "/%s/%s",' % (self.docroot, ('downArrow', 'down.png'),
'delete_comment')) ('downArrowPressed', 'down-pressed.png')
]
if self.staticdir != 'static': self.base_comment_opts = {}
p = lambda file: '%s/_static/%s' % (self.staticdir, file) for key, value in comment_urls:
parts.append('commentImage: "/%s",' % p('comment.png') ) self.base_comment_opts[key] = posixpath.join(self.docroot, value)
parts.append( for key, value in static_urls:
'commentBrightImage: "/%s",' % p('comment-bright.png') ) self.base_comment_opts[key] = posixpath.join(self.staticdir, value)
parts.append('upArrow: "/%s",' % p('up.png'))
parts.append('downArrow: "/%s",' % p('down.png'))
parts.append('upArrowPressed: "/%s",' % p('up-pressed.png'))
parts.append('downArrowPressed: "/%s",' % p('down-pressed.png'))
self.base_comment_opts = '\n'.join(parts)
def _make_comment_options(self, username, moderator): def _make_comment_options(self, username, moderator):
"""Helper method to create the parts of the COMMENT_OPTIONS """Helper method to create the parts of the COMMENT_OPTIONS
@ -388,19 +385,22 @@ class WebSupport(object):
:param moderator: Whether the user making the request is a moderator. :param moderator: Whether the user making the request is a moderator.
""" """
parts = [self.base_comment_opts] parts = [self.base_comment_opts]
if username is not '': rv = self.base_comment_opts.copy()
parts.append('voting: true,') if username:
parts.append('username: "%s",' % username) rv.update({
parts.append('moderator: %s' % str(moderator).lower()) 'voting': True,
parts.append('};') 'username': username,
parts.append('</script>') 'moderator': str(moderator).lower(),
return '\n'.join(parts) })
return '\n'.join([
'<script type="text/javascript">',
'var COMMENT_OPTIONS = %s;' % dump_json(rv),
'</script>'
])
def _make_metadata(self, data): def _make_metadata(self, data):
node_js = ', '.join(['%s: %s' % (node_id, comment_count) return '\n'.join([
for node_id, comment_count in data.iteritems()]) '<script type="text/javascript">',
js = """ 'var COMMENT_METADATA = %s;' % dump_json(data),
<script type="text/javascript"> '</script>'
var COMMENT_METADATA = {%s}; ])
</script>""" % node_js
return js