Cscott has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/148591

Change subject: Use `texvcjs` package to validate/translate math markup.
......................................................................

Use `texvcjs` package to validate/translate math markup.

Change-Id: Ibeaaa85cd20aea444d905b263503e3af19329855
---
M lib/index.js
M package.json
2 files changed, 19 insertions(+), 12 deletions(-)


  git pull 
ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Collection/OfflineContentGenerator/latex_renderer
 refs/changes/91/148591/1

diff --git a/lib/index.js b/lib/index.js
index 49b9ba9..287c79c 100644
--- a/lib/index.js
+++ b/lib/index.js
@@ -12,6 +12,7 @@
 var gammalatex = require('gammalatex');
 var path = require('path');
 var stream = require('stream');
+var texvcjs = require('texvcjs');
 var tmp = require('tmp');
 var ubidi = require('icu-bidi');
 var url = require('url');
@@ -990,21 +991,26 @@
 };
 
 Visitor.prototype['visitTYPEOF=mw:Extension/math'] = function(node, display) {
-       // xxx: sanitize this string the same way the math extension does
-
        this.format.envBreak();
        var math = JSON.parse(node.getAttribute('data-mw')).body.extsrc;
-       var m = 
/^(\s*\\begin\s*\{\s*(?:eqnarray|equation|align|gather|falign|multiline|alignat))[*]?(\s*\}[\s\S]*\\end\s*\{[^\}*]+)[*]?(\}\s*)$/.exec(math);
-       if (m) {
-               // math expression contains its own environment
-               // ensure we're using the * form so we don't get equation 
numbers
-               this.format.writeDecorated(m[1]+'*'+m[2]+'*'+m[3]);
-               this.format.envBreak();
-               return;
+    // validate/translate using texvc
+       var mr = texvcjs.check(math);
+       if (mr.status !== '+') {
+               //console.warn("Broken math markup:", math, mr.details||'');
+               return; // broken math markup, suppress it
        }
-       var delimit = display ? '$$' : '$';
-       this.format.writeDecorated(delimit + math + delimit);
-       this.format.envBreak();
+       if (display) {
+               this.format.begin('equation*'); // suppress equation numbers
+       } else {
+               this.format.writeDecorated('$');
+       }
+       this.format.writeDecorated(mr.output);
+       if (display) {
+               this.format.end('equation*');
+       } else {
+               this.format.writeDecorated('$');
+               this.format.envBreak();
+       }
 };
 
 Visitor.prototype['visitLANG='] = function(node) {
diff --git a/package.json b/package.json
index f2495d7..dc28d26 100644
--- a/package.json
+++ b/package.json
@@ -30,6 +30,7 @@
     "prfun": "~1.0.0",
     "readable-stream": "~1.0.0",
     "sqlite3": "~2.2.3",
+    "texvcjs": "cscott/texvcjs#382539090bda00eee371dee42f530cee0c0caeda",
     "tmp": "~0.0.24"
   },
   "devDependencies": {

-- 
To view, visit https://gerrit.wikimedia.org/r/148591
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ibeaaa85cd20aea444d905b263503e3af19329855
Gerrit-PatchSet: 1
Gerrit-Project: 
mediawiki/extensions/Collection/OfflineContentGenerator/latex_renderer
Gerrit-Branch: master
Gerrit-Owner: Cscott <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to