pangu
Version:
Paranoid text spacing for good readability, to automatically insert whitespace between CJK (Chinese, Japanese, Korean) and half-width characters (alphabetical letters, numerical digits and symbols).
87 lines (76 loc) • 2.1 kB
text/typescript
import pangu from '.';
const usage = `
usage: pangu [-h] [-v] [-t] [-f] [-c] text_or_path
pangu.js -- Paranoid text spacing for good readability, to automatically
insert whitespace between CJK and half-width characters (alphabetical letters,
numerical digits and symbols).
positional arguments:
text_or_path the text or file path to apply spacing
optional arguments:
-h, --help show this help message and exit
-v, --version show program's version number and exit
-t, --text specify the input value is a text
-f, --file specify the input value is a file path
-c, --check check if text has proper spacing (exit 0 if yes, 1 if no)
`.trim();
const [, , ...args] = process.argv;
function printSpacingText(text: string | undefined) {
if (typeof text === 'string') {
console.log(pangu.spacingText(text));
} else {
console.log(usage);
process.exit(1);
}
}
function printSpacingFile(path: string | undefined) {
if (typeof path === 'string') {
console.log(pangu.spacingFileSync(path));
} else {
console.log(usage);
process.exit(1);
}
}
function checkSpacing(text: string | undefined) {
if (typeof text === 'string') {
const hasProperSpacing = pangu.hasProperSpacing(text);
if (!hasProperSpacing) {
// Optionally print the corrected version to stderr for debugging
console.error(`Corrected: ${pangu.spacingText(text)}`);
}
process.exit(hasProperSpacing ? 0 : 1);
} else {
console.log(usage);
process.exit(1);
}
}
if (args.length === 0) {
console.log(usage);
process.exit(1);
} else {
switch (args[0]) {
case '-h':
case '--help':
console.log(usage);
break;
case '-v':
case '--version':
console.log(pangu.version);
break;
case '-t':
case '--text':
printSpacingText(args[1]);
break;
case '-f':
case '--file':
printSpacingFile(args[1]);
break;
case '-c':
case '--check':
checkSpacing(args[1]);
break;
default:
printSpacingText(args[0]);
}
}
process.exit(0);