UNPKG

mathmlben

Version:

Visualization for goldstandard

57 lines (52 loc) 1.95 kB
var BB = require('bluebird'); var fs = BB.promisifyAll(require('fs')); var parseAsync = BB.method(JSON.parse); var goldDir = '../data'; var zillaDir = '../data/mathematica'; var pd = require('pretty-data').pd; var spawn = require('child-process-promise').spawn; console.log('Done init...'); if (!fs.existsSync(zillaDir)) { console.log('Create zilla dir.'); fs.mkdirSync(zillaDir); } fs.readdirAsync(goldDir).map(function (name) { var path = goldDir + '/' + name; var num = name.split('.')[0]; if (fs.statSync(path).isFile()) { return fs.readFileAsync(path, 'utf8') .then(function (content) { return parseAsync(content); }) .then(function (json) { console.log(); console.log('Parse ' + num + ':'); try { var tex = json.math_inputtex; console.log('Actual: ' + tex); tex = tex.replace(/%(?:\r\n|\r|\n)/g, ''); tex = tex.replace(/^(\\\[)?(\\[.,;!]+)*|[.,;!]*(\\[.,;!]+)*(\\])?$/g, ''); console.log('Replace:' + tex); } catch (err) { console.log('Skip ' + num + ': ' + err.message); } return tex; }).then(tex => { fs.writeFileAsync( zillaDir + "/" + num + ".tex", tex ); return spawn('wolframscript', ['-file', 'tex2mml.wl', tex], { capture: [ 'stdout', 'stderr' ]}).then(result => { const stdOut = result.stdout.toString(); if (stdOut){ console.log("Successfully parsed " + num); var prettyMML = pd.xml(stdOut); console.log("Successfully prettify MML."); return fs.writeFileAsync( zillaDir + "/" + num + ".mml", prettyMML ); } else { throw result.stderr.toString(); } }); } ); } else { console.log('Skip directory ' + name); } },{concurrency: 1}); //Otherwise, runtime errors occur: Mathematia complains about a missing license