pseudo-localization 3.1.0 → 3.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,25 +1,74 @@
1
1
  #! /usr/bin/env node
2
- import yargs from 'yargs/yargs';
3
- import { hideBin } from 'yargs/helpers';
4
2
  import { pseudoLocalizeString } from "../localize.js";
5
- yargs(hideBin(process.argv))
6
- .usage('$0 <string> [options]', 'Pseudo localize a string', (yargs) => {
7
- return yargs
8
- .positional('string', {
9
- describe: 'String to pseudo-localize',
10
- type: 'string',
11
- demandOption: true,
12
- })
13
- .option('strategy', {
14
- alias: 's',
15
- type: 'string',
16
- describe: 'Set the strategy for localization',
17
- choices: ['accented', 'bidi'],
18
- default: 'accented',
19
- });
20
- }, ({ string, strategy }) => {
21
- process.stdout.write(pseudoLocalizeString(string, { strategy }));
22
- })
23
- .help()
24
- .parse();
3
+ function isStrategy(str) {
4
+ return ['accented', 'bidi'].includes(str);
5
+ }
6
+ function parseArgs(argv) {
7
+ const options = {
8
+ string: '',
9
+ strategy: 'accented', // Default strategy
10
+ };
11
+ const args = argv.slice(2); // Skip node and script name
12
+ let i = 0;
13
+ while (i < args.length) {
14
+ const arg = args[i];
15
+ if (arg === '--strategy' || arg === '-s') {
16
+ // Handle the `--strategy` or `-s` flag
17
+ const value = args[i + 1];
18
+ if (!isStrategy(value)) {
19
+ throw new Error(`Invalid value for --strategy. Choose 'accented' or 'bidi'.`);
20
+ }
21
+ options.strategy = value;
22
+ i += 2; // Skip the flag and its value
23
+ }
24
+ else if (!arg.startsWith('--') && !arg.startsWith('-')) {
25
+ // Assume it's the positional `string` argument
26
+ if (!options.string) {
27
+ options.string = arg;
28
+ }
29
+ else {
30
+ throw new Error('Unexpected additional argument: ' + arg);
31
+ }
32
+ i += 1;
33
+ }
34
+ else {
35
+ throw new Error(`Unknown argument: ${arg}`);
36
+ }
37
+ }
38
+ if (!options.string) {
39
+ throw new Error('The <string> argument is required.');
40
+ }
41
+ return options;
42
+ }
43
+ function displayHelp() {
44
+ console.log(`
45
+ Usage: <script> <string> [options]
46
+
47
+ Pseudo localize a string
48
+
49
+ Arguments:
50
+ <string> String to pseudo-localize
51
+
52
+ Options:
53
+ --strategy, -s Set the strategy for localization (choices: 'accented', 'bidi', default: 'accented')
54
+ --help Show help
55
+ `);
56
+ }
57
+ function main() {
58
+ const argv = process.argv;
59
+ if (argv.includes('--help')) {
60
+ displayHelp();
61
+ process.exit(0);
62
+ }
63
+ try {
64
+ const { string, strategy } = parseArgs(argv);
65
+ process.stdout.write(pseudoLocalizeString(string, { strategy }));
66
+ }
67
+ catch (error) {
68
+ console.error(error);
69
+ displayHelp();
70
+ process.exit(1);
71
+ }
72
+ }
73
+ main();
25
74
  //# sourceMappingURL=pseudo-localize.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pseudo-localize.js","sourceRoot":"","sources":["../../src/bin/pseudo-localize.ts"],"names":[],"mappings":";AAEA,OAAO,KAAK,MAAM,aAAa,CAAC;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAEtD,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;KACzB,KAAK,CACJ,uBAAuB,EACvB,0BAA0B,EAC1B,CAAC,KAAK,EAAE,EAAE;IACR,OAAO,KAAK;SACT,UAAU,CAAC,QAAQ,EAAE;QACpB,QAAQ,EAAE,2BAA2B;QACrC,IAAI,EAAE,QAAQ;QACd,YAAY,EAAE,IAAI;KACnB,CAAC;SACD,MAAM,CAAC,UAAU,EAAE;QAClB,KAAK,EAAE,GAAG;QACV,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,mCAAmC;QAC7C,OAAO,EAAE,CAAC,UAAU,EAAE,MAAM,CAAU;QACtC,OAAO,EAAE,UAAmB;KAC7B,CAAC,CAAC;AACP,CAAC,EACD,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE;IACvB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,oBAAoB,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;AACnE,CAAC,CACF;KACA,IAAI,EAAE;KACN,KAAK,EAAE,CAAC"}
1
+ {"version":3,"file":"pseudo-localize.js","sourceRoot":"","sources":["../../src/bin/pseudo-localize.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,oBAAoB,EAAiB,MAAM,gBAAgB,CAAC;AAOrE,SAAS,UAAU,CAAC,GAAW;IAC7B,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAC5C,CAAC;AAED,SAAS,SAAS,CAAC,IAAc;IAC/B,MAAM,OAAO,GAAS;QACpB,MAAM,EAAE,EAAE;QACV,QAAQ,EAAE,UAAU,EAAE,mBAAmB;KAC1C,CAAC;IAEF,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,4BAA4B;IACxD,IAAI,CAAC,GAAG,CAAC,CAAC;IAEV,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QACvB,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAEpB,IAAI,GAAG,KAAK,YAAY,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YACzC,uCAAuC;YACvC,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC1B,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;gBACvB,MAAM,IAAI,KAAK,CACb,4DAA4D,CAC7D,CAAC;YACJ,CAAC;YACD,OAAO,CAAC,QAAQ,GAAG,KAAK,CAAC;YACzB,CAAC,IAAI,CAAC,CAAC,CAAC,8BAA8B;QACxC,CAAC;aAAM,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACzD,+CAA+C;YAC/C,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;gBACpB,OAAO,CAAC,MAAM,GAAG,GAAG,CAAC;YACvB,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,KAAK,CAAC,kCAAkC,GAAG,GAAG,CAAC,CAAC;YAC5D,CAAC;YACD,CAAC,IAAI,CAAC,CAAC;QACT,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,qBAAqB,GAAG,EAAE,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACxD,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,WAAW;IAClB,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;CAWb,CAAC,CAAC;AACH,CAAC;AAED,SAAS,IAAI;IACX,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAE1B,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5B,WAAW,EAAE,CAAC;QACd,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;QAC7C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,oBAAoB,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;IACnE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACrB,WAAW,EAAE,CAAC;QACd,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"localize.js","sourceRoot":"","sources":["../src/localize.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"localize.js","sourceRoot":"","sources":["../src/localize.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pseudo-localization",
3
- "version": "3.1.0",
3
+ "version": "3.1.1",
4
4
  "description": "pseudo-localization for internationalization testing",
5
5
  "files": [
6
6
  "dist",
@@ -54,14 +54,10 @@
54
54
  "devDependencies": {
55
55
  "@eslint/js": "^9.17.0",
56
56
  "@types/node": "^22.10.2",
57
- "@types/yargs": "^17.0.33",
58
57
  "eslint": "^9.17.0",
59
58
  "globals": "^15.13.0",
60
59
  "prettier": "^3.4.2",
61
60
  "typescript": "^5.7.2",
62
61
  "typescript-eslint": "^8.18.0"
63
- },
64
- "dependencies": {
65
- "yargs": "^17.7.2"
66
62
  }
67
63
  }
@@ -1,31 +1,89 @@
1
1
  #! /usr/bin/env node
2
2
 
3
- import yargs from 'yargs/yargs';
4
- import { hideBin } from 'yargs/helpers';
5
- import { pseudoLocalizeString } from '../localize.ts';
6
-
7
- yargs(hideBin(process.argv))
8
- .usage(
9
- '$0 <string> [options]',
10
- 'Pseudo localize a string',
11
- (yargs) => {
12
- return yargs
13
- .positional('string', {
14
- describe: 'String to pseudo-localize',
15
- type: 'string',
16
- demandOption: true,
17
- })
18
- .option('strategy', {
19
- alias: 's',
20
- type: 'string',
21
- describe: 'Set the strategy for localization',
22
- choices: ['accented', 'bidi'] as const,
23
- default: 'accented' as const,
24
- });
25
- },
26
- ({ string, strategy }) => {
27
- process.stdout.write(pseudoLocalizeString(string, { strategy }));
3
+ import { pseudoLocalizeString, type Strategy } from '../localize.ts';
4
+
5
+ type Args = {
6
+ string: string;
7
+ strategy: 'accented' | 'bidi';
8
+ };
9
+
10
+ function isStrategy(str: string): str is Strategy {
11
+ return ['accented', 'bidi'].includes(str);
12
+ }
13
+
14
+ function parseArgs(argv: string[]): Args {
15
+ const options: Args = {
16
+ string: '',
17
+ strategy: 'accented', // Default strategy
18
+ };
19
+
20
+ const args = argv.slice(2); // Skip node and script name
21
+ let i = 0;
22
+
23
+ while (i < args.length) {
24
+ const arg = args[i];
25
+
26
+ if (arg === '--strategy' || arg === '-s') {
27
+ // Handle the `--strategy` or `-s` flag
28
+ const value = args[i + 1];
29
+ if (!isStrategy(value)) {
30
+ throw new Error(
31
+ `Invalid value for --strategy. Choose 'accented' or 'bidi'.`
32
+ );
33
+ }
34
+ options.strategy = value;
35
+ i += 2; // Skip the flag and its value
36
+ } else if (!arg.startsWith('--') && !arg.startsWith('-')) {
37
+ // Assume it's the positional `string` argument
38
+ if (!options.string) {
39
+ options.string = arg;
40
+ } else {
41
+ throw new Error('Unexpected additional argument: ' + arg);
42
+ }
43
+ i += 1;
44
+ } else {
45
+ throw new Error(`Unknown argument: ${arg}`);
28
46
  }
29
- )
30
- .help()
31
- .parse();
47
+ }
48
+
49
+ if (!options.string) {
50
+ throw new Error('The <string> argument is required.');
51
+ }
52
+
53
+ return options;
54
+ }
55
+
56
+ function displayHelp() {
57
+ console.log(`
58
+ Usage: <script> <string> [options]
59
+
60
+ Pseudo localize a string
61
+
62
+ Arguments:
63
+ <string> String to pseudo-localize
64
+
65
+ Options:
66
+ --strategy, -s Set the strategy for localization (choices: 'accented', 'bidi', default: 'accented')
67
+ --help Show help
68
+ `);
69
+ }
70
+
71
+ function main() {
72
+ const argv = process.argv;
73
+
74
+ if (argv.includes('--help')) {
75
+ displayHelp();
76
+ process.exit(0);
77
+ }
78
+
79
+ try {
80
+ const { string, strategy } = parseArgs(argv);
81
+ process.stdout.write(pseudoLocalizeString(string, { strategy }));
82
+ } catch (error) {
83
+ console.error(error);
84
+ displayHelp();
85
+ process.exit(1);
86
+ }
87
+ }
88
+
89
+ main();
package/src/localize.ts CHANGED
@@ -35,9 +35,9 @@ const strategies = {
35
35
  },
36
36
  };
37
37
 
38
- type Strategy = 'accented' | 'bidi';
38
+ export type Strategy = 'accented' | 'bidi';
39
39
 
40
- type PseudoLocalizeStringOptions = {
40
+ export type PseudoLocalizeStringOptions = {
41
41
  /**
42
42
  * The strategy to employ.
43
43
  * - `accented`:
@@ -67,7 +67,7 @@ type PseudoLocalizeStringOptions = {
67
67
  export const pseudoLocalizeString = (
68
68
  string: string,
69
69
  { strategy = 'accented' }: PseudoLocalizeStringOptions = {}
70
- ) => {
70
+ ): string => {
71
71
  const opts = strategies[strategy];
72
72
 
73
73
  let pseudoLocalizedText = '';