-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathindex.js
More file actions
81 lines (71 loc) · 2.4 KB
/
index.js
File metadata and controls
81 lines (71 loc) · 2.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
const translate = require('@vitalets/google-translate-api');
const argv = require('minimist')(process.argv.slice(2));
const preset = require('./preset');
const DEFAULT_LANG_CODE = 'en';
if (argv['_'].length === 0) {
showHelp();
} else {
const text = argv['_'].join(' ');
const delimiter = getParam('d', 'delimiter');
const capitalization = getParam('c', 'capitalization');
const caseFirst = getParam('f', 'caseFirst');
const prefix = getParam('b', 'prefix');
const postfix = getParam('a', 'postfix');
const langCode = argv['l'] || DEFAULT_LANG_CODE;
translate(text, {to: langCode}).then(res => {
const result = res.text;
const words = result.split(' ');
let name = formatResult(words.map(word => formatWord(word, capitalization)).join(delimiter), caseFirst);
console.log(prefix + name + postfix);
}).catch(err => {
console.error(err);
});
}
function formatWord(word, capitalization) {
switch (capitalization) {
case 'first':
return word[0].toUpperCase() + word.slice(1).toLowerCase();
case 'none':
return word.toLowerCase();
case 'all':
return word.toUpperCase();
default:
return word;
}
}
function formatResult(name, caseFirst) {
switch (caseFirst) {
case 'upper':
return name[0].toUpperCase() + name.slice(1);
case 'lower':
return name[0].toLowerCase() + name.slice(1);
default:
return name;
}
}
function showHelp() {
console.log(
`Variable names generator.
Usage:
npm install
npm start -- [parameters] <short variable description>
Where "parameters" can be:
-c Capitalization ("first", "all", "none", "preserve");
-f Case of first letter ("upper", "lower", "preserve");
-l Translate to specified language (two letters code, 'en' by default);
-d Delimiter;
-p Preset. Parameters override preset;
-b Prefix;
-a Postfix;
Examples:
npm start -- послать запрос
npm start -- -c all -d _ Hằng số tuyệt vời của tôi
Available presets:
${Object.entries(preset).map(p=>p[0]).join(', ')}
`);
}
function getParam(short, long) {
const selectedPreset = preset[argv['p']] || {};
const defaultPreset = preset['default'];
return argv[short] || selectedPreset[long] || defaultPreset[long];
}