@kensio/pinyinjs 1.7.3 → 1.7.5

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.
Files changed (695) hide show
  1. package/dist/accuracy/score-case.d.ts +23 -0
  2. package/dist/accuracy/score-case.d.ts.map +1 -0
  3. package/dist/accuracy/score-case.js +63 -0
  4. package/dist/accuracy/score-case.js.map +1 -0
  5. package/dist/accuracy/score.d.ts +1 -8
  6. package/dist/accuracy/score.d.ts.map +1 -1
  7. package/dist/accuracy/score.js +1 -55
  8. package/dist/accuracy/score.js.map +1 -1
  9. package/dist/cli/arguments.d.ts +4 -290
  10. package/dist/cli/arguments.d.ts.map +1 -1
  11. package/dist/cli/arguments.js +5 -357
  12. package/dist/cli/arguments.js.map +1 -1
  13. package/dist/cli/check-command.d.ts +9 -0
  14. package/dist/cli/check-command.d.ts.map +1 -0
  15. package/dist/cli/check-command.js +95 -0
  16. package/dist/cli/check-command.js.map +1 -0
  17. package/dist/cli/cli-input.d.ts +49 -0
  18. package/dist/cli/cli-input.d.ts.map +1 -0
  19. package/dist/cli/cli-input.js +31 -0
  20. package/dist/cli/cli-input.js.map +1 -0
  21. package/dist/cli/command.d.ts +97 -0
  22. package/dist/cli/command.d.ts.map +1 -0
  23. package/dist/cli/command.js +40 -0
  24. package/dist/cli/command.js.map +1 -0
  25. package/dist/cli/commands.d.ts +7 -110
  26. package/dist/cli/commands.d.ts.map +1 -1
  27. package/dist/cli/commands.js +14 -991
  28. package/dist/cli/commands.js.map +1 -1
  29. package/dist/cli/convert-command.d.ts +6 -0
  30. package/dist/cli/convert-command.d.ts.map +1 -0
  31. package/dist/cli/convert-command.js +52 -0
  32. package/dist/cli/convert-command.js.map +1 -0
  33. package/dist/cli/environment.d.ts +1 -1
  34. package/dist/cli/environment.d.ts.map +1 -1
  35. package/dist/cli/explain-command.d.ts +6 -0
  36. package/dist/cli/explain-command.d.ts.map +1 -0
  37. package/dist/cli/explain-command.js +40 -0
  38. package/dist/cli/explain-command.js.map +1 -0
  39. package/dist/cli/explain-syllable.d.ts +10 -0
  40. package/dist/cli/explain-syllable.d.ts.map +1 -0
  41. package/dist/cli/explain-syllable.js +70 -0
  42. package/dist/cli/explain-syllable.js.map +1 -0
  43. package/dist/cli/flag-help.d.ts +18 -0
  44. package/dist/cli/flag-help.d.ts.map +1 -0
  45. package/dist/cli/flag-help.js +78 -0
  46. package/dist/cli/flag-help.js.map +1 -0
  47. package/dist/cli/flag-lists.d.ts +49 -0
  48. package/dist/cli/flag-lists.d.ts.map +1 -0
  49. package/dist/cli/flag-lists.js +58 -0
  50. package/dist/cli/flag-lists.js.map +1 -0
  51. package/dist/cli/flag-values.d.ts +44 -0
  52. package/dist/cli/flag-values.d.ts.map +1 -0
  53. package/dist/cli/flag-values.js +56 -0
  54. package/dist/cli/flag-values.js.map +1 -0
  55. package/dist/cli/flags.d.ts +193 -0
  56. package/dist/cli/flags.d.ts.map +1 -0
  57. package/dist/cli/flags.js +133 -0
  58. package/dist/cli/flags.js.map +1 -0
  59. package/dist/cli/format-options.d.ts +29 -0
  60. package/dist/cli/format-options.d.ts.map +1 -0
  61. package/dist/cli/format-options.js +72 -0
  62. package/dist/cli/format-options.js.map +1 -0
  63. package/dist/cli/global-help.d.ts +23 -0
  64. package/dist/cli/global-help.d.ts.map +1 -0
  65. package/dist/cli/global-help.js +40 -0
  66. package/dist/cli/global-help.js.map +1 -0
  67. package/dist/cli/help.d.ts +1 -1
  68. package/dist/cli/help.d.ts.map +1 -1
  69. package/dist/cli/help.js +5 -99
  70. package/dist/cli/help.js.map +1 -1
  71. package/dist/cli/html-commands.d.ts +13 -0
  72. package/dist/cli/html-commands.d.ts.map +1 -0
  73. package/dist/cli/html-commands.js +49 -0
  74. package/dist/cli/html-commands.js.map +1 -0
  75. package/dist/cli/info-command.d.ts +7 -0
  76. package/dist/cli/info-command.d.ts.map +1 -0
  77. package/dist/cli/info-command.js +39 -0
  78. package/dist/cli/info-command.js.map +1 -0
  79. package/dist/cli/lookup-commands.d.ts +10 -0
  80. package/dist/cli/lookup-commands.d.ts.map +1 -0
  81. package/dist/cli/lookup-commands.js +101 -0
  82. package/dist/cli/lookup-commands.js.map +1 -0
  83. package/dist/cli/match-command.d.ts +11 -0
  84. package/dist/cli/match-command.d.ts.map +1 -0
  85. package/dist/cli/match-command.js +76 -0
  86. package/dist/cli/match-command.js.map +1 -0
  87. package/dist/cli/number-command.d.ts +12 -0
  88. package/dist/cli/number-command.d.ts.map +1 -0
  89. package/dist/cli/number-command.js +89 -0
  90. package/dist/cli/number-command.js.map +1 -0
  91. package/dist/cli/options.d.ts +30 -0
  92. package/dist/cli/options.d.ts.map +1 -0
  93. package/dist/cli/options.js +54 -0
  94. package/dist/cli/options.js.map +1 -0
  95. package/dist/cli/run-command.d.ts +24 -0
  96. package/dist/cli/run-command.d.ts.map +1 -0
  97. package/dist/cli/run-command.js +40 -0
  98. package/dist/cli/run-command.js.map +1 -0
  99. package/dist/cli/run.d.ts +4 -42
  100. package/dist/cli/run.d.ts.map +1 -1
  101. package/dist/cli/run.js +6 -61
  102. package/dist/cli/run.js.map +1 -1
  103. package/dist/cli/script-command.d.ts +10 -0
  104. package/dist/cli/script-command.d.ts.map +1 -0
  105. package/dist/cli/script-command.js +58 -0
  106. package/dist/cli/script-command.js.map +1 -0
  107. package/dist/cli/segment-command.d.ts +11 -0
  108. package/dist/cli/segment-command.d.ts.map +1 -0
  109. package/dist/cli/segment-command.js +53 -0
  110. package/dist/cli/segment-command.js.map +1 -0
  111. package/dist/cli/slug-command.d.ts +10 -0
  112. package/dist/cli/slug-command.d.ts.map +1 -0
  113. package/dist/cli/slug-command.js +28 -0
  114. package/dist/cli/slug-command.js.map +1 -0
  115. package/dist/cli/syllable-command.d.ts +14 -0
  116. package/dist/cli/syllable-command.d.ts.map +1 -0
  117. package/dist/cli/syllable-command.js +82 -0
  118. package/dist/cli/syllable-command.js.map +1 -0
  119. package/dist/cli/system-table.d.ts +12 -0
  120. package/dist/cli/system-table.d.ts.map +1 -0
  121. package/dist/cli/system-table.js +48 -0
  122. package/dist/cli/system-table.js.map +1 -0
  123. package/dist/cli/systems.d.ts +57 -0
  124. package/dist/cli/systems.d.ts.map +1 -0
  125. package/dist/cli/systems.js +27 -0
  126. package/dist/cli/systems.js.map +1 -0
  127. package/dist/cli/transcribe-command.d.ts +18 -0
  128. package/dist/cli/transcribe-command.d.ts.map +1 -0
  129. package/dist/cli/transcribe-command.js +86 -0
  130. package/dist/cli/transcribe-command.js.map +1 -0
  131. package/dist/cli/transcribe-reading.d.ts +15 -0
  132. package/dist/cli/transcribe-reading.d.ts.map +1 -0
  133. package/dist/cli/transcribe-reading.js +90 -0
  134. package/dist/cli/transcribe-reading.js.map +1 -0
  135. package/dist/cli/transcribe-rows.d.ts +26 -0
  136. package/dist/cli/transcribe-rows.d.ts.map +1 -0
  137. package/dist/cli/transcribe-rows.js +30 -0
  138. package/dist/cli/transcribe-rows.js.map +1 -0
  139. package/dist/cli/usage-error.d.ts +9 -0
  140. package/dist/cli/usage-error.d.ts.map +1 -0
  141. package/dist/cli/usage-error.js +9 -0
  142. package/dist/cli/usage-error.js.map +1 -0
  143. package/dist/decode/alternatives.d.ts +16 -0
  144. package/dist/decode/alternatives.d.ts.map +1 -0
  145. package/dist/decode/alternatives.js +31 -0
  146. package/dist/decode/alternatives.js.map +1 -0
  147. package/dist/decode/confidence.d.ts.map +1 -1
  148. package/dist/decode/confidence.js +3 -118
  149. package/dist/decode/confidence.js.map +1 -1
  150. package/dist/decode/convert-options.d.ts +116 -0
  151. package/dist/decode/convert-options.d.ts.map +1 -0
  152. package/dist/decode/convert-options.js +2 -0
  153. package/dist/decode/convert-options.js.map +1 -0
  154. package/dist/decode/convert-pipeline.d.ts +18 -0
  155. package/dist/decode/convert-pipeline.d.ts.map +1 -0
  156. package/dist/decode/convert-pipeline.js +66 -0
  157. package/dist/decode/convert-pipeline.js.map +1 -0
  158. package/dist/decode/convert.d.ts +9 -118
  159. package/dist/decode/convert.d.ts.map +1 -1
  160. package/dist/decode/convert.js +5 -453
  161. package/dist/decode/convert.js.map +1 -1
  162. package/dist/decode/decode.d.ts +2 -15
  163. package/dist/decode/decode.d.ts.map +1 -1
  164. package/dist/decode/decode.js +2 -121
  165. package/dist/decode/decode.js.map +1 -1
  166. package/dist/decode/decoders.d.ts +32 -0
  167. package/dist/decode/decoders.d.ts.map +1 -0
  168. package/dist/decode/decoders.js +29 -0
  169. package/dist/decode/decoders.js.map +1 -0
  170. package/dist/decode/edge-context.d.ts +38 -0
  171. package/dist/decode/edge-context.d.ts.map +1 -0
  172. package/dist/decode/edge-context.js +57 -0
  173. package/dist/decode/edge-context.js.map +1 -0
  174. package/dist/decode/hint-lattice.d.ts +45 -0
  175. package/dist/decode/hint-lattice.d.ts.map +1 -0
  176. package/dist/decode/hint-lattice.js +140 -0
  177. package/dist/decode/hint-lattice.js.map +1 -0
  178. package/dist/decode/hints.d.ts +2 -45
  179. package/dist/decode/hints.d.ts.map +1 -1
  180. package/dist/decode/hints.js +1 -139
  181. package/dist/decode/hints.js.map +1 -1
  182. package/dist/decode/jiao-rule.d.ts +58 -0
  183. package/dist/decode/jiao-rule.d.ts.map +1 -0
  184. package/dist/decode/jiao-rule.js +76 -0
  185. package/dist/decode/jiao-rule.js.map +1 -0
  186. package/dist/decode/lattice-costs.d.ts +55 -0
  187. package/dist/decode/lattice-costs.d.ts.map +1 -0
  188. package/dist/decode/lattice-costs.js +90 -0
  189. package/dist/decode/lattice-costs.js.map +1 -0
  190. package/dist/decode/lattice-edges.d.ts +29 -0
  191. package/dist/decode/lattice-edges.d.ts.map +1 -0
  192. package/dist/decode/lattice-edges.js +78 -0
  193. package/dist/decode/lattice-edges.js.map +1 -0
  194. package/dist/decode/lattice-slice.d.ts +37 -0
  195. package/dist/decode/lattice-slice.d.ts.map +1 -0
  196. package/dist/decode/lattice-slice.js +43 -0
  197. package/dist/decode/lattice-slice.js.map +1 -0
  198. package/dist/decode/lattice-types.d.ts +82 -0
  199. package/dist/decode/lattice-types.d.ts.map +1 -0
  200. package/dist/decode/lattice-types.js +44 -0
  201. package/dist/decode/lattice-types.js.map +1 -0
  202. package/dist/decode/lattice.d.ts +2 -59
  203. package/dist/decode/lattice.d.ts.map +1 -1
  204. package/dist/decode/lattice.js +2 -118
  205. package/dist/decode/lattice.js.map +1 -1
  206. package/dist/decode/number-pieces.d.ts +62 -0
  207. package/dist/decode/number-pieces.d.ts.map +1 -0
  208. package/dist/decode/number-pieces.js +106 -0
  209. package/dist/decode/number-pieces.js.map +1 -0
  210. package/dist/decode/numbers.d.ts +53 -0
  211. package/dist/decode/numbers.d.ts.map +1 -0
  212. package/dist/decode/numbers.js +69 -0
  213. package/dist/decode/numbers.js.map +1 -0
  214. package/dist/decode/pieces.d.ts +78 -0
  215. package/dist/decode/pieces.d.ts.map +1 -0
  216. package/dist/decode/pieces.js +136 -0
  217. package/dist/decode/pieces.js.map +1 -0
  218. package/dist/decode/polyphone-rules.d.ts +31 -0
  219. package/dist/decode/polyphone-rules.d.ts.map +1 -0
  220. package/dist/decode/polyphone-rules.js +159 -0
  221. package/dist/decode/polyphone-rules.js.map +1 -0
  222. package/dist/decode/reading-rules.d.ts +2 -97
  223. package/dist/decode/reading-rules.d.ts.map +1 -1
  224. package/dist/decode/reading-rules.js +4 -365
  225. package/dist/decode/reading-rules.js.map +1 -1
  226. package/dist/decode/rules.d.ts +1 -17
  227. package/dist/decode/rules.d.ts.map +1 -1
  228. package/dist/decode/rules.js +1 -43
  229. package/dist/decode/rules.js.map +1 -1
  230. package/dist/decode/run-lattice.d.ts +52 -0
  231. package/dist/decode/run-lattice.d.ts.map +1 -0
  232. package/dist/decode/run-lattice.js +91 -0
  233. package/dist/decode/run-lattice.js.map +1 -0
  234. package/dist/decode/sandhi-tones.d.ts +69 -0
  235. package/dist/decode/sandhi-tones.d.ts.map +1 -0
  236. package/dist/decode/sandhi-tones.js +88 -0
  237. package/dist/decode/sandhi-tones.js.map +1 -0
  238. package/dist/decode/sandhi.d.ts +1 -1
  239. package/dist/decode/sandhi.d.ts.map +1 -1
  240. package/dist/decode/sandhi.js +1 -81
  241. package/dist/decode/sandhi.js.map +1 -1
  242. package/dist/decode/script-types.d.ts +76 -0
  243. package/dist/decode/script-types.d.ts.map +1 -0
  244. package/dist/decode/script-types.js +35 -0
  245. package/dist/decode/script-types.js.map +1 -0
  246. package/dist/decode/script-words.d.ts +32 -0
  247. package/dist/decode/script-words.d.ts.map +1 -0
  248. package/dist/decode/script-words.js +77 -0
  249. package/dist/decode/script-words.js.map +1 -0
  250. package/dist/decode/script.d.ts +3 -73
  251. package/dist/decode/script.d.ts.map +1 -1
  252. package/dist/decode/script.js +3 -109
  253. package/dist/decode/script.js.map +1 -1
  254. package/dist/decode/tan-rule.d.ts +68 -0
  255. package/dist/decode/tan-rule.d.ts.map +1 -0
  256. package/dist/decode/tan-rule.js +131 -0
  257. package/dist/decode/tan-rule.js.map +1 -0
  258. package/dist/decode/write-run.d.ts +28 -0
  259. package/dist/decode/write-run.d.ts.map +1 -0
  260. package/dist/decode/write-run.js +77 -0
  261. package/dist/decode/write-run.js.map +1 -0
  262. package/dist/dictionary/artifact-claims.d.ts +25 -0
  263. package/dist/dictionary/artifact-claims.d.ts.map +1 -0
  264. package/dist/dictionary/artifact-claims.js +47 -0
  265. package/dist/dictionary/artifact-claims.js.map +1 -0
  266. package/dist/dictionary/artifact-format.d.ts +86 -0
  267. package/dist/dictionary/artifact-format.d.ts.map +1 -0
  268. package/dist/dictionary/artifact-format.js +91 -0
  269. package/dist/dictionary/artifact-format.js.map +1 -0
  270. package/dist/dictionary/artifact-read.d.ts +34 -0
  271. package/dist/dictionary/artifact-read.d.ts.map +1 -0
  272. package/dist/dictionary/artifact-read.js +114 -0
  273. package/dist/dictionary/artifact-read.js.map +1 -0
  274. package/dist/dictionary/artifact.d.ts +4 -63
  275. package/dist/dictionary/artifact.d.ts.map +1 -1
  276. package/dist/dictionary/artifact.js +12 -229
  277. package/dist/dictionary/artifact.js.map +1 -1
  278. package/dist/dictionary/assertions.d.ts +5 -57
  279. package/dist/dictionary/assertions.d.ts.map +1 -1
  280. package/dist/dictionary/assertions.js +4 -317
  281. package/dist/dictionary/assertions.js.map +1 -1
  282. package/dist/dictionary/build-assertions.d.ts +12 -0
  283. package/dist/dictionary/build-assertions.d.ts.map +1 -0
  284. package/dist/dictionary/build-assertions.js +13 -0
  285. package/dist/dictionary/build-assertions.js.map +1 -0
  286. package/dist/dictionary/built-dictionary.d.ts +46 -0
  287. package/dist/dictionary/built-dictionary.d.ts.map +1 -0
  288. package/dist/dictionary/built-dictionary.js +97 -0
  289. package/dist/dictionary/built-dictionary.js.map +1 -0
  290. package/dist/dictionary/cedict-senses.d.ts +80 -0
  291. package/dist/dictionary/cedict-senses.d.ts.map +1 -0
  292. package/dist/dictionary/cedict-senses.js +114 -0
  293. package/dist/dictionary/cedict-senses.js.map +1 -0
  294. package/dist/dictionary/character-defaults.d.ts +26 -0
  295. package/dist/dictionary/character-defaults.d.ts.map +1 -0
  296. package/dist/dictionary/character-defaults.js +67 -0
  297. package/dist/dictionary/character-defaults.js.map +1 -0
  298. package/dist/dictionary/character-readings.d.ts +10 -0
  299. package/dist/dictionary/character-readings.d.ts.map +1 -0
  300. package/dist/dictionary/character-readings.js +25 -0
  301. package/dist/dictionary/character-readings.js.map +1 -0
  302. package/dist/dictionary/dictionary-entry.d.ts +37 -0
  303. package/dist/dictionary/dictionary-entry.d.ts.map +1 -0
  304. package/dist/dictionary/dictionary-entry.js +41 -0
  305. package/dist/dictionary/dictionary-entry.js.map +1 -0
  306. package/dist/dictionary/dictionary-readings.d.ts +56 -0
  307. package/dist/dictionary/dictionary-readings.d.ts.map +1 -0
  308. package/dist/dictionary/dictionary-readings.js +93 -0
  309. package/dist/dictionary/dictionary-readings.js.map +1 -0
  310. package/dist/dictionary/dictionary.d.ts +6 -60
  311. package/dist/dictionary/dictionary.d.ts.map +1 -1
  312. package/dist/dictionary/dictionary.js +9 -169
  313. package/dist/dictionary/dictionary.js.map +1 -1
  314. package/dist/dictionary/entry-invariants.d.ts +3 -0
  315. package/dist/dictionary/entry-invariants.d.ts.map +1 -0
  316. package/dist/dictionary/entry-invariants.js +67 -0
  317. package/dist/dictionary/entry-invariants.js.map +1 -0
  318. package/dist/dictionary/entry-lines.d.ts +35 -0
  319. package/dist/dictionary/entry-lines.d.ts.map +1 -0
  320. package/dist/dictionary/entry-lines.js +70 -0
  321. package/dist/dictionary/entry-lines.js.map +1 -0
  322. package/dist/dictionary/erhua-repair.d.ts +26 -0
  323. package/dist/dictionary/erhua-repair.d.ts.map +1 -0
  324. package/dist/dictionary/erhua-repair.js +49 -0
  325. package/dist/dictionary/erhua-repair.js.map +1 -0
  326. package/dist/dictionary/frequency-tones.d.ts +74 -0
  327. package/dist/dictionary/frequency-tones.d.ts.map +1 -0
  328. package/dist/dictionary/frequency-tones.js +128 -0
  329. package/dist/dictionary/frequency-tones.js.map +1 -0
  330. package/dist/dictionary/inventory-invariants.d.ts +3 -0
  331. package/dist/dictionary/inventory-invariants.d.ts.map +1 -0
  332. package/dist/dictionary/inventory-invariants.js +54 -0
  333. package/dist/dictionary/inventory-invariants.js.map +1 -0
  334. package/dist/dictionary/locale-candidates.d.ts +40 -0
  335. package/dist/dictionary/locale-candidates.d.ts.map +1 -0
  336. package/dist/dictionary/locale-candidates.js +77 -0
  337. package/dist/dictionary/locale-candidates.js.map +1 -0
  338. package/dist/dictionary/locale-segments.d.ts +47 -0
  339. package/dist/dictionary/locale-segments.d.ts.map +1 -0
  340. package/dist/dictionary/locale-segments.js +141 -0
  341. package/dist/dictionary/locale-segments.js.map +1 -0
  342. package/dist/dictionary/locale.d.ts +1 -21
  343. package/dist/dictionary/locale.d.ts.map +1 -1
  344. package/dist/dictionary/locale.js +9 -198
  345. package/dist/dictionary/locale.js.map +1 -1
  346. package/dist/dictionary/merge-types.d.ts +121 -0
  347. package/dist/dictionary/merge-types.d.ts.map +1 -0
  348. package/dist/dictionary/merge-types.js +35 -0
  349. package/dist/dictionary/merge-types.js.map +1 -0
  350. package/dist/dictionary/merge-word.d.ts +7 -0
  351. package/dist/dictionary/merge-word.d.ts.map +1 -0
  352. package/dist/dictionary/merge-word.js +91 -0
  353. package/dist/dictionary/merge-word.js.map +1 -0
  354. package/dist/dictionary/merge.d.ts +5 -62
  355. package/dist/dictionary/merge.d.ts.map +1 -1
  356. package/dist/dictionary/merge.js +30 -713
  357. package/dist/dictionary/merge.js.map +1 -1
  358. package/dist/dictionary/proper-noun.d.ts +28 -0
  359. package/dist/dictionary/proper-noun.d.ts.map +1 -0
  360. package/dist/dictionary/proper-noun.js +43 -0
  361. package/dist/dictionary/proper-noun.js.map +1 -0
  362. package/dist/dictionary/reading-agreement.d.ts +71 -0
  363. package/dist/dictionary/reading-agreement.d.ts.map +1 -0
  364. package/dist/dictionary/reading-agreement.js +156 -0
  365. package/dist/dictionary/reading-agreement.js.map +1 -0
  366. package/dist/dictionary/script-conversion.d.ts +28 -0
  367. package/dist/dictionary/script-conversion.d.ts.map +1 -0
  368. package/dist/dictionary/script-conversion.js +58 -0
  369. package/dist/dictionary/script-conversion.js.map +1 -0
  370. package/dist/dictionary/script-pairings.d.ts +74 -0
  371. package/dist/dictionary/script-pairings.d.ts.map +1 -0
  372. package/dist/dictionary/script-pairings.js +120 -0
  373. package/dist/dictionary/script-pairings.js.map +1 -0
  374. package/dist/dictionary/script-tables.d.ts.map +1 -1
  375. package/dist/dictionary/script-tables.js +2 -165
  376. package/dist/dictionary/script-tables.js.map +1 -1
  377. package/dist/dictionary/taiwan-reading.d.ts +8 -0
  378. package/dist/dictionary/taiwan-reading.d.ts.map +1 -0
  379. package/dist/dictionary/taiwan-reading.js +38 -0
  380. package/dist/dictionary/taiwan-reading.js.map +1 -0
  381. package/dist/dictionary/tone-invariants.d.ts +3 -0
  382. package/dist/dictionary/tone-invariants.d.ts.map +1 -0
  383. package/dist/dictionary/tone-invariants.js +64 -0
  384. package/dist/dictionary/tone-invariants.js.map +1 -0
  385. package/dist/dictionary/traditional-form.d.ts +21 -0
  386. package/dist/dictionary/traditional-form.d.ts.map +1 -0
  387. package/dist/dictionary/traditional-form.js +59 -0
  388. package/dist/dictionary/traditional-form.js.map +1 -0
  389. package/dist/dictionary/traditional-ranking.d.ts +22 -0
  390. package/dist/dictionary/traditional-ranking.d.ts.map +1 -0
  391. package/dist/dictionary/traditional-ranking.js +74 -0
  392. package/dist/dictionary/traditional-ranking.js.map +1 -0
  393. package/dist/dictionary/traditional-table.d.ts +51 -0
  394. package/dist/dictionary/traditional-table.d.ts.map +1 -0
  395. package/dist/dictionary/traditional-table.js +98 -0
  396. package/dist/dictionary/traditional-table.js.map +1 -0
  397. package/dist/dictionary/traditional.d.ts +3 -56
  398. package/dist/dictionary/traditional.d.ts.map +1 -1
  399. package/dist/dictionary/traditional.js +3 -186
  400. package/dist/dictionary/traditional.js.map +1 -1
  401. package/dist/dictionary/variant-counts.d.ts +39 -0
  402. package/dist/dictionary/variant-counts.d.ts.map +1 -0
  403. package/dist/dictionary/variant-counts.js +38 -0
  404. package/dist/dictionary/variant-counts.js.map +1 -0
  405. package/dist/dictionary/word-reading.d.ts +26 -0
  406. package/dist/dictionary/word-reading.d.ts.map +1 -0
  407. package/dist/dictionary/word-reading.js +76 -0
  408. package/dist/dictionary/word-reading.js.map +1 -0
  409. package/dist/dictionary/word-readings.d.ts +15 -0
  410. package/dist/dictionary/word-readings.d.ts.map +1 -0
  411. package/dist/dictionary/word-readings.js +38 -0
  412. package/dist/dictionary/word-readings.js.map +1 -0
  413. package/dist/format/annotate.d.ts +90 -0
  414. package/dist/format/annotate.d.ts.map +1 -0
  415. package/dist/format/annotate.js +168 -0
  416. package/dist/format/annotate.js.map +1 -0
  417. package/dist/format/html.d.ts +15 -46
  418. package/dist/format/html.d.ts.map +1 -1
  419. package/dist/format/html.js +3 -162
  420. package/dist/format/html.js.map +1 -1
  421. package/dist/format/slug-hash.d.ts +51 -0
  422. package/dist/format/slug-hash.d.ts.map +1 -0
  423. package/dist/format/slug-hash.js +74 -0
  424. package/dist/format/slug-hash.js.map +1 -0
  425. package/dist/format/slug-options.d.ts +98 -0
  426. package/dist/format/slug-options.d.ts.map +1 -0
  427. package/dist/format/slug-options.js +2 -0
  428. package/dist/format/slug-options.js.map +1 -0
  429. package/dist/format/slug-words.d.ts +27 -0
  430. package/dist/format/slug-words.d.ts.map +1 -0
  431. package/dist/format/slug-words.js +0 -0
  432. package/dist/format/slug-words.js.map +1 -0
  433. package/dist/format/slug.d.ts +3 -128
  434. package/dist/format/slug.d.ts.map +1 -1
  435. package/dist/format/slug.js +0 -0
  436. package/dist/format/slug.js.map +1 -1
  437. package/dist/grade/check-readings.d.ts +41 -0
  438. package/dist/grade/check-readings.d.ts.map +1 -0
  439. package/dist/grade/check-readings.js +36 -0
  440. package/dist/grade/check-readings.js.map +1 -0
  441. package/dist/grade/check.d.ts +4 -4
  442. package/dist/grade/check.d.ts.map +1 -1
  443. package/dist/grade/check.js +5 -270
  444. package/dist/grade/check.js.map +1 -1
  445. package/dist/grade/pair-syllables.d.ts +48 -0
  446. package/dist/grade/pair-syllables.d.ts.map +1 -0
  447. package/dist/grade/pair-syllables.js +71 -0
  448. package/dist/grade/pair-syllables.js.map +1 -0
  449. package/dist/grade/reading-syllables.d.ts +62 -0
  450. package/dist/grade/reading-syllables.d.ts.map +1 -0
  451. package/dist/grade/reading-syllables.js +58 -0
  452. package/dist/grade/reading-syllables.js.map +1 -0
  453. package/dist/grade/reading-tolerance.d.ts +72 -0
  454. package/dist/grade/reading-tolerance.d.ts.map +1 -0
  455. package/dist/grade/reading-tolerance.js +107 -0
  456. package/dist/grade/reading-tolerance.js.map +1 -0
  457. package/dist/grade/typed-reading.d.ts +28 -0
  458. package/dist/grade/typed-reading.d.ts.map +1 -0
  459. package/dist/grade/typed-reading.js +36 -0
  460. package/dist/grade/typed-reading.js.map +1 -0
  461. package/dist/numerals/numeral-parse.d.ts +32 -0
  462. package/dist/numerals/numeral-parse.d.ts.map +1 -0
  463. package/dist/numerals/numeral-parse.js +44 -0
  464. package/dist/numerals/numeral-parse.js.map +1 -0
  465. package/dist/numerals/numeral-shapes.d.ts +89 -0
  466. package/dist/numerals/numeral-shapes.d.ts.map +1 -0
  467. package/dist/numerals/numeral-shapes.js +99 -0
  468. package/dist/numerals/numeral-shapes.js.map +1 -0
  469. package/dist/numerals/numerals.d.ts.map +1 -1
  470. package/dist/numerals/numerals.js +2 -36
  471. package/dist/numerals/numerals.js.map +1 -1
  472. package/dist/numerals/read-numeral.d.ts +76 -0
  473. package/dist/numerals/read-numeral.d.ts.map +1 -0
  474. package/dist/numerals/read-numeral.js +88 -0
  475. package/dist/numerals/read-numeral.js.map +1 -0
  476. package/dist/numerals/text.d.ts +3 -37
  477. package/dist/numerals/text.d.ts.map +1 -1
  478. package/dist/numerals/text.js +3 -254
  479. package/dist/numerals/text.js.map +1 -1
  480. package/dist/numerals/time.d.ts +34 -0
  481. package/dist/numerals/time.d.ts.map +1 -0
  482. package/dist/numerals/time.js +93 -0
  483. package/dist/numerals/time.js.map +1 -0
  484. package/dist/orthography/address-grouping.d.ts +34 -0
  485. package/dist/orthography/address-grouping.d.ts.map +1 -0
  486. package/dist/orthography/address-grouping.js +52 -0
  487. package/dist/orthography/address-grouping.js.map +1 -0
  488. package/dist/orthography/grouping.d.ts +3 -87
  489. package/dist/orthography/grouping.d.ts.map +1 -1
  490. package/dist/orthography/grouping.js +4 -270
  491. package/dist/orthography/grouping.js.map +1 -1
  492. package/dist/orthography/place-grouping.d.ts +39 -0
  493. package/dist/orthography/place-grouping.d.ts.map +1 -0
  494. package/dist/orthography/place-grouping.js +83 -0
  495. package/dist/orthography/place-grouping.js.map +1 -0
  496. package/dist/orthography/word-grouping.d.ts +48 -0
  497. package/dist/orthography/word-grouping.d.ts.map +1 -0
  498. package/dist/orthography/word-grouping.js +147 -0
  499. package/dist/orthography/word-grouping.js.map +1 -0
  500. package/dist/script/conversion-format.d.ts +22 -0
  501. package/dist/script/conversion-format.d.ts.map +1 -0
  502. package/dist/script/conversion-format.js +22 -0
  503. package/dist/script/conversion-format.js.map +1 -0
  504. package/dist/script/conversion-read.d.ts +9 -0
  505. package/dist/script/conversion-read.d.ts.map +1 -0
  506. package/dist/script/conversion-read.js +69 -0
  507. package/dist/script/conversion-read.js.map +1 -0
  508. package/dist/script/conversion-write.d.ts +14 -0
  509. package/dist/script/conversion-write.d.ts.map +1 -0
  510. package/dist/script/conversion-write.js +34 -0
  511. package/dist/script/conversion-write.js.map +1 -0
  512. package/dist/script/conversion.d.ts +10 -16
  513. package/dist/script/conversion.d.ts.map +1 -1
  514. package/dist/script/conversion.js +2 -115
  515. package/dist/script/conversion.js.map +1 -1
  516. package/dist/search/candidate-narrowing.d.ts +56 -0
  517. package/dist/search/candidate-narrowing.d.ts.map +1 -0
  518. package/dist/search/candidate-narrowing.js +55 -0
  519. package/dist/search/candidate-narrowing.js.map +1 -0
  520. package/dist/search/candidate-query.d.ts +25 -0
  521. package/dist/search/candidate-query.d.ts.map +1 -0
  522. package/dist/search/candidate-query.js +28 -0
  523. package/dist/search/candidate-query.js.map +1 -0
  524. package/dist/search/candidate-writings.d.ts +24 -0
  525. package/dist/search/candidate-writings.d.ts.map +1 -0
  526. package/dist/search/candidate-writings.js +114 -0
  527. package/dist/search/candidate-writings.js.map +1 -0
  528. package/dist/search/candidates.d.ts +7 -41
  529. package/dist/search/candidates.d.ts.map +1 -1
  530. package/dist/search/candidates.js +10 -164
  531. package/dist/search/candidates.js.map +1 -1
  532. package/dist/search/match-chunks.d.ts +19 -0
  533. package/dist/search/match-chunks.d.ts.map +1 -0
  534. package/dist/search/match-chunks.js +30 -0
  535. package/dist/search/match-chunks.js.map +1 -0
  536. package/dist/search/match-ranking.d.ts +39 -0
  537. package/dist/search/match-ranking.d.ts.map +1 -0
  538. package/dist/search/match-ranking.js +51 -0
  539. package/dist/search/match-ranking.js.map +1 -0
  540. package/dist/search/match-readings.d.ts +43 -0
  541. package/dist/search/match-readings.d.ts.map +1 -0
  542. package/dist/search/match-readings.js +83 -0
  543. package/dist/search/match-readings.js.map +1 -0
  544. package/dist/search/match-scoring.d.ts +146 -0
  545. package/dist/search/match-scoring.d.ts.map +1 -0
  546. package/dist/search/match-scoring.js +114 -0
  547. package/dist/search/match-scoring.js.map +1 -0
  548. package/dist/search/match-search.d.ts +28 -0
  549. package/dist/search/match-search.d.ts.map +1 -0
  550. package/dist/search/match-search.js +128 -0
  551. package/dist/search/match-search.js.map +1 -0
  552. package/dist/search/match.d.ts +5 -36
  553. package/dist/search/match.d.ts.map +1 -1
  554. package/dist/search/match.js +2 -379
  555. package/dist/search/match.js.map +1 -1
  556. package/dist/search/reverse-index-build.d.ts +30 -0
  557. package/dist/search/reverse-index-build.d.ts.map +1 -0
  558. package/dist/search/reverse-index-build.js +72 -0
  559. package/dist/search/reverse-index-build.js.map +1 -0
  560. package/dist/search/reverse-index-format.d.ts +60 -0
  561. package/dist/search/reverse-index-format.d.ts.map +1 -0
  562. package/dist/search/reverse-index-format.js +54 -0
  563. package/dist/search/reverse-index-format.js.map +1 -0
  564. package/dist/search/reverse-index-groups.d.ts +37 -0
  565. package/dist/search/reverse-index-groups.d.ts.map +1 -0
  566. package/dist/search/reverse-index-groups.js +71 -0
  567. package/dist/search/reverse-index-groups.js.map +1 -0
  568. package/dist/search/reverse-index-passes.d.ts +78 -0
  569. package/dist/search/reverse-index-passes.d.ts.map +1 -0
  570. package/dist/search/reverse-index-passes.js +59 -0
  571. package/dist/search/reverse-index-passes.js.map +1 -0
  572. package/dist/search/reverse-index-state.d.ts +36 -0
  573. package/dist/search/reverse-index-state.d.ts.map +1 -0
  574. package/dist/search/reverse-index-state.js +95 -0
  575. package/dist/search/reverse-index-state.js.map +1 -0
  576. package/dist/search/reverse-index.d.ts +8 -67
  577. package/dist/search/reverse-index.d.ts.map +1 -1
  578. package/dist/search/reverse-index.js +4 -255
  579. package/dist/search/reverse-index.js.map +1 -1
  580. package/dist/sources/unihan-readings.d.ts +58 -0
  581. package/dist/sources/unihan-readings.d.ts.map +1 -0
  582. package/dist/sources/unihan-readings.js +95 -0
  583. package/dist/sources/unihan-readings.js.map +1 -0
  584. package/dist/sources/unihan.d.ts +6 -9
  585. package/dist/sources/unihan.d.ts.map +1 -1
  586. package/dist/sources/unihan.js +2 -85
  587. package/dist/sources/unihan.js.map +1 -1
  588. package/dist/syllable/final-tables.d.ts +23 -0
  589. package/dist/syllable/final-tables.d.ts.map +1 -0
  590. package/dist/syllable/final-tables.js +50 -0
  591. package/dist/syllable/final-tables.js.map +1 -0
  592. package/dist/syllable/inventory.d.ts +8 -42
  593. package/dist/syllable/inventory.d.ts.map +1 -1
  594. package/dist/syllable/inventory.js +9 -918
  595. package/dist/syllable/inventory.js.map +1 -1
  596. package/dist/syllable/spellings.d.ts +40 -0
  597. package/dist/syllable/spellings.d.ts.map +1 -0
  598. package/dist/syllable/spellings.js +469 -0
  599. package/dist/syllable/spellings.js.map +1 -0
  600. package/dist/syllable/syllable-parts.d.ts +31 -0
  601. package/dist/syllable/syllable-parts.d.ts.map +1 -0
  602. package/dist/syllable/syllable-parts.js +105 -0
  603. package/dist/syllable/syllable-parts.js.map +1 -0
  604. package/dist/syllable/syllable.d.ts +1 -14
  605. package/dist/syllable/syllable.d.ts.map +1 -1
  606. package/dist/syllable/syllable.js +3 -144
  607. package/dist/syllable/syllable.js.map +1 -1
  608. package/dist/syllable/written-tones.d.ts +6 -0
  609. package/dist/syllable/written-tones.d.ts.map +1 -0
  610. package/dist/syllable/written-tones.js +453 -0
  611. package/dist/syllable/written-tones.js.map +1 -0
  612. package/dist/transcription/bopomofo-parse.d.ts +42 -0
  613. package/dist/transcription/bopomofo-parse.d.ts.map +1 -0
  614. package/dist/transcription/bopomofo-parse.js +92 -0
  615. package/dist/transcription/bopomofo-parse.js.map +1 -0
  616. package/dist/transcription/bopomofo-reverse.d.ts +31 -0
  617. package/dist/transcription/bopomofo-reverse.d.ts.map +1 -0
  618. package/dist/transcription/bopomofo-reverse.js +48 -0
  619. package/dist/transcription/bopomofo-reverse.js.map +1 -0
  620. package/dist/transcription/bopomofo-symbols.d.ts +36 -0
  621. package/dist/transcription/bopomofo-symbols.d.ts.map +1 -0
  622. package/dist/transcription/bopomofo-symbols.js +41 -0
  623. package/dist/transcription/bopomofo-symbols.js.map +1 -0
  624. package/dist/transcription/bopomofo-tables.d.ts +87 -0
  625. package/dist/transcription/bopomofo-tables.d.ts.map +1 -0
  626. package/dist/transcription/bopomofo-tables.js +180 -0
  627. package/dist/transcription/bopomofo-tables.js.map +1 -0
  628. package/dist/transcription/bopomofo.d.ts +14 -32
  629. package/dist/transcription/bopomofo.d.ts.map +1 -1
  630. package/dist/transcription/bopomofo.js +5 -343
  631. package/dist/transcription/bopomofo.js.map +1 -1
  632. package/dist/transcription/gwoyeu-first-second.d.ts +36 -0
  633. package/dist/transcription/gwoyeu-first-second.d.ts.map +1 -0
  634. package/dist/transcription/gwoyeu-first-second.js +75 -0
  635. package/dist/transcription/gwoyeu-first-second.js.map +1 -0
  636. package/dist/transcription/gwoyeu-spelling.d.ts +38 -0
  637. package/dist/transcription/gwoyeu-spelling.d.ts.map +1 -0
  638. package/dist/transcription/gwoyeu-spelling.js +124 -0
  639. package/dist/transcription/gwoyeu-spelling.js.map +1 -0
  640. package/dist/transcription/gwoyeu-tables.d.ts +93 -0
  641. package/dist/transcription/gwoyeu-tables.d.ts.map +1 -0
  642. package/dist/transcription/gwoyeu-tables.js +205 -0
  643. package/dist/transcription/gwoyeu-tables.js.map +1 -0
  644. package/dist/transcription/gwoyeu-tonal-forms.d.ts +49 -0
  645. package/dist/transcription/gwoyeu-tonal-forms.d.ts.map +1 -0
  646. package/dist/transcription/gwoyeu-tonal-forms.js +89 -0
  647. package/dist/transcription/gwoyeu-tonal-forms.js.map +1 -0
  648. package/dist/transcription/gwoyeu-vowels.d.ts +51 -0
  649. package/dist/transcription/gwoyeu-vowels.d.ts.map +1 -0
  650. package/dist/transcription/gwoyeu-vowels.js +58 -0
  651. package/dist/transcription/gwoyeu-vowels.js.map +1 -0
  652. package/dist/transcription/gwoyeu.d.ts +1 -26
  653. package/dist/transcription/gwoyeu.d.ts.map +1 -1
  654. package/dist/transcription/gwoyeu.js +2 -540
  655. package/dist/transcription/gwoyeu.js.map +1 -1
  656. package/dist/transcription/ipa-symbols.d.ts +67 -0
  657. package/dist/transcription/ipa-symbols.d.ts.map +1 -0
  658. package/dist/transcription/ipa-symbols.js +135 -0
  659. package/dist/transcription/ipa-symbols.js.map +1 -0
  660. package/dist/transcription/ipa.d.ts +2 -10
  661. package/dist/transcription/ipa.d.ts.map +1 -1
  662. package/dist/transcription/ipa.js +2 -134
  663. package/dist/transcription/ipa.js.map +1 -1
  664. package/dist/transcription/wade-giles-index.d.ts +35 -0
  665. package/dist/transcription/wade-giles-index.d.ts.map +1 -0
  666. package/dist/transcription/wade-giles-index.js +110 -0
  667. package/dist/transcription/wade-giles-index.js.map +1 -0
  668. package/dist/transcription/wade-giles-parse.d.ts +36 -0
  669. package/dist/transcription/wade-giles-parse.d.ts.map +1 -0
  670. package/dist/transcription/wade-giles-parse.js +84 -0
  671. package/dist/transcription/wade-giles-parse.js.map +1 -0
  672. package/dist/transcription/wade-giles-spelling.d.ts +61 -0
  673. package/dist/transcription/wade-giles-spelling.d.ts.map +1 -0
  674. package/dist/transcription/wade-giles-spelling.js +107 -0
  675. package/dist/transcription/wade-giles-spelling.js.map +1 -0
  676. package/dist/transcription/wade-giles-syllable.d.ts +29 -0
  677. package/dist/transcription/wade-giles-syllable.d.ts.map +1 -0
  678. package/dist/transcription/wade-giles-syllable.js +90 -0
  679. package/dist/transcription/wade-giles-syllable.js.map +1 -0
  680. package/dist/transcription/wade-giles-tables.d.ts +80 -0
  681. package/dist/transcription/wade-giles-tables.d.ts.map +1 -0
  682. package/dist/transcription/wade-giles-tables.js +178 -0
  683. package/dist/transcription/wade-giles-tables.js.map +1 -0
  684. package/dist/transcription/wade-giles.d.ts +9 -60
  685. package/dist/transcription/wade-giles.d.ts.map +1 -1
  686. package/dist/transcription/wade-giles.js +6 -543
  687. package/dist/transcription/wade-giles.js.map +1 -1
  688. package/dist/transcription/yale-tables.d.ts +54 -0
  689. package/dist/transcription/yale-tables.d.ts.map +1 -0
  690. package/dist/transcription/yale-tables.js +125 -0
  691. package/dist/transcription/yale-tables.js.map +1 -0
  692. package/dist/transcription/yale.d.ts.map +1 -1
  693. package/dist/transcription/yale.js +1 -124
  694. package/dist/transcription/yale.js.map +1 -1
  695. package/package.json +2 -2
package/dist/cli/help.js CHANGED
@@ -1,110 +1,16 @@
1
1
  import { COMMANDS } from "./commands.js";
2
+ import { flagLine, GLOBAL_HELP } from "./global-help.js";
2
3
  /**
3
- * What each flag does, for the help.
4
+ * How wide the command column is, derived rather than written down.
4
5
  *
5
- * Keyed by flag name so that a command's help lists exactly the flags it takes
6
- * and nothing else.
7
- */
8
- const FLAG_HELP = new Map([
9
- ["notation", "marks (default), numbers, superscript or none"],
10
- ["locale", "zh-CN (default) or zh-TW"],
11
- ["apostrophe", "always (default), standard or never"],
12
- ["capitals", "auto (default), proper or none"],
13
- ["punctuation", "latin (default) or keep"],
14
- ["no-grouping", "do not apply GB/T 16159 word spacing"],
15
- ["third-tone", "write third-tone sandhi: nǐ hǎo becomes ní hǎo"],
16
- ["no-sandhi", "do not write 一 and 不 sandhi"],
17
- ["tones", "numbers (default) or none"],
18
- ["require-tones", "count a syllable typed with no tone as wrong"],
19
- ["require-spacing", "count the word spacing towards the score"],
20
- ["separator", "what goes between words, - by default"],
21
- ["syllables", "join (default) or separate"],
22
- ["umlaut", "how ü is written: v (default) or u"],
23
- ["hash", "add a short hash of the text, to narrow collisions"],
24
- ["hash-length", "how many characters that hash is, 4 by default"],
25
- ["max-length", "the longest the slug may be, cut at a word"],
26
- ["fallback", "what to write where a text slugs to nothing"],
27
- ["read-numbers", "say the digits rather than keeping them"],
28
- ["query", "the pinyin to look for: beijing, bei jing or bj"],
29
- ["greedy", "decode with the old longest-match baseline"],
30
- ["system", "write it in bopomofo, wade-giles, yale, gwoyeu or ipa"],
31
- ["no-tone-classes", "leave the tone classes off"],
32
- ["no-uncertain", "do not mark uncertain readings"],
33
- ["no-lang", "leave the lang attribute off"],
34
- ["from", "pinyin, wade-giles or bopomofo (auto by default)"],
35
- ["to", "zh-Hans (default), zh-Hant, zh-Hant-TW or zh-Hant-HK"],
36
- ["from-script", "Hans or Hant, where detection cannot tell"],
37
- ["data", "read the dictionary from this directory"],
38
- ["tier", "core, standard or full (default)"],
39
- ]);
40
- /**
41
- * How wide the command column is in the listing.
42
- *
43
- * Derived from the longest name rather than fixed, because a fixed 10 was
44
- * exactly the width of `transcribe` and ran the summary straight into it. A
6
+ * Hard-coding it was how the table last went wrong: a fixed 12 was exactly
7
+ * the width of `transcribe` and ran the summary straight into it. A
45
8
  * number that has to be revisited whenever a command is added is a number that
46
9
  * will not be.
47
10
  */
48
11
  const COMMAND_WIDTH = Math.max(...COMMANDS.map((command) => command.name.length)) + 2;
49
12
  /**
50
- * The flags that take a value after them, as opposed to standing alone.
51
- */
52
- const VALUE_FLAGS = new Set([
53
- "query",
54
- "from",
55
- "to",
56
- "from-script",
57
- "system",
58
- "notation",
59
- "locale",
60
- "apostrophe",
61
- "capitals",
62
- "punctuation",
63
- "tones",
64
- "separator",
65
- "syllables",
66
- "umlaut",
67
- "hash-length",
68
- "max-length",
69
- "fallback",
70
- ]);
71
- /**
72
- * A flag as the help writes it, before its description.
73
- */
74
- function flagWritten(name) {
75
- return `--${name}${VALUE_FLAGS.has(name) ? " <value>" : ""}`;
76
- }
77
- /**
78
- * The global flags, listed under every command's help.
79
- *
80
- * Both spellings of the colour flags are listed rather than one being a quiet
81
- * alias: nobody should have to discover which of the two this command chose.
82
- */
83
- const GLOBAL_FLAG_HELP = [
84
- ["--data <dir>", "read the dictionary from this directory"],
85
- ["--tier <tier>", "core, standard or full (default)"],
86
- ["--colour, --color", "colour the tones, terminal or not"],
87
- ["--no-colour, --no-color", "leave the tones uncoloured"],
88
- ["--json", "write one JSON document per answer"],
89
- ["-h, --help", "show this help"],
90
- ["-v, --version", "show the version"],
91
- ];
92
- /**
93
- * How wide the flag column is, which is the longest flag written plus a gap.
94
- *
95
- * Derived for the same reason {@link COMMAND_WIDTH} is: it was a fixed 23, and
96
- * `--no-colour, --no-color` is exactly 23 characters long.
97
- */
98
- const FLAG_WIDTH = Math.max(...GLOBAL_FLAG_HELP.map(([flag]) => flag.length), ...[...FLAG_HELP.keys()].map((name) => flagWritten(name).length)) + 2;
99
- const GLOBAL_HELP = GLOBAL_FLAG_HELP.map(([flag, help]) => ` ${flag.padEnd(FLAG_WIDTH)}${help}`);
100
- /**
101
- * A flag as the help lists it.
102
- */
103
- function flagLine(name) {
104
- return ` ${flagWritten(name).padEnd(FLAG_WIDTH)}${FLAG_HELP.get(name) ?? ""}`;
105
- }
106
- /**
107
- * The help for one command.
13
+ * The help for one command: what it does, and the flags it takes.
108
14
  */
109
15
  export function commandHelp(command) {
110
16
  return [
@@ -1 +1 @@
1
- {"version":3,"file":"help.js","sourceRoot":"","sources":["../../src/cli/help.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"help.js","sourceRoot":"","sources":["../../src/cli/help.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,QAAQ,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEzD;;;;;;;GAOG;AACH,MAAM,aAAa,GACjB,IAAI,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC;AAElE;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,OAAgB;IAC1C,OAAO;QACL,YAAY,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,QAAQ,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,QAAQ,EAAE,EAAE;QAClF,EAAE;QACF,KAAK,OAAO,CAAC,OAAO,GAAG;QACvB,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC;YAClC,CAAC,CAAC,CAAC,EAAE,EAAE,iDAAiD,CAAC;YACzD,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;YAC1B,CAAC,CAAC,CAAC,EAAE,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;YAClE,CAAC,CAAC,EAAE,CAAC;QACP,EAAE;QACF,4BAA4B;QAC5B,GAAG,WAAW;KACf,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW;IACzB,OAAO;QACL,4DAA4D;QAC5D,EAAE;QACF,iDAAiD;QACjD,EAAE;QACF,WAAW;QACX,GAAG,QAAQ,CAAC,GAAG,CACb,CAAC,OAAO,EAAE,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,OAAO,CAAC,OAAO,EAAE,CACzE;QACD,EAAE;QACF,4BAA4B;QAC5B,GAAG,WAAW;QACd,EAAE;QACF,4DAA4D;QAC5D,EAAE;QACF,WAAW;QACX,2BAA2B;QAC3B,0CAA0C;QAC1C,wBAAwB;QACxB,yBAAyB;QACzB,sBAAsB;QACtB,yCAAyC;QACzC,2BAA2B;QAC3B,+BAA+B;QAC/B,sCAAsC;KACvC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { type Command } from "./command.js";
2
+ /**
3
+ * Convert each text to HTML, one element per syllable.
4
+ */
5
+ export declare const HTML: Command;
6
+ /**
7
+ * Annotate each text: the hanzi, with its reading above.
8
+ *
9
+ * Uncoloured for the same reason `html` is — the classes are the hook, and a
10
+ * terminal escape code inside markup would be pasted into a page.
11
+ */
12
+ export declare const ANNOTATE: Command;
13
+ //# sourceMappingURL=html-commands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"html-commands.d.ts","sourceRoot":"","sources":["../../src/cli/html-commands.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,KAAK,OAAO,EAAgB,MAAM,cAAc,CAAC;AAE1D;;GAEG;AACH,eAAO,MAAM,IAAI,EAAE,OAalB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,QAAQ,EAAE,OAatB,CAAC"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * The conversions that hand back markup rather than text.
3
+ *
4
+ * `html` writes one element per syllable and `annotate` puts the reading above
5
+ * the hanzi as ruby. They sit together because they take the same options and
6
+ * are both uncoloured for the same reason: the classes are the hook, and a
7
+ * terminal escape code inside markup would be pasted into a page.
8
+ */
9
+ import { convertToAnnotatedHtml, convertToHtml } from "../format/html.js";
10
+ import { CONVERT_FLAGS, htmlOptions } from "./arguments.js";
11
+ import { dictionaryOf } from "./command.js";
12
+ /**
13
+ * Convert each text to HTML, one element per syllable.
14
+ */
15
+ export const HTML = {
16
+ name: "html",
17
+ summary: "hanzi to pinyin as HTML, one element per syllable",
18
+ argument: "[text...]",
19
+ flags: [...CONVERT_FLAGS, "no-tone-classes", "no-uncertain", "no-lang"],
20
+ needsDictionary: true,
21
+ run: (input) => {
22
+ const options = htmlOptions(input.flags);
23
+ return input.texts.map((text) => {
24
+ const html = convertToHtml(dictionaryOf(input), text, options);
25
+ return { lines: [html], data: { text, html } };
26
+ });
27
+ },
28
+ };
29
+ /**
30
+ * Annotate each text: the hanzi, with its reading above.
31
+ *
32
+ * Uncoloured for the same reason `html` is — the classes are the hook, and a
33
+ * terminal escape code inside markup would be pasted into a page.
34
+ */
35
+ export const ANNOTATE = {
36
+ name: "annotate",
37
+ summary: "hanzi with its pinyin above, as ruby HTML",
38
+ argument: "[text...]",
39
+ flags: [...CONVERT_FLAGS, "no-tone-classes", "no-uncertain", "no-lang"],
40
+ needsDictionary: true,
41
+ run: (input) => {
42
+ const options = htmlOptions(input.flags);
43
+ return input.texts.map((text) => {
44
+ const html = convertToAnnotatedHtml(dictionaryOf(input), text, options);
45
+ return { lines: [html], data: { text, html } };
46
+ });
47
+ },
48
+ };
49
+ //# sourceMappingURL=html-commands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"html-commands.js","sourceRoot":"","sources":["../../src/cli/html-commands.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,sBAAsB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAgB,YAAY,EAAE,MAAM,cAAc,CAAC;AAE1D;;GAEG;AACH,MAAM,CAAC,MAAM,IAAI,GAAY;IAC3B,IAAI,EAAE,MAAM;IACZ,OAAO,EAAE,mDAAmD;IAC5D,QAAQ,EAAE,WAAW;IACrB,KAAK,EAAE,CAAC,GAAG,aAAa,EAAE,iBAAiB,EAAE,cAAc,EAAE,SAAS,CAAC;IACvE,eAAe,EAAE,IAAI;IACrB,GAAG,EAAE,CAAC,KAAK,EAAE,EAAE;QACb,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACzC,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YAC9B,MAAM,IAAI,GAAG,aAAa,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;YAC/D,OAAO,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC;QACjD,CAAC,CAAC,CAAC;IACL,CAAC;CACF,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAY;IAC/B,IAAI,EAAE,UAAU;IAChB,OAAO,EAAE,2CAA2C;IACpD,QAAQ,EAAE,WAAW;IACrB,KAAK,EAAE,CAAC,GAAG,aAAa,EAAE,iBAAiB,EAAE,cAAc,EAAE,SAAS,CAAC;IACvE,eAAe,EAAE,IAAI;IACrB,GAAG,EAAE,CAAC,KAAK,EAAE,EAAE;QACb,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACzC,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YAC9B,MAAM,IAAI,GAAG,sBAAsB,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;YACxE,OAAO,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC;QACjD,CAAC,CAAC,CAAC;IACL,CAAC;CACF,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { type Command } from "./command.js";
2
+ /**
3
+ * Report what is loaded, which is the first thing to check when output looks
4
+ * wrong.
5
+ */
6
+ export declare const INFO: Command;
7
+ //# sourceMappingURL=info-command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"info-command.d.ts","sourceRoot":"","sources":["../../src/cli/info-command.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,KAAK,OAAO,EAAgB,MAAM,cAAc,CAAC;AAE1D;;;GAGG;AACH,eAAO,MAAM,IAAI,EAAE,OA2BlB,CAAC"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Reporting what is loaded, which is the first thing to check when output
3
+ * looks wrong.
4
+ */
5
+ import { ATTESTED_SYLLABLES, DICTIONARY_SYLLABLES, } from "../syllable/inventory.js";
6
+ import { dictionaryOf } from "./command.js";
7
+ /**
8
+ * Report what is loaded, which is the first thing to check when output looks
9
+ * wrong.
10
+ */
11
+ export const INFO = {
12
+ name: "info",
13
+ summary: "which dictionary is loaded, and how big it is",
14
+ argument: "",
15
+ flags: [],
16
+ needsDictionary: true,
17
+ run: (input) => {
18
+ const keys = dictionaryOf(input).size;
19
+ const directory = input.choice.directory;
20
+ return [
21
+ {
22
+ lines: [
23
+ `tier ${input.choice.tier}`,
24
+ `data ${directory ?? "the artifacts that shipped"}`,
25
+ `keys ${keys.toLocaleString("en-GB")}`,
26
+ `syllables ${String(ATTESTED_SYLLABLES.length)} attested, ${String(DICTIONARY_SYLLABLES.size)} spellings in the inventory`,
27
+ ],
28
+ data: {
29
+ tier: input.choice.tier,
30
+ ...(directory !== undefined && { data: directory }),
31
+ keys,
32
+ attestedSyllables: ATTESTED_SYLLABLES.length,
33
+ inventorySpellings: DICTIONARY_SYLLABLES.size,
34
+ },
35
+ },
36
+ ];
37
+ },
38
+ };
39
+ //# sourceMappingURL=info-command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"info-command.js","sourceRoot":"","sources":["../../src/cli/info-command.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EACL,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAgB,YAAY,EAAE,MAAM,cAAc,CAAC;AAE1D;;;GAGG;AACH,MAAM,CAAC,MAAM,IAAI,GAAY;IAC3B,IAAI,EAAE,MAAM;IACZ,OAAO,EAAE,+CAA+C;IACxD,QAAQ,EAAE,EAAE;IACZ,KAAK,EAAE,EAAE;IACT,eAAe,EAAE,IAAI;IACrB,GAAG,EAAE,CAAC,KAAK,EAAE,EAAE;QACb,MAAM,IAAI,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC;QACtC,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC;QACzC,OAAO;YACL;gBACE,KAAK,EAAE;oBACL,cAAc,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE;oBACjC,cAAc,SAAS,IAAI,4BAA4B,EAAE;oBACzD,cAAc,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE;oBAC5C,cAAc,MAAM,CAAC,kBAAkB,CAAC,MAAM,CAAC,cAAc,MAAM,CAAC,oBAAoB,CAAC,IAAI,CAAC,6BAA6B;iBAC5H;gBACD,IAAI,EAAE;oBACJ,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI;oBACvB,GAAG,CAAC,SAAS,KAAK,SAAS,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;oBACnD,IAAI;oBACJ,iBAAiB,EAAE,kBAAkB,CAAC,MAAM;oBAC5C,kBAAkB,EAAE,oBAAoB,CAAC,IAAI;iBAC9C;aACF;SACF,CAAC;IACJ,CAAC;CACF,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { type Command } from "./command.js";
2
+ /**
3
+ * Look words up in the dictionary.
4
+ */
5
+ export declare const LOOKUP: Command;
6
+ /**
7
+ * Apply sandhi to written pinyin, with no dictionary at all.
8
+ */
9
+ export declare const SANDHI: Command;
10
+ //# sourceMappingURL=lookup-commands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lookup-commands.d.ts","sourceRoot":"","sources":["../../src/cli/lookup-commands.ts"],"names":[],"mappings":"AAYA,OAAO,EACL,KAAK,OAAO,EAIb,MAAM,cAAc,CAAC;AAoDtB;;GAEG;AACH,eAAO,MAAM,MAAM,EAAE,OAUpB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,MAAM,EAAE,OAkCpB,CAAC"}
@@ -0,0 +1,101 @@
1
+ /**
2
+ * The subcommands that look a word up rather than decode one.
3
+ *
4
+ * `lookup` reports what the dictionary stores for a word and `sandhi` shows
5
+ * what the runtime pass does to a reading. Neither asks the decoder to choose
6
+ * anything, which is what separates them from `explain` and `syllable`.
7
+ */
8
+ import { applySandhi } from "../decode/sandhi.js";
9
+ import { readWord } from "../syllable/split.js";
10
+ import { convertOptions } from "./arguments.js";
11
+ import { PLAIN } from "./colour.js";
12
+ import { dictionaryOf, written, } from "./command.js";
13
+ /**
14
+ * What the dictionary holds for a word.
15
+ */
16
+ function entryFound(dictionary, word, paint) {
17
+ const entry = dictionary.lookup(word);
18
+ if (entry === undefined) {
19
+ return {
20
+ lines: [`${word} not in the dictionary`],
21
+ data: { word, found: false },
22
+ };
23
+ }
24
+ const tags = [
25
+ entry.partOfSpeech,
26
+ entry.isProperNoun ? "proper noun" : "",
27
+ ].filter((tag) => tag !== "");
28
+ const others = dictionary.readingsOf(word).slice(1);
29
+ return {
30
+ lines: [
31
+ `${word} ${written(entry.reading, paint)}${tags.length > 0 ? ` ${tags.join(", ")}` : ""}`,
32
+ ...(entry.taiwanReading === undefined
33
+ ? []
34
+ : [` zh-TW ${written(entry.taiwanReading, paint)}`]),
35
+ ...(others.length > 0
36
+ ? [
37
+ ` also ${others
38
+ .map((reading) => written(reading, paint))
39
+ .join(", ")}`,
40
+ ]
41
+ : []),
42
+ ],
43
+ data: {
44
+ word,
45
+ found: true,
46
+ reading: written(entry.reading, PLAIN),
47
+ partOfSpeech: entry.partOfSpeech,
48
+ isProperNoun: entry.isProperNoun,
49
+ ...(entry.taiwanReading !== undefined && {
50
+ taiwanReading: written(entry.taiwanReading, PLAIN),
51
+ }),
52
+ otherReadings: others.map((reading) => written(reading, PLAIN)),
53
+ },
54
+ };
55
+ }
56
+ /**
57
+ * Look words up in the dictionary.
58
+ */
59
+ export const LOOKUP = {
60
+ name: "lookup",
61
+ summary: "what the dictionary holds for a word",
62
+ argument: "<word...>",
63
+ flags: [],
64
+ needsDictionary: true,
65
+ run: (input) => input.texts.map((word) => entryFound(dictionaryOf(input), word, input.paint)),
66
+ };
67
+ /**
68
+ * Apply sandhi to written pinyin, with no dictionary at all.
69
+ */
70
+ export const SANDHI = {
71
+ name: "sandhi",
72
+ summary: "apply tone sandhi to written pinyin",
73
+ argument: "<pinyin...>",
74
+ flags: ["third-tone", "no-sandhi"],
75
+ needsDictionary: false,
76
+ run: (input) => {
77
+ const options = convertOptions(input.flags).sandhi;
78
+ return input.texts.map((text) => {
79
+ // Whitespace is the only word boundary written pinyin has, and third-tone
80
+ // sandhi needs it: 行長很喜歡 is `hángzhǎng hén xǐhuan`, where a scan that
81
+ // could not see the boundary would lower the 長 as well.
82
+ const words = text
83
+ .split(/\s+/u)
84
+ .filter((part) => part !== "")
85
+ .map((part) => readWord(part));
86
+ if (words.length === 0 || words.some((word) => word === undefined)) {
87
+ return {
88
+ lines: [`${text} not readable as pinyin`],
89
+ data: { text, read: false },
90
+ };
91
+ }
92
+ const read = words.filter((word) => word !== undefined);
93
+ const said = applySandhi(read.flat(), options, read.map((word) => word.length));
94
+ return {
95
+ lines: [`${text} ${written(said, input.paint)}`],
96
+ data: { text, read: true, pinyin: written(said, PLAIN) },
97
+ };
98
+ });
99
+ },
100
+ };
101
+ //# sourceMappingURL=lookup-commands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lookup-commands.js","sourceRoot":"","sources":["../../src/cli/lookup-commands.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { type Command } from "./command.js";
2
+ /**
3
+ * Filter texts by a pinyin query, best match first.
4
+ *
5
+ * Ranked rather than left in the order given, because ranking is what the
6
+ * scores are for and a filter nobody can see the order of is a filter that
7
+ * looks arbitrary. Every text still gets a line, matched or not, so that a run
8
+ * over a file says what it did with each of them.
9
+ */
10
+ export declare const MATCH: Command;
11
+ //# sourceMappingURL=match-command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"match-command.d.ts","sourceRoot":"","sources":["../../src/cli/match-command.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,OAAO,EAAgB,MAAM,cAAc,CAAC;AAqB1D;;;;;;;GAOG;AACH,eAAO,MAAM,KAAK,EAAE,OAgDnB,CAAC"}
@@ -0,0 +1,76 @@
1
+ /**
2
+ * Filtering texts by a pinyin query, at the command line.
3
+ */
4
+ import { match } from "../search/match.js";
5
+ import { toCharacters } from "../script/characters.js";
6
+ import { MATCH_FLAGS, matchQuery } from "./arguments.js";
7
+ import { dictionaryOf } from "./command.js";
8
+ /**
9
+ * A text with the matched stretches marked, for a terminal.
10
+ *
11
+ * Brackets rather than colour, because the output is as likely to be piped as
12
+ * read: a match is a position, and a position survives being redirected into a
13
+ * file where an escape sequence would only clutter it.
14
+ */
15
+ function marked(text, ranges) {
16
+ const characters = toCharacters(text);
17
+ const opens = new Set(ranges.map((range) => range.at));
18
+ const closes = new Set(ranges.map((range) => range.at + range.length - 1));
19
+ return characters
20
+ .map((character, at) => `${opens.has(at) ? "[" : ""}${character}${closes.has(at) ? "]" : ""}`)
21
+ .join("");
22
+ }
23
+ /**
24
+ * Filter texts by a pinyin query, best match first.
25
+ *
26
+ * Ranked rather than left in the order given, because ranking is what the
27
+ * scores are for and a filter nobody can see the order of is a filter that
28
+ * looks arbitrary. Every text still gets a line, matched or not, so that a run
29
+ * over a file says what it did with each of them.
30
+ */
31
+ export const MATCH = {
32
+ name: "match",
33
+ summary: "filter text by a pinyin query, best first",
34
+ argument: "[text...]",
35
+ flags: [...MATCH_FLAGS],
36
+ needsDictionary: true,
37
+ run: (input) => {
38
+ const query = matchQuery(input.flags);
39
+ const found = input.texts.map((text) => ({
40
+ text,
41
+ match: match(dictionaryOf(input), text, query),
42
+ }));
43
+ const ranked = [
44
+ ...found
45
+ .filter((one) => one.match !== undefined)
46
+ .toSorted((first, second) => (second.match?.score ?? 0) - (first.match?.score ?? 0)),
47
+ ...found.filter((one) => one.match === undefined),
48
+ ];
49
+ return ranked.map((one) => {
50
+ if (one.match === undefined) {
51
+ return {
52
+ lines: [`${one.text} no match`],
53
+ data: { query, text: one.text, matched: false },
54
+ };
55
+ }
56
+ // Rounded for the reason `explain` rounds a cost: a score is a sum of
57
+ // weights and a fraction, and 6.333333333333333 in a column tells a
58
+ // reader nothing the first two places do not.
59
+ const score = Math.round(one.match.score * 100) / 100;
60
+ return {
61
+ lines: [`${marked(one.text, one.match.ranges)} ${score.toFixed(2)}`],
62
+ data: {
63
+ query,
64
+ text: one.text,
65
+ matched: true,
66
+ score,
67
+ ranges: one.match.ranges.map((range) => ({
68
+ at: range.at,
69
+ length: range.length,
70
+ })),
71
+ },
72
+ };
73
+ });
74
+ },
75
+ };
76
+ //# sourceMappingURL=match-command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"match-command.js","sourceRoot":"","sources":["../../src/cli/match-command.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,KAAK,EAAmB,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAgB,YAAY,EAAE,MAAM,cAAc,CAAC;AAE1D;;;;;;GAMG;AACH,SAAS,MAAM,CAAC,IAAY,EAAE,MAA6B;IACzD,MAAM,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACtC,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IACvD,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;IAC3E,OAAO,UAAU;SACd,GAAG,CACF,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE,CAChB,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACxE;SACA,IAAI,CAAC,EAAE,CAAC,CAAC;AACd,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,KAAK,GAAY;IAC5B,IAAI,EAAE,OAAO;IACb,OAAO,EAAE,2CAA2C;IACpD,QAAQ,EAAE,WAAW;IACrB,KAAK,EAAE,CAAC,GAAG,WAAW,CAAC;IACvB,eAAe,EAAE,IAAI;IACrB,GAAG,EAAE,CAAC,KAAK,EAAE,EAAE;QACb,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACtC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACvC,IAAI;YACJ,KAAK,EAAE,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC;SAC/C,CAAC,CAAC,CAAC;QACJ,MAAM,MAAM,GAAG;YACb,GAAG,KAAK;iBACL,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC;iBACxC,QAAQ,CACP,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAChB,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,IAAI,CAAC,CAAC,CACzD;YACH,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC;SAClD,CAAC;QAEF,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YACxB,IAAI,GAAG,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;gBAC5B,OAAO;oBACL,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC,IAAI,YAAY,CAAC;oBAChC,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE;iBAChD,CAAC;YACJ,CAAC;YACD,sEAAsE;YACtE,oEAAoE;YACpE,8CAA8C;YAC9C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;YACtD,OAAO;gBACL,KAAK,EAAE,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;gBACrE,IAAI,EAAE;oBACJ,KAAK;oBACL,IAAI,EAAE,GAAG,CAAC,IAAI;oBACd,OAAO,EAAE,IAAI;oBACb,KAAK;oBACL,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;wBACvC,EAAE,EAAE,KAAK,CAAC,EAAE;wBACZ,MAAM,EAAE,KAAK,CAAC,MAAM;qBACrB,CAAC,CAAC;iBACJ;aACF,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;CACF,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { type Command } from "./command.js";
2
+ /**
3
+ * Read numbers aloud, as quantities or digit by digit.
4
+ *
5
+ * Needs no dictionary, for the same reason `syllable` and `sandhi` do not:
6
+ * reading a number is arithmetic and a twenty-entry reading table, not a
7
+ * lookup. Which of the two styles a number takes is the caller's to say —
8
+ * 2026年 is read out digit by digit and 2026个 is counted — so the flag is
9
+ * where that choice lives rather than a guess about the text around it.
10
+ */
11
+ export declare const NUMBER: Command;
12
+ //# sourceMappingURL=number-command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"number-command.d.ts","sourceRoot":"","sources":["../../src/cli/number-command.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,KAAK,OAAO,EAAU,MAAM,cAAc,CAAC;AA4BpD;;;;;;;;GAQG;AACH,eAAO,MAAM,MAAM,EAAE,OAmDpB,CAAC"}
@@ -0,0 +1,89 @@
1
+ /**
2
+ * Reading numbers aloud, as quantities or digit by digit.
3
+ */
4
+ import { applySandhi } from "../decode/sandhi.js";
5
+ import { toCharacters } from "../script/characters.js";
6
+ import { numeralHanzi, percentHanzi, readNumeralHanzi, } from "../numerals/numerals.js";
7
+ import { writeSyllable } from "../syllable/syllable.js";
8
+ import { convertOptions } from "./arguments.js";
9
+ import { column } from "./command.js";
10
+ /**
11
+ * Apply the sandhi a counted quantity takes, and only there.
12
+ *
13
+ * 一百 is said `yìbǎi`, but 110 read out is `yāo yāo líng` and never
14
+ * `yì yì líng`, and 3.14 is `sān diǎn yī sì`: a digit said on its own keeps its
15
+ * citation tone, and so does everything after the decimal point, which is read
16
+ * digit by digit whatever the style. So the sandhi pass runs over the counted
17
+ * part of the number and stops at the 点.
18
+ */
19
+ function counted(hanzi, reading, options, sandhi) {
20
+ if (options.style === "digits") {
21
+ return reading;
22
+ }
23
+ const point = toCharacters(hanzi).indexOf("点");
24
+ const quantity = point === -1 ? reading.length : point;
25
+ return [
26
+ ...applySandhi(reading.slice(0, quantity), sandhi),
27
+ ...reading.slice(quantity),
28
+ ];
29
+ }
30
+ /**
31
+ * Read numbers aloud, as quantities or digit by digit.
32
+ *
33
+ * Needs no dictionary, for the same reason `syllable` and `sandhi` do not:
34
+ * reading a number is arithmetic and a twenty-entry reading table, not a
35
+ * lookup. Which of the two styles a number takes is the caller's to say —
36
+ * 2026年 is read out digit by digit and 2026个 is counted — so the flag is
37
+ * where that choice lives rather than a guess about the text around it.
38
+ */
39
+ export const NUMBER = {
40
+ name: "number",
41
+ summary: "read a number as Chinese numerals",
42
+ argument: "<number...>",
43
+ flags: [
44
+ "notation",
45
+ "digits",
46
+ "yao",
47
+ "no-liang",
48
+ "percent",
49
+ "third-tone",
50
+ "no-sandhi",
51
+ ],
52
+ needsDictionary: false,
53
+ run: (input) => {
54
+ const { notation, sandhi } = convertOptions(input.flags);
55
+ const options = {
56
+ style: input.flags.digits === true ? "digits" : "cardinal",
57
+ ...(input.flags.yao === true && { yao: true }),
58
+ ...(input.flags["no-liang"] === true && { liang: "never" }),
59
+ };
60
+ return input.texts.map((text) => {
61
+ const hanzi = input.flags.percent === true
62
+ ? percentHanzi(text, options)
63
+ : numeralHanzi(text, options);
64
+ const reading = hanzi === undefined ? undefined : readNumeralHanzi(hanzi, options);
65
+ if (hanzi === undefined || reading === undefined) {
66
+ return {
67
+ lines: [`${text} not a number`],
68
+ data: { text, read: false },
69
+ };
70
+ }
71
+ const said = counted(hanzi, reading, options, sandhi);
72
+ const spelled = said.map((syllable) => writeSyllable(syllable, notation));
73
+ return {
74
+ lines: [
75
+ `${column(text, 12)}${column(hanzi, 18)}${spelled
76
+ .map((written, at) => input.paint(written, said[at]?.tone))
77
+ .join(" ")}`,
78
+ ],
79
+ data: {
80
+ text,
81
+ hanzi,
82
+ pinyin: spelled.join(" "),
83
+ style: options.style,
84
+ },
85
+ };
86
+ });
87
+ },
88
+ };
89
+ //# sourceMappingURL=number-command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"number-command.js","sourceRoot":"","sources":["../../src/cli/number-command.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,WAAW,EAAsB,MAAM,qBAAqB,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EACL,YAAY,EAEZ,YAAY,EACZ,gBAAgB,GACjB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAiB,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAgB,MAAM,EAAE,MAAM,cAAc,CAAC;AAEpD;;;;;;;;GAQG;AACH,SAAS,OAAO,CACd,KAAa,EACb,OAA4B,EAC5B,OAAuB,EACvB,MAAiC;IAEjC,IAAI,OAAO,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC/B,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC/C,MAAM,QAAQ,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;IACvD,OAAO;QACL,GAAG,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClD,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC;KAC3B,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,MAAM,GAAY;IAC7B,IAAI,EAAE,QAAQ;IACd,OAAO,EAAE,mCAAmC;IAC5C,QAAQ,EAAE,aAAa;IACvB,KAAK,EAAE;QACL,UAAU;QACV,QAAQ;QACR,KAAK;QACL,UAAU;QACV,SAAS;QACT,YAAY;QACZ,WAAW;KACZ;IACD,eAAe,EAAE,KAAK;IACtB,GAAG,EAAE,CAAC,KAAK,EAAE,EAAE;QACb,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACzD,MAAM,OAAO,GAAmB;YAC9B,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU;YAC1D,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK,IAAI,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;YAC9C,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,IAAI,IAAI,EAAE,KAAK,EAAE,OAAgB,EAAE,CAAC;SACrE,CAAC;QACF,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YAC9B,MAAM,KAAK,GACT,KAAK,CAAC,KAAK,CAAC,OAAO,KAAK,IAAI;gBAC1B,CAAC,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC;gBAC7B,CAAC,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAClC,MAAM,OAAO,GACX,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YACrE,IAAI,KAAK,KAAK,SAAS,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;gBACjD,OAAO;oBACL,KAAK,EAAE,CAAC,GAAG,IAAI,gBAAgB,CAAC;oBAChC,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE;iBAC5B,CAAC;YACJ,CAAC;YACD,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;YACtD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;YAC1E,OAAO;gBACL,KAAK,EAAE;oBACL,GAAG,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,OAAO;yBAC9C,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;yBAC1D,IAAI,CAAC,GAAG,CAAC,EAAE;iBACf;gBACD,IAAI,EAAE;oBACJ,IAAI;oBACJ,KAAK;oBACL,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;oBACzB,KAAK,EAAE,OAAO,CAAC,KAAK;iBACrB;aACF,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;CACF,CAAC"}
@@ -0,0 +1,30 @@
1
+ import type { ConvertOptions } from "../decode/convert.js";
2
+ export { htmlOptions, scriptFrom, scriptTarget, slugOptions, } from "./format-options.js";
3
+ import type { CheckOptions } from "../grade/check.js";
4
+ import type { Tier } from "../dictionary/tiers.js";
5
+ import type { Flags } from "./flags.js";
6
+ export { colourDepth, type TranscriptionSource, transcriptionSource, transcriptionSystem, } from "./flag-values.js";
7
+ export interface DictionaryChoice {
8
+ readonly tier: Tier;
9
+ /** Where the artifacts are, or undefined for the ones that shipped. */
10
+ readonly directory: string | undefined;
11
+ }
12
+ /**
13
+ * Read the dictionary flags.
14
+ */
15
+ export declare function dictionaryChoice(flags: Flags): DictionaryChoice;
16
+ /**
17
+ * Turn the conversion flags into the options the library takes.
18
+ *
19
+ * Only the flags actually given are passed on, so that the library's defaults
20
+ * stay the CLI's defaults and there is one place they are written down.
21
+ */
22
+ export declare function convertOptions(flags: Flags): ConvertOptions;
23
+ /**
24
+ * Turn the checking flags into the options the library takes.
25
+ *
26
+ * Every conversion flag goes through too, since a check grades against a
27
+ * conversion and `--locale` or `--third-tone` changes what the answer is.
28
+ */
29
+ export declare function checkOptions(flags: Flags): CheckOptions;
30
+ //# sourceMappingURL=options.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../src/cli/options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,OAAO,EACL,WAAW,EACX,UAAU,EACV,YAAY,EACZ,WAAW,GACZ,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAWxC,OAAO,EACL,WAAW,EACX,KAAK,mBAAmB,EACxB,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,kBAAkB,CAAC;AAC1B,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,uEAAuE;IACvE,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;CACxC;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,KAAK,GAAG,gBAAgB,CAM/D;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,cAAc,CAqB3D;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,GAAG,YAAY,CAMvD"}