add-cms
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
const fs = require('fs-extra');
|
||||
const path = require('path');
|
||||
const yaml = require('js-yaml');
|
||||
const uniq = require('lodash/uniq');
|
||||
|
||||
const rawDataPath = '../data/languages-raw.yml';
|
||||
const outputPath = '../data/languages.json';
|
||||
|
||||
async function fetchData() {
|
||||
const filePath = path.resolve(__dirname, rawDataPath);
|
||||
const fileContent = await fs.readFile(filePath);
|
||||
return yaml.load(fileContent);
|
||||
}
|
||||
|
||||
function outputData(data) {
|
||||
const filePath = path.resolve(__dirname, outputPath);
|
||||
return fs.writeJson(filePath, data);
|
||||
}
|
||||
|
||||
function transform(data) {
|
||||
return Object.entries(data).reduce((acc, [label, lang]) => {
|
||||
const { extensions = [], aliases = [], codemirror_mode, codemirror_mime_type } = lang;
|
||||
if (codemirror_mode) {
|
||||
const dotlessExtensions = extensions.map(ext => ext.slice(1));
|
||||
const identifiers = uniq(
|
||||
[label.toLowerCase(), ...aliases, ...dotlessExtensions].filter(alias => {
|
||||
if (!alias) {
|
||||
return;
|
||||
}
|
||||
return !/[^a-zA-Z]/.test(alias);
|
||||
}),
|
||||
);
|
||||
acc.push({ label, identifiers, codemirror_mode, codemirror_mime_type });
|
||||
}
|
||||
return acc;
|
||||
}, []);
|
||||
}
|
||||
|
||||
async function process() {
|
||||
const data = await fetchData();
|
||||
const transformedData = transform(data);
|
||||
return outputData(transformedData);
|
||||
}
|
||||
|
||||
process();
|
||||
Reference in New Issue
Block a user