genish.js
Version:
64 lines (46 loc) • 1.22 kB
JavaScript
const gen = require('./gen.js')
const proto = {
basename:'sub',
gen() {
let inputs = gen.getInputs( this ),
out=0,
diff = 0,
needsParens = false,
numCount = 0,
lastNumber = inputs[ 0 ],
lastNumberIsUgen = isNaN( lastNumber ),
subAtEnd = false,
hasUgens = false,
returnValue = 0
this.inputs.forEach( value => { if( isNaN( value ) ) hasUgens = true })
out = ' var ' + this.name + ' = '
inputs.forEach( (v,i) => {
if( i === 0 ) return
let isNumberUgen = isNaN( v ),
isFinalIdx = i === inputs.length - 1
if( !lastNumberIsUgen && !isNumberUgen ) {
lastNumber = lastNumber - v
out += lastNumber
return
}else{
needsParens = true
out += `${lastNumber} - ${v}`
}
if( !isFinalIdx ) out += ' - '
})
out += '\n'
returnValue = [ this.name, out ]
gen.memo[ this.name ] = this.name
return returnValue
}
}
module.exports = ( ...args ) => {
let sub = Object.create( proto )
Object.assign( sub, {
id: gen.getUID(),
inputs: args
})
sub.name = 'sub' + sub.id
return sub
}