Merge pull request #839 from slavaGanzin/master

cli: inline evaluate
This commit is contained in:
Jos de Jong 2017-05-08 19:55:16 +02:00 committed by GitHub
commit 0dfd667d0d
4 changed files with 56 additions and 6 deletions

View File

@ -22,6 +22,7 @@
*
* Example usage:
* mathjs Open a command prompt
* mathjs 1+2 Evaluate expression
* mathjs script.txt Run a script file
* mathjs script1.txt script2.txt Run two script files
* mathjs script.txt > results.txt Run a script file, output to file
@ -336,7 +337,7 @@ function outputHelp() {
console.log('functions, and a flexible expression parser.');
console.log();
console.log('Usage:');
console.log(' mathjs [scriptfile(s)] {OPTIONS}');
console.log(' mathjs [scriptfile(s)|expression] {OPTIONS}');
console.log();
console.log('Options:');
console.log(' --version, -v Show application version');
@ -348,6 +349,7 @@ function outputHelp() {
console.log();
console.log('Example usage:');
console.log(' mathjs Open a command prompt');
console.log(' mathjs 1+2 Evaluate expression');
console.log(' mathjs script.txt Run a script file');
console.log(' mathjs script.txt script2.txt Run two script files');
console.log(' mathjs script.txt > results.txt Run a script file, output to file');
@ -420,9 +422,15 @@ else if (scripts.length === 0) {
runStream(process.stdin, process.stdout, mode, parenthesis);
}
else {
//work through the queue of scripts
scripts.forEach(function (arg) {
// run a script file
runStream(fs.createReadStream(arg), process.stdout, mode, parenthesis);
});
fs.stat(scripts[0], function(e, f) {
if (e) {
console.log(getMath().eval(scripts.join(' ')).toString())
} else {
//work through the queue of scripts
scripts.forEach(function (arg) {
// run a script file
runStream(fs.createReadStream(arg), process.stdout, mode, parenthesis);
});
}
})
}

40
test/cli/cli.js Normal file
View File

@ -0,0 +1,40 @@
var assert = require('assert')
var cp = require('child_process')
function run(args, done) {
cp.exec('bin/cli.js "' + args +'"', function(e,r) {
done(e, r.replace(/\n$/g, ''))
})
}
describe('evaluate expression', function() {
it('should sum numbers', function(done) {
run('1+1', function(e, result) {
assert.equal(result, 2)
done()
})
})
it('should multiply matrices', function(done) {
run('[1,2] * [3,4]', function(e, result) {
assert.equal(result, 11)
done()
})
})
it('should thow error', function(done) {
run('y=x', function(e, result) {
assert.equal(/^Error/g.test(e.toString()),true)
done()
})
})
it('should interpret scripts', function(done) {
run('test/cli/script1" "test/cli/script2', function(e, result){
result = result.split('\n')
assert.equal(result[0], 2)
assert.equal(result[1], 8)
done()
})
})
})

1
test/cli/script1 Normal file
View File

@ -0,0 +1 @@
1+1

1
test/cli/script2 Normal file
View File

@ -0,0 +1 @@
2*4