* Get the input values for the given line. * @param {array} lineData input to grab the action * @param {array} inputNames the list of input names to grab * @param {false} supportsAliases true if the input allows aliases * @param {numeric} optionalInputs number of optional inputs to check
(lineData, inputNames, supportsAliases, optionalInputs)
| 91 | * @param {numeric} optionalInputs number of optional inputs to check |
| 92 | */ |
| 93 | static getInputs(lineData, inputNames, supportsAliases, optionalInputs) { |
| 94 | supportsAliases = supportsAliases || false; |
| 95 | optionalInputs = optionalInputs || 0; |
| 96 | var res = {}; |
| 97 | |
| 98 | var totalPossibleInputs = inputNames.length; |
| 99 | if (supportsAliases) { |
| 100 | res[inputNames[totalPossibleInputs-1]] = []; |
| 101 | } |
| 102 | |
| 103 | if (lineData.length > totalPossibleInputs - optionalInputs) { |
| 104 | if (!supportsAliases && lineData.length > totalPossibleInputs + 1) { |
| 105 | console.error(`Kruiz Control: Too many inputs provided for ${lineData[0]}.\r\nExpected (${totalPossibleInputs} inputs): ${JSON.stringify(inputNames)}\r\nFound (${lineData.length - 1} inputs): ${JSON.stringify(lineData.slice(1))}`); |
| 106 | } |
| 107 | |
| 108 | lineData.forEach((item, i) => { |
| 109 | if (i != 0) { |
| 110 | if (i < totalPossibleInputs) { |
| 111 | res[inputNames[i-1]] = item; |
| 112 | } else if (i == totalPossibleInputs && supportsAliases) { |
| 113 | res[inputNames[i-1]] = lineData.slice(i); |
| 114 | } else if (i == totalPossibleInputs) { |
| 115 | res[inputNames[i-1]] = lineData.slice(i).join(' '); |
| 116 | } |
| 117 | } |
| 118 | }); |
| 119 | |
| 120 | if (Debug.All || Debug.Parser) { |
| 121 | console.error(`Values parsed from ${JSON.stringify(lineData)}: ${JSON.stringify(res)}`); |
| 122 | } |
| 123 | return res; |
| 124 | } |
| 125 | |
| 126 | console.error(`Kruiz Control: Unable to retrieve enough inputs for ${lineData[0]}.\r\nExpected (${totalPossibleInputs} inputs): ${JSON.stringify(inputNames)}\r\nFound (${lineData.length - 1} inputs): ${JSON.stringify(lineData.slice(1))}`); |
| 127 | return {}; |
| 128 | } |
| 129 | } |
no outgoing calls
no test coverage detected