MDL-65394 filter: only do mathjax parsing on strings that need it
authorRyan Wyllie <ryan@moodle.com>
Mon, 15 Apr 2019 05:02:41 +0000 (13:02 +0800)
committerRyan Wyllie <ryan@moodle.com>
Wed, 1 May 2019 08:27:34 +0000 (16:27 +0800)
filter/mathjaxloader/filter.php

index 0906e18..9fab93b 100644 (file)
@@ -140,7 +140,13 @@ class filter_mathjaxloader extends moodle_text_filter {
         if ($hasextra) {
             // If custom dilimeters are used, wrap whole text to prevent autolinking.
             $text = '<span class="nolink">' . $text . '</span>';
-        } else {
+        } else if (preg_match('/\\\\[[(]/', $text) || preg_match('/\$\$/', $text)) {
+            // Only parse the text if there are mathjax symbols in it. The recognized
+            // math environments are \[ \] and $$ $$ for display mathematics and \( \)
+            // for inline mathematics.
+            // Note: 2 separate regexes seems to perform better here than using a single
+            // regex with groupings.
+
             // Wrap display and inline math environments in nolink spans.
             // Do not wrap nested environments, i.e., if inline math is nested
             // inside display math, only the outer display math is wrapped in