@localheroai/cli 0.0.74-rc.1 → 0.0.74-rc.2

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.
@@ -34,7 +34,7 @@ function matchingBrace(text, start) {
34
34
  }
35
35
  return -1;
36
36
  }
37
- export function extractPlaceholders(text) {
37
+ function matchPlaceholders(text) {
38
38
  if (typeof text !== 'string')
39
39
  return [];
40
40
  const found = [];
@@ -43,10 +43,13 @@ export function extractPlaceholders(text) {
43
43
  if (escaped)
44
44
  continue;
45
45
  const name = i18next ?? railsTyped ?? rails ?? python ?? positionalType ?? printf ?? icu;
46
- found.push({ kind: classify(full), name });
46
+ found.push({ placeholder: { kind: classify(full), name }, written: full });
47
47
  }
48
48
  return found;
49
49
  }
50
+ export function extractPlaceholders(text) {
51
+ return matchPlaceholders(text).map(({ placeholder }) => placeholder);
52
+ }
50
53
  function classify(full) {
51
54
  if (full.startsWith('{{'))
52
55
  return 'i18next';
@@ -85,4 +88,26 @@ export function placeholderMultiset(text) {
85
88
  }
86
89
  return counts;
87
90
  }
91
+ const USUAL_SPELLING = {
92
+ i18next: (name) => `{{${name}}}`,
93
+ icu: (name) => `{${name}}`,
94
+ 'rails-typed': (name) => `%<${name}>`,
95
+ rails: (name) => `%{${name}}`,
96
+ python: (name) => `%(${name})`,
97
+ printf: (name) => `%${name}`
98
+ };
99
+ /** Turns tokens from placeholderMultiset back into how `text` writes them, like `%{name}` for `rails:name`. */
100
+ export function spellPlaceholders(tokens, text) {
101
+ const written = new Map();
102
+ for (const match of matchPlaceholders(text)) {
103
+ const key = token(match.placeholder);
104
+ if (!written.has(key))
105
+ written.set(key, match.written);
106
+ }
107
+ return tokens.map((key) => {
108
+ const separator = key.indexOf(':');
109
+ const kind = key.slice(0, separator);
110
+ return written.get(key) ?? USUAL_SPELLING[kind]?.(key.slice(separator + 1)) ?? key;
111
+ });
112
+ }
88
113
  //# sourceMappingURL=placeholders.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"placeholders.js","sourceRoot":"","sources":["../../src/utils/placeholders.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,mBAAmB,GACvB,qJAAqJ,CAAC;AAgBxJ;;;GAGG;AACH,MAAM,iBAAiB,GAAG,wDAAwD,CAAC;AACnF,MAAM,kBAAkB,GAAG,EAAE,CAAC;AAE9B,MAAM,UAAU,yBAAyB,CAAC,IAAY;IACpD,IAAI,MAAM,GAAG,IAAI,CAAC;IAClB,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,kBAAkB,EAAE,IAAI,EAAE,EAAE,CAAC;QACrD,iBAAiB,CAAC,SAAS,GAAG,CAAC,CAAC;QAChC,MAAM,KAAK,GAAG,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC7C,IAAI,CAAC,KAAK;YAAE,MAAM;QAClB,MAAM,GAAG,GAAG,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;QAC/C,IAAI,GAAG,KAAK,CAAC,CAAC;YAAE,MAAM;QACtB,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC;IAClF,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,aAAa,CAAC,IAAY,EAAE,KAAa;IAChD,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG;YAAE,KAAK,EAAE,CAAC;aACxB,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,EAAE,KAAK,KAAK,CAAC;YAAE,OAAO,CAAC,CAAC;IACtD,CAAC;IACD,OAAO,CAAC,CAAC,CAAC;AACZ,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC9C,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAC;IACxC,MAAM,KAAK,GAAkB,EAAE,CAAC;IAChC,KAAK,MAAM,KAAK,IAAI,yBAAyB,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC;QAClF,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,AAAD,EAAG,cAAc,EAAE,MAAM,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;QACjG,IAAI,OAAO;YAAE,SAAS;QACtB,MAAM,IAAI,GAAG,OAAO,IAAI,UAAU,IAAI,KAAK,IAAI,MAAM,IAAI,cAAc,IAAI,MAAM,IAAI,GAAG,CAAC;QACzF,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,QAAQ,CAAC,IAAY;IAC5B,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,SAAS,CAAC;IAC5C,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IACvC,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,aAAa,CAAC;IAChD,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,OAAO,CAAC;IAC1C,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC3C,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,YAAY,CAAC;IAC3C,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;GAGG;AACH,SAAS,KAAK,CAAC,WAAwB;IACrC,IAAI,WAAW,CAAC,IAAI,KAAK,YAAY;QAAE,OAAO,UAAU,WAAW,CAAC,IAAI,EAAE,CAAC;IAC3E,OAAO,GAAG,WAAW,CAAC,IAAI,IAAI,WAAW,CAAC,IAAI,EAAE,CAAC;AACnD,CAAC;AAED,iFAAiF;AACjF,oEAAoE;AACpE,MAAM,kBAAkB,GAAG,+CAA+C,CAAC;AAE3E,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,OAAO,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;AAC1D,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC9C,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IACzC,KAAK,MAAM,WAAW,IAAI,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;QACpD,MAAM,GAAG,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC;QAC/B,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9C,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"placeholders.js","sourceRoot":"","sources":["../../src/utils/placeholders.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,mBAAmB,GACvB,qJAAqJ,CAAC;AAgBxJ;;;GAGG;AACH,MAAM,iBAAiB,GAAG,wDAAwD,CAAC;AACnF,MAAM,kBAAkB,GAAG,EAAE,CAAC;AAE9B,MAAM,UAAU,yBAAyB,CAAC,IAAY;IACpD,IAAI,MAAM,GAAG,IAAI,CAAC;IAClB,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,kBAAkB,EAAE,IAAI,EAAE,EAAE,CAAC;QACrD,iBAAiB,CAAC,SAAS,GAAG,CAAC,CAAC;QAChC,MAAM,KAAK,GAAG,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC7C,IAAI,CAAC,KAAK;YAAE,MAAM;QAClB,MAAM,GAAG,GAAG,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;QAC/C,IAAI,GAAG,KAAK,CAAC,CAAC;YAAE,MAAM;QACtB,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC;IAClF,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,aAAa,CAAC,IAAY,EAAE,KAAa;IAChD,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG;YAAE,KAAK,EAAE,CAAC;aACxB,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,EAAE,KAAK,KAAK,CAAC;YAAE,OAAO,CAAC,CAAC;IACtD,CAAC;IACD,OAAO,CAAC,CAAC,CAAC;AACZ,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAY;IACrC,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAC;IACxC,MAAM,KAAK,GAAoD,EAAE,CAAC;IAClE,KAAK,MAAM,KAAK,IAAI,yBAAyB,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC;QAClF,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,AAAD,EAAG,cAAc,EAAE,MAAM,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;QACjG,IAAI,OAAO;YAAE,SAAS;QACtB,MAAM,IAAI,GAAG,OAAO,IAAI,UAAU,IAAI,KAAK,IAAI,MAAM,IAAI,cAAc,IAAI,MAAM,IAAI,GAAG,CAAC;QACzF,KAAK,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7E,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC9C,OAAO,iBAAiB,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC;AACvE,CAAC;AAED,SAAS,QAAQ,CAAC,IAAY;IAC5B,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,SAAS,CAAC;IAC5C,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IACvC,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,aAAa,CAAC;IAChD,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,OAAO,CAAC;IAC1C,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC3C,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,YAAY,CAAC;IAC3C,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;GAGG;AACH,SAAS,KAAK,CAAC,WAAwB;IACrC,IAAI,WAAW,CAAC,IAAI,KAAK,YAAY;QAAE,OAAO,UAAU,WAAW,CAAC,IAAI,EAAE,CAAC;IAC3E,OAAO,GAAG,WAAW,CAAC,IAAI,IAAI,WAAW,CAAC,IAAI,EAAE,CAAC;AACnD,CAAC;AAED,iFAAiF;AACjF,oEAAoE;AACpE,MAAM,kBAAkB,GAAG,+CAA+C,CAAC;AAE3E,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,OAAO,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;AAC1D,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC9C,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IACzC,KAAK,MAAM,WAAW,IAAI,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;QACpD,MAAM,GAAG,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC;QAC/B,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9C,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,cAAc,GAA6C;IAC/D,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI,IAAI;IAChC,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,GAAG;IAC1B,aAAa,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI,GAAG;IACrC,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI,GAAG;IAC7B,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI,GAAG;IAC9B,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,EAAE;CAC7B,CAAC;AAEF,+GAA+G;AAC/G,MAAM,UAAU,iBAAiB,CAAC,MAAgB,EAAE,IAAY;IAC9D,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC1C,KAAK,MAAM,KAAK,IAAI,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5C,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACrC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IACzD,CAAC;IACD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QACxB,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACnC,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;QACrC,OAAO,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;IACrF,CAAC,CAAC,CAAC;AACL,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@localheroai/cli",
3
- "version": "0.0.74-rc.1",
3
+ "version": "0.0.74-rc.2",
4
4
  "description": "CLI tool for managing translations with LocalHero.ai",
5
5
  "homepage": "https://localhero.ai",
6
6
  "repository": {