Skip to content

Commit 3f03333

Browse files
committed
chore: move simple functions to utils
1 parent cc55313 commit 3f03333

File tree

2 files changed

+34
-28
lines changed

2 files changed

+34
-28
lines changed

scripts/lang.js

Lines changed: 4 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import fs from 'node:fs/promises';
21
import glob from 'fast-glob';
2+
import { assign, readJSON, sortKeys, writeFile } from './utils';
33

44
async function main() {
55
// Load base "en" first
@@ -27,16 +27,10 @@ async function main() {
2727
),
2828
);
2929

30-
const file = JSON.stringify(sort(data), null, 2);
30+
const file = JSON.stringify(sortKeys(data), null, 2);
3131
if (!file) return;
32-
await fs.writeFile('lang/underscript.json', file);
33-
}
3432

35-
function assign(obj = {}, lang = '', key = '', value = '') {
36-
// Only add key if value exists
37-
if (!value) return;
38-
obj[lang] ??= {}; // Does lang exist?
39-
obj[lang][key] = value;
33+
await writeFile('lang/underscript.json', file);
4034
}
4135

4236
/**
@@ -48,7 +42,7 @@ async function bundle(files = []) {
4842
await Promise.all(files.map(async (file) => {
4943
const [lang, name] = getFileParts(file);
5044

51-
Object.entries(await parse(file)).forEach(
45+
Object.entries(await readJSON(file)).forEach(
5246
([key, value]) => {
5347
assign(ret, lang, `underscript.${name}.${key}`, value);
5448
},
@@ -63,22 +57,4 @@ function getFileParts(file = '') {
6357
return [lang, name.substring(0, name.lastIndexOf('.'))];
6458
}
6559

66-
async function parse(file) {
67-
const content = await fs.readFile(file);
68-
return JSON.parse(content);
69-
}
70-
71-
function sort(obj = {}) {
72-
const keys = Object.keys(obj);
73-
if (!keys.length) return undefined;
74-
const sorted = {};
75-
keys.sort().forEach(
76-
(key) => {
77-
const value = obj[key];
78-
sorted[key] = typeof value === 'object' ? sort(value) : value;
79-
},
80-
);
81-
return sorted;
82-
}
83-
8460
main();

scripts/utils.js

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
import fs from 'node:fs/promises';
2+
3+
export function assign(obj = {}, lang = '', key = '', value = '') {
4+
// Only add key if value exists
5+
if (!value) return;
6+
obj[lang] ??= {}; // Does lang exist?
7+
obj[lang][key] = value;
8+
}
9+
10+
export async function readJSON(file) {
11+
const content = await fs.readFile(file);
12+
return JSON.parse(content);
13+
}
14+
15+
export function writeFile(path, data) {
16+
return fs.writeFile(path, data);
17+
}
18+
19+
export function sortKeys(obj = {}) {
20+
const keys = Object.keys(obj);
21+
if (!keys.length) return undefined;
22+
const sorted = {};
23+
keys.sort().forEach(
24+
(key) => {
25+
const value = obj[key];
26+
sorted[key] = typeof value === 'object' ? sortKeys(value) : value;
27+
},
28+
);
29+
return sorted;
30+
}

0 commit comments

Comments
 (0)