From 0c62c08abdecb621d773c56605dedba8fee12dea Mon Sep 17 00:00:00 2001 From: Ben Page Date: Wed, 28 Sep 2016 13:56:23 -0500 Subject: [PATCH] fixed css, sequenceConfig, and ganttConfig being sent as buffer to phantomjs made verbose cli argument a boolean --- lib/cli.js | 40 ++++++++++++++------------ lib/index.js | 2 +- lib/phantomscript.js | 64 +++++++++++++---------------------------- test/cli_test-output.js | 10 +++++-- 4 files changed, 50 insertions(+), 66 deletions(-) diff --git a/lib/cli.js b/lib/cli.js index ed037a5898..db28e62e49 100644 --- a/lib/cli.js +++ b/lib/cli.js @@ -29,7 +29,7 @@ function cli(options) { , css: 't' , width: 'w' } - , 'boolean': ['help', 'png', 'svg'] + , 'boolean': ['help', 'png', 'svg', 'verbose'] , 'string': ['outputDir'] } @@ -94,25 +94,38 @@ cli.prototype.parse = function(argv, next) { else { options.png = true } - + if (options.sequenceConfig) { - options.sequenceConfig = checkConfig(options.sequenceConfig) + try { + fs.accessSync(options.sequenceConfig, fs.R_OK) + + } catch (err) { + this.errors.push(err) + } + } else { + options.sequenceConfig = null } - + if (options.ganttConfig) { - options.ganttConfig = checkConfig(options.ganttConfig) + try { + fs.accessSync(options.ganttConfig, fs.R_OK) + + } catch (err) { + this.errors.push(err) + } + } else { + options.ganttConfig = null } if (options.css) { try { - options.css = fs.readFileSync(options.css, 'utf8') - + fs.accessSync(options.css, fs.R_OK) } catch (err) { this.errors.push(err) } } else { - options.css = fs.readFileSync(path.join(__dirname, '..', 'dist', 'mermaid.css')) + options.css = path.join(__dirname, '..', 'dist', 'mermaid.css') } // set svg/png flags appropriately @@ -136,17 +149,6 @@ cli.prototype.parse = function(argv, next) { } } -function checkConfig(configPath) { - try { - var text = fs.readFileSync(configPath, 'utf8'); - JSON.parse(text) - return text - } catch (e) { - console.log(e); - return null; - } -} - function createCheckPhantom(_phantomPath) { var phantomPath = _phantomPath , phantomVersion diff --git a/lib/index.js b/lib/index.js index a7dd65e704..5da3683b25 100644 --- a/lib/index.js +++ b/lib/index.js @@ -18,7 +18,7 @@ function processMermaid(files, _options, _next) { , outputDir , options.png , options.svg - , options.css || '' + , options.css , options.sequenceConfig , options.ganttConfig , options.verbose diff --git a/lib/phantomscript.js b/lib/phantomscript.js index cd4ce259c2..5555915835 100644 --- a/lib/phantomscript.js +++ b/lib/phantomscript.js @@ -28,7 +28,6 @@ var system = require('system') , fs = require('fs') , webpage = require('webpage') - var page = webpage.create() , files = system.args.slice(9, system.args.length) , width = system.args[8] @@ -40,21 +39,15 @@ var options = { outputDir: system.args[1] , png: system.args[2] === 'true' ? true : false , svg: system.args[3] === 'true' ? true : false - , css: system.args[4] !== '' ? system.args[4] : '* { margin: 0; padding: 0; }' - , sequenceConfig: system.args[5] - , ganttConfig: system.args[6] + , css: fs.read(system.args[4]) + , sequenceConfig: system.args[5] !== 'null' ? JSON.parse(fs.read(system.args[5])) : '{}' + , ganttConfig: system.args[6] !== 'null' ? fs.read(system.args[6]) : '{}' , verbose: system.args[7] === 'true' ? true : false , width: width } , log = logger(options.verbose) - // If no css is suuplied make sure a fixed witdth is given to the gant renderer - if(system.args[3] !== ''){ - if(typeof options.ganttConfig === 'undefined'){ - options.ganttConfig = {}; - } - options.ganttConfig.useWidth = 1200; - } +options.sequenceConfig.useMaxWidth = false; page.content = [ '' @@ -218,7 +211,7 @@ function resolveForeignObjects(element) { function executeInPage(data) { var xmlSerializer = new XMLSerializer() , contents = data.contents - , sequenceConfig = data.sequenceConfig + , sequenceConfig = JSON.stringify(data.sequenceConfig) , ganttConfig = data.ganttConfig , toRemove , el @@ -229,7 +222,7 @@ function executeInPage(data) { , width , height , confWidth = data.confWidth - + toRemove = document.getElementsByClassName('mermaid') if (toRemove && toRemove.length) { for (var i = 0, len = toRemove.length; i < len; i++) { @@ -242,41 +235,24 @@ function executeInPage(data) { elContent = document.createTextNode(contents) el.appendChild(elContent) //el.innerText = 'hello\uD800' //contents; - + document.body.appendChild(el) - - mermaid.initialize({ - sequenceDiagram:{useMaxWidth:false}, - flowchart:{useMaxWidth:false}, - logLevel:1 - }); + + var config = { + sequenceDiagram: sequenceConfig, + flowchart: {useMaxWidth: false}, + logLevel: 1 + }; + + mermaid.initialize(config); + //console.log('after initialize',sequenceConfig); - if(typeof sequenceConfig !== undefined && sequenceConfig !== 'undefined'){ - //sc = document.createElement("script") - //scContent = document.createTextNode('mermaid.sequenceConfig = JSON.parse(' + JSON.stringify(sequenceConfig) + ');') - //sc.appendChild(scContent) + sc = document.createElement("script") + scContent = document.createTextNode('mermaid.ganttConfig = ' + ganttConfig + ';') + sc.appendChild(scContent) - //document.body.appendChild(sc) - mermaid.initialize({ - sequenceDiagram:JSON.parse(sequenceConfig) - }); - } - - //console.log('after initialize 2'); - if(typeof ganttConfig !== undefined && ganttConfig !== 'undefined'){ - sc = document.createElement("script") - scContent = document.createTextNode('mermaid.ganttConfig = JSON.parse(' + JSON.stringify(ganttConfig) + ');') - sc.appendChild(scContent) - - document.body.appendChild(sc) - }else{ - sc = document.createElement("script") - scContent = document.createTextNode('mermaid.ganttConfig = {useWidth:1200};') - sc.appendChild(scContent) - - document.body.appendChild(sc) - } + document.body.appendChild(sc) mermaid.init(); diff --git a/test/cli_test-output.js b/test/cli_test-output.js index befaa0f084..775193e27a 100644 --- a/test/cli_test-output.js +++ b/test/cli_test-output.js @@ -24,12 +24,18 @@ var singleFile = { , outputDir: path.join(process.cwd(),'test/tmp2/') , phantomPath: path.join(process.cwd(),phantomCmd) , width : 1200 + , css: path.join(__dirname, '..', 'dist', 'mermaid.css') + , sequenceConfig: null + , ganttConfig: null } , multiFile = { files: [path.join('test','fixtures','test.mermaid'), path.join('test','fixtures','test2.mermaid')] , outputDir: 'test/tmp2/' , phantomPath: path.join(process.cwd(),phantomCmd) , width : 1200 + , css: path.join(__dirname, '..', 'dist', 'mermaid.css') + , sequenceConfig: null + , ganttConfig: null } @@ -40,7 +46,7 @@ test('output of single png', function(t) { opt = clone(singleFile) opt.png = true - + mermaid.process(opt.files, opt, function(code) { t.equal(code, 0, 'has clean exit code') @@ -113,7 +119,7 @@ test('output including CSS', function(t) { one = fs.statSync(filename) //console.log('one: '+opt.files[0]); - opt2.css = fs.readFileSync(path.join('test','fixtures','test.css'), 'utf8') + opt2.css = path.join('test','fixtures','test.css') //console.log(opt2.css); console.log('Generating #2');