Skip to content
Snippets Groups Projects
Verified Commit 11588220 authored by insert's avatar insert
Browse files

Add process script + coverage.

parent 797f57af
Branches
No related merge requests found
......@@ -12,3 +12,15 @@ Lithuanian | Up-to-date | Wait What
Czech | Up-to-date | Fatalerrorcoded
Russian | Work in progress. | Wait What
Hungarian | Pending. | Organic Coke
## Coverage
By running `process.js` all language files will be compared to `en.json` and a coverage table will be generated below.
File | Coverage | Missing keys | Extraneous keys
------|-----|--------------|-----------------
cz.json | `92.31%` | `general.image_by` |
en.json | `100.00%` | |
hu.json | `0.00%` | `general.about`<br>`general.tos`<br>`general.privacy`<br>`general.image_by`<br>`login.title`<br>`login.email`<br>`login.password`<br>`login.enter.email`<br>`login.enter.password`<br>`login.forgot`<br>`login.new`<br>`login.create`<br>`app.main.channel.message` |
lt.json | `100.00%` | |
pl.json | `100.00%` | |
\ No newline at end of file
export default any;
const { readdirSync, readFileSync, existsSync, writeFileSync } = require('fs');
function recurseKeys(object, path = []) {
let collected = [];
let keys = Object.keys(object);
for (let key of keys) {
let item = object[key];
let current = [ ...path, key ];
if (typeof item === 'object') {
collected = [ ...collected, ...recurseKeys(item, current) ];
} else {
collected.push(current.join('.'));
}
}
return collected;
}
let en = JSON.parse(readFileSync('en.json'));
let keys = recurseKeys(en);
let output = [];
let language_files = readdirSync('.');
for (let file of language_files) {
if (file.endsWith('.json')) {
if (!existsSync(file + '.d.ts')) {
writeFileSync(file + '.d.ts', 'export default any;\n');
}
let lang = JSON.parse(readFileSync(file));
let lkey = recurseKeys(lang);
let missing = keys.filter(x => !lkey.includes(x));
let extraneous = lkey.filter(x => !keys.includes(x));
output.push(`${file} | \`${((1 - missing.length / keys.length) * 100).toFixed(2)}%\` | ${missing.map(x => '`' + x + '`').join('<br>')} | ${extraneous.map(x => '`' + x + '`').join('<br>')}`);
}
}
let s = `------|-----|--------------|-----------------`;
let inp = readFileSync('README.md').toString().split(s)[0];
writeFileSync('README.md', inp + s + '\n' + output.join('\n'));
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment