ace-mode-move
Version:
Syntax highlighting for Libra's Move language (https://developers.libra.org/docs/move-paper), for Ace ( https://ace.c9.io/ )
58 lines (49 loc) • 2.42 kB
JavaScript
const download = require('download');
const writeFilePromise = require('fs-writefile-promise');
const VERSIONS = [
// legacy versions
'v1.1.8', 'v1.1.9', 'v1.2.0', 'v1.2.1', 'v1.2.2', 'v1.2.3',
// overlap with buildWithAce.js as a consistency check.
'v1.2.4', 'v1.2.5', 'v1.2.6', 'v1.2.7', 'v1.2.8', 'v1.2.9', 'v1.3.0',
'v1.3.1', 'v1.3.2', 'v1.3.3'
];
async function downloadCore(gitTag) {
let url = `https://github.com/ajaxorg/ace-builds/raw/${gitTag}/src-noconflict/ace.js`;
// let url = `https://github.com/ajaxorg/ace-builds/raw/${gitTag}/src-noconflict/mode-javascript.js`;
return (await download(url)).toString('utf8');
}
function findDefines(code) {
let defines = Object.create(null);
let match;
// ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) {
let defineRe = /ace.define\("((?:\w|\/)+)",\["require","exports","module","((?:\w|\/|",")+)"\], function\(require, exports, module\) \{/g;
while ((match = defineRe.exec(code)) !== null) {
defines[match[1]] = JSON.parse(`["${match[2]}"]`);
}
// Pseudo-"empty" list of dependencies looks like this:
// ace.define("ace/range",["require","exports","module"], function(require, exports, module) {
defineRe = /ace.define\("((?:\w|\/)+)",\["require","exports","module"\], function\(require, exports, module\) \{/g;
while ((match = defineRe.exec(code)) !== null) {
defines[match[1]] = [];
}
// Beginning with 1.3.2 the list of dependencies is truly empty. Not even "require","exports","module" anymore.
// ace.define("ace/mode/doc_comment_highlight_rules",[], function(require, exports, module) {
defineRe = /ace.define\("((?:\w|\/)+)",\[\], function\(require, exports, module\) \{/g;
while ((match = defineRe.exec(code)) !== null) {
defines[match[1]] = [];
}
return defines;
}
async function run() {
let coreFiles = Object.create(null);
for (version of VERSIONS) {
console.log(`Finding coreFiles of version ${version}.`)
coreFiles[version] = findDefines(await downloadCore(version));
let count = Object.keys(coreFiles[version]).length;
console.log(`Found ${count} coreFiles.`)
}
let jsonFileContents = JSON.stringify(coreFiles, null, 2);
jsonFileContents += "\n"; // to satisfy `git diff`
await writeFilePromise(__filename + 'on', jsonFileContents);
}
run();