/** @module lib/mscript */ interface RGB extends Array { [index: number]: number; } /** class Mscript */ export default class Mscript { output: any; lines: string[]; cam: number; cam2: number; proj: number; proj2: number; color: string; loops: any[]; rec: number; two: string; three: string; four: string; arr: any[]; meta: string[]; target: number; dist: number; variables: any; /** * @constructor * Create new Mscript interpreter **/ constructor(); /** * Clear the state of the script */ clear(): void; /** * Main function, accepts multi-line string, parses into lines * and interprets the instructions from the text. Returns an array * of steps to be fed into the mcopy sequence. * * @param {string} text Mscript text to interpret * @param {function} callback Function to call when string is interpreted * * @returns {object} if callback is not provided */ interpret(text: string, callback?: Function): any; /** * Interprets variables for complex sequence behavior. * TODO: Fully implement, add test coverage * * @param {string} line Line containing a variable assignment * **/ variable(line: string): void; /** * Replace variable with value at time of interpretation * TODO: Implement this please * * @param {string} line Line containing variable to be replaced with value * * @returns {string} New string to be interpreted **/ variable_replace(line: string): string; /** * Interpret a basic two character command * * @param {string} line Line of script to interpret * @param {string} short The short command to use */ basic_cmd(line: string, short: string): void; /** * Start a new loop * * @param {string} line Line to evaluate as either loop or fade * @param {boolean} fade Flag as true if fade */ new_loop(line: string, fade?: boolean): void; /** * Close the most recent loop * * @param {string} line Line to interpret */ end_loop(line: string): void; /** * Move camera to explicitly-defined frame * * @param {string} line Line to interpret with camera move statement */ move_cam(line: string): void; /** * Move secondary camera to explicitly-defined frame * * @param {string} line Line to interpret with camera move statement */ move_cam2(line: string): void; /** * Move projector to explicitly-defined frame * * @param {string} line Line containing `move` statement to interpret */ move_proj(line: string): void; /** * Move projector to explicitly-defined frame * * @param {string} line Line containing `move` statement to interpret */ move_proj2(line: string): void; /** * Set the state of either the cam or projector * * @param line {string} String containing set statement */ set_state(line: string): void; /** * Return the last loop * * @returns {object} */ last_loop(): any; /** * Return the second-last loop * * @returns {object} Loop array */ parent_loop(): any; /** * Extract the loop count integer from a LOOP cmd * * @returns {integer} Loop count in string parsed into integer */ loop_count(str: string): number; /** * Execute a fade of frame length, from color to another color * * @param {string} line Line containing a fade initiator */ fade(line: string): void; /** * Extract the fade length integer from a FADE cmd * * @param {string} str Line containing the length of fade in frames */ fade_count(str: string): number; /** * Extract the start color from a string * * @param {string} str Line containing the start color value in a fade initiator * * @returns {array} Array containing RGB color values */ fade_start(str: string): RGB; /** * Extract the end color from a string * * @param {string} str Line containing the end color value in a fade initiator * * @returns {array} Array containing RGB color values */ fade_end(str: string): RGB; /** * Determine the state of a fade at a particular frame in the sequence, x * * @param {array} start Color the fade starts at * @param {array} end Color the fade finishes at * @param {integer} len Total length of the fade in frames * @param {integer} x Position of the fade to get color value of * * @returns {array} Array containing RGB color values */ fade_rgb(start: RGB, end: RGB, len: number, x: number): string; /** * Parse string into array of RGB color values. 0-255 octet. * * @param {string} str String containing only color values as `#,#,#` **/ rgb(str: string): RGB; /** * Cast RGB color values as string * * @param {array} arr Array to join into string * * @returns {string} String of RGB values **/ rgb_str(arr: RGB): string; /** * Increase the state of a specific object, such as the camera/projector, * by the value defined in val. * * @param {string} cmd String representing command to interpret and update state */ update(cmd: string, val?: number): void; /** * Split string on command, turn into array of commands * as long as count variable. Default 1. * * @param {string} str String to split * @param {string} cmd String representing command to split at * * @returns {array} Array containing commands */ str_to_arr(str: string, cmd: string): string[]; /** * Split a string on a command to extract data for light array * * @param {string} str String containing light command * @param {string} cmd String representing command * * @returns {array} An RGB array containing the color values */ light_to_arr(str: string, cmd: string): RGB; /** * Split a string to extract an rgb color value * * @param {string} Color string assign to color property */ light_state(str: string): void; /** * Interpret a delay command * * @param {string} line String containing delay command **/ delay(line: string): void; /** * Interpret an alert command * * @param {string} line String containing alert message **/ alert(line: string): void; /** * Interpret an pause command * * @param {string} line String containing alert message **/ pause(line: string): void; /** * Throw an error with specific message * * @param {string} msg Error message to print */ fail(msg: string): void; /** * Determine if array contains matching elements of * another array * * @param {Array} arr Original array to compare * @param {Array} arr2 Array to compare elements from * * @returns {boolean} Whether arr contains elements in arr2 **/ contains(arr: string[], arr2: string[]): boolean; } export {};