(parser)
| 70 | } |
| 71 | |
| 72 | static parse(parser) { |
| 73 | if (!parser.matchToken("js")) return; |
| 74 | // Parse inputs |
| 75 | var inputs = []; |
| 76 | if (parser.matchOpToken("(")) { |
| 77 | if (parser.matchOpToken(")")) { |
| 78 | // empty input list |
| 79 | } else { |
| 80 | do { |
| 81 | var inp = parser.requireTokenType("IDENTIFIER"); |
| 82 | inputs.push(inp.value); |
| 83 | } while (parser.matchOpToken(",")); |
| 84 | parser.requireOpToken(")"); |
| 85 | } |
| 86 | } |
| 87 | |
| 88 | var jsBody = parser.requireElement("jsBody"); |
| 89 | parser.matchToken("end"); |
| 90 | |
| 91 | var func = new Function(...inputs, jsBody.jsSource); |
| 92 | |
| 93 | return new JsCommand(jsBody.jsSource, func, inputs); |
| 94 | } |
| 95 | |
| 96 | resolve(context) { |
| 97 | var args = this.inputs.map(input => context.meta.runtime.resolveSymbol(input, context, 'local')); |
nothing calls this directly
no test coverage detected