ace-mode-move
Version:
Syntax highlighting for Libra's Move language (https://developers.libra.org/docs/move-paper), for Ace ( https://ace.c9.io/ )
28 lines (25 loc) • 666 B
JavaScript
const recast = require('recast');
const AstTraversal = require('./astTraversal.js');
function parseRequires(code) {
let requires = [];
let ast = recast.parse(code);
let traversal = new AstTraversal(ast);
traversal.on("CallExpression", (node, stack, ast) => {
if (
('Identifier' == node.callee.type)
&&
('require' == node.callee.name)
&&
(1 === node.arguments.length)
&&
('Literal' === node.arguments[0].type)
&&
('string' === typeof node.arguments[0].value)
) {
requires.push(node.arguments[0].value);
}
});
traversal.start();
return requires;
}
module.exports = parseRequires;