Spaces:
Runtime error
Runtime error
| import { tokenize } from '../tokenizer/index.js'; | |
| const astToTokens = { | |
| decorator(handlers) { | |
| const tokens = []; | |
| let curNode = null; | |
| return { | |
| ...handlers, | |
| node(node) { | |
| const tmp = curNode; | |
| curNode = node; | |
| handlers.node.call(this, node); | |
| curNode = tmp; | |
| }, | |
| emit(value, type, auto) { | |
| tokens.push({ | |
| type, | |
| value, | |
| node: auto ? null : curNode | |
| }); | |
| }, | |
| result() { | |
| return tokens; | |
| } | |
| }; | |
| } | |
| }; | |
| function stringToTokens(str) { | |
| const tokens = []; | |
| tokenize(str, (type, start, end) => | |
| tokens.push({ | |
| type, | |
| value: str.slice(start, end), | |
| node: null | |
| }) | |
| ); | |
| return tokens; | |
| } | |
| export default function(value, syntax) { | |
| if (typeof value === 'string') { | |
| return stringToTokens(value); | |
| } | |
| return syntax.generate(value, astToTokens); | |
| }; | |