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