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); | |
}; | |