.replace(/\.\./g, '.') .split('.') .map(part => _.defaultTo(_.toNumber(part), part));
alignCommand() { // text align [<place id> (left | center | right) (top | middle | bottom) [<rotation>] let location = _.defaultTo(this.location, defaults.location) let horizontalAlign = _.defaultTo(this.horizontalAlign, defaultsBasedOnLocation[location].horizontalAlign) let verticalAlign = _.defaultTo(this.verticalAlign, defaultsBasedOnLocation[location].verticalAlign) let parameters = [horizontalAlign, verticalAlign] if (this.rotation) parameters.push(this.rotation) return `text align ${this.id} ${parameters.join(' ')}` }
backgroundCommand() { // text backgr [<place id> [ <l_pad> <r_pad> <t_pad> <b_pad> [<red> <green> <blue> <alpha>]]] // <place id> only deletes backgr entry let parameters = ['id', 'backgroundLeftPad', 'backgroundRightPad', 'backgroundTopPad', 'backgroundBottomPad', 'backgroundRed', 'backgroundGreen', 'backgroundBlue', 'backgroundAlpha'] let values = {} parameters.forEach(p => { values[p] = _.defaultTo(this[p], defaults[p]) }) return `text backgr ${parameters.map(f => values[f]).join(' ')}` }
placeCommand() { // text place [<place id> [<string_id> <font_id> <x> <y> [<red> <green> <blue> [<alpha> [(n | s | e | w | c | ne | nw | se | sw)]]]]] let values = { id: this.id } values.location = _.defaultTo(this.location, defaults.location) values.x = _.defaultTo(this.x, defaultsBasedOnLocation[values.location].x) values.y = _.defaultTo(this.y, defaultsBasedOnLocation[values.location].y) let colourFields = ['red', 'green', 'blue', 'alpha'] colourFields.forEach(c => { values[c] = _.defaultTo(this[c], defaults[c]) if (values[c] === 1) values[c] = '1.0' }) let parameters = ['id', 'id', 'id', 'x', 'y', 'red', 'green', 'blue', 'alpha', 'location'] return `text place ${parameters.map(f => values[f]).join(' ')}` }