Commits

Kamil Kisiel  committed 7f4e313

Get MathJax from the CDN instead of requiring a local copy.

Thanks to Wayne Allen for providing the patch.

  • Participants
  • Parent commits 71ec734

Comments (0)

Files changed (1)

File tracmathjax/tracmathjax.py

+from genshi.builder import tag
+from genshi.filters import Transformer
+
 from trac.core import Component, implements
-from trac.web.api import IRequestFilter
-from trac.web.chrome import ITemplateProvider, add_script
 from trac.wiki.api import IWikiSyntaxProvider, IWikiMacroProvider
-import os.path
+from trac.web.api import ITemplateStreamFilter
 
 MACRO_DESCRIPTION = \
 """Renders a LaTeX using MathJax.
 
 
 class TracMathJax(Component):
-    implements(ITemplateProvider,
-               IRequestFilter,
-               IWikiSyntaxProvider,
-               IWikiMacroProvider)
+    implements(IWikiSyntaxProvider,
+               IWikiMacroProvider,
+               ITemplateStreamFilter)
 
-    def __init__(self):
-        self.mathjax_path = os.path.abspath(self.config.get('tracmathjax', 'mathjax_path'))
-        self.log.debug("MathJax path: %s" % self.mathjax_path)
-        if not os.path.exists(os.path.join(self.mathjax_path, MATHJAX_JS)):
-            self.log.error("Could not find a MathJax install at %s" % self.mathjax_path)
-
-    # ITemplateProvider methods
-    def get_htdocs_dirs(self):
-        return [(MATHJAX_DIR, self.mathjax_path)]
-
-    def get_templates_dirs(self):
-        # we have no templates
-        return []
-
-    # IRequestFilter methods
-    def pre_process_request(self, req, handler):
-        return handler
-
-    def post_process_request(self, req, template, data, content_type):
-        add_script(req, "/chrome/%s/%s" % (MATHJAX_DIR, MATHJAX_JS))
-        return template, data, content_type
+    # ITemplateStreamFilter methods
+    def filter_stream(self, req, method, filename, stream, data):
+        address = tag.script(type="text/javascript", src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML")
+        stream |= Transformer('.//head').append(address)
+        return stream
 
     # IWikiSyntaxProvider methods
     def get_wiki_syntax(self):