UNPKG

genish.js

Version:
64 lines (46 loc) 1.22 kB
'use strict' 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 }