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