genish.js
Version:
55 lines (42 loc) • 991 B
JavaScript
const gen = require('./gen.js')
const proto = {
basename: 'mul',
gen() {
let inputs = gen.getInputs( this ),
out = ` var ${this.name} = `,
sum = 1, numCount = 0, mulAtEnd = false, alreadyFullSummed = true
inputs.forEach( (v,i) => {
if( isNaN( v ) ) {
out += v
if( i < inputs.length -1 ) {
mulAtEnd = true
out += ' * '
}
alreadyFullSummed = false
}else{
if( i === 0 ) {
sum = v
}else{
sum *= parseFloat( v )
}
numCount++
}
})
if( numCount > 0 ) {
out += mulAtEnd || alreadyFullSummed ? sum : ' * ' + sum
}
out += '\n'
gen.memo[ this.name ] = this.name
return [ this.name, out ]
}
}
module.exports = ( ...args ) => {
const mul = Object.create( proto )
Object.assign( mul, {
id: gen.getUID(),
inputs: args,
})
mul.name = mul.basename + mul.id
return mul
}