@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
@@ -0,0 +1,48 @@
1
+ /**
2
+ * The symbol tables inverted, for reading bopomofo back.
3
+ *
4
+ * Every one of these is derived from the write-side table it mirrors rather
5
+ * than written out again, so the two cannot disagree.
6
+ */
7
+ import { toCharacters } from "../script/characters.js";
8
+ import { FINAL_PARTS, INITIAL_SYMBOLS, MEDIAL_SYMBOLS, RHYME_SYMBOLS, TONES_BY_MARK, } from "./bopomofo-tables.js";
9
+ /**
10
+ * The final each medial and rhyme pair spells, keyed as `medial|rhyme`.
11
+ */
12
+ export const FINALS_BY_PARTS = new Map(Object.entries(FINAL_PARTS).map(([final, [medial, rhyme]]) => [
13
+ `${medial}|${rhyme}`,
14
+ final,
15
+ ]));
16
+ /**
17
+ * The initial each symbol stands for.
18
+ */
19
+ export const INITIALS_BY_SYMBOL = new Map([...INITIAL_SYMBOLS].map(([initial, symbol]) => [symbol, initial]));
20
+ /**
21
+ * The medial each symbol stands for.
22
+ */
23
+ export const MEDIALS_BY_SYMBOL = new Map([...MEDIAL_SYMBOLS].map(([medial, symbol]) => [symbol, medial]));
24
+ /**
25
+ * The rhyme each symbol stands for.
26
+ */
27
+ export const RHYMES_BY_SYMBOL = new Map([...RHYME_SYMBOLS].map(([rhyme, symbol]) => [symbol, rhyme]));
28
+ /**
29
+ * Whether one character is a bopomofo letter or tone mark.
30
+ */
31
+ export function isSymbol(symbol) {
32
+ return (INITIALS_BY_SYMBOL.has(symbol) ||
33
+ MEDIALS_BY_SYMBOL.has(symbol) ||
34
+ RHYMES_BY_SYMBOL.has(symbol) ||
35
+ TONES_BY_MARK.has(symbol));
36
+ }
37
+ /**
38
+ * Whether a string is written in bopomofo at all.
39
+ *
40
+ * This is the one thing bopomofo makes easy that Wade-Giles cannot: it has a
41
+ * script of its own, so it is never mistaken for pinyin and a caller never has
42
+ * to be told which system its input is in.
43
+ */
44
+ export function isBopomofo(text) {
45
+ const trimmed = text.trim();
46
+ return (trimmed !== "" && toCharacters(trimmed).every((symbol) => isSymbol(symbol)));
47
+ }
48
+ //# sourceMappingURL=bopomofo-reverse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bopomofo-reverse.js","sourceRoot":"","sources":["../../src/transcription/bopomofo-reverse.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEvD,OAAO,EACL,WAAW,EACX,eAAe,EAEf,cAAc,EAEd,aAAa,EACb,aAAa,GACd,MAAM,sBAAsB,CAAC;AAE9B;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,GAAG,CACpC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;IAC5D,GAAG,MAAM,IAAI,KAAK,EAAE;IACpB,KAAc;CACf,CAAC,CACH,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,GAAG,CACvC,CAAC,GAAG,eAAe,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CACnE,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,GAAG,CACtC,CAAC,GAAG,cAAc,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAChE,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,GAAG,CACrC,CAAC,GAAG,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAC7D,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,QAAQ,CAAC,MAAc;IACrC,OAAO,CACL,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC;QAC9B,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC;QAC7B,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC;QAC5B,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAC1B,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC5B,OAAO,CACL,OAAO,KAAK,EAAE,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAC5E,CAAC;AACJ,CAAC"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * The bopomofo symbols, and writing a syllable in them.
3
+ *
4
+ * `bopomofo.ts` reads by inverting these same tables, so the dependency runs
5
+ * one way — nothing here knows how a string is parsed back.
6
+ */
7
+ import type { Syllable } from "../syllable/syllable.js";
8
+ export { EMPTY_RHYME_INITIALS, ERHUA_SYMBOL, FINAL_PARTS, INITIAL_SYMBOLS, type Medial, MEDIAL_SYMBOLS, type Rhyme, RHYME_SYMBOLS, TONES_BY_MARK, } from "./bopomofo-tables.js";
9
+ /**
10
+ * How the first tone is written.
11
+ *
12
+ * Standard bopomofo leaves it unmarked, which is why `none` is the default. The
13
+ * cost is that a syllable whose tone was never written comes back as a first
14
+ * tone, since bopomofo has no way to say "no tone at all"; `mark` writes ˉ and
15
+ * keeps the two apart.
16
+ */
17
+ export interface BopomofoOptions {
18
+ readonly firstTone?: "mark" | "none";
19
+ }
20
+ /**
21
+ * Write a syllable in bopomofo: 就 jiù becomes ㄐㄧㄡˋ.
22
+ *
23
+ * Total over well-formed syllables — every initial and every final has a
24
+ * symbol — so anything the syllable parser accepts can be written, including
25
+ * the syllables no dictionary uses.
26
+ */
27
+ export declare function writeBopomofo(syllable: Syllable, options?: BopomofoOptions): string;
28
+ /**
29
+ * Write a word in bopomofo, one syllable after another.
30
+ *
31
+ * Separated by spaces, as 教育部's dictionaries write them. A syllable boundary
32
+ * is findable without the space — an initial symbol can only start one — but a
33
+ * long unbroken run of symbols is hard to read, and the space costs nothing.
34
+ */
35
+ export declare function writeBopomofoWord(syllables: readonly Syllable[], options?: BopomofoOptions): string;
36
+ //# sourceMappingURL=bopomofo-symbols.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bopomofo-symbols.d.ts","sourceRoot":"","sources":["../../src/transcription/bopomofo-symbols.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAYxD,OAAO,EACL,oBAAoB,EACpB,YAAY,EACZ,WAAW,EACX,eAAe,EACf,KAAK,MAAM,EACX,cAAc,EACd,KAAK,KAAK,EACV,aAAa,EACb,aAAa,GACd,MAAM,sBAAsB,CAAC;AAE9B;;;;;;;GAOG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACtC;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,QAAQ,EAClB,OAAO,GAAE,eAAoB,GAC5B,MAAM,CAmBR;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,SAAS,QAAQ,EAAE,EAC9B,OAAO,GAAE,eAAoB,GAC5B,MAAM,CAIR"}
@@ -0,0 +1,41 @@
1
+ import { NEUTRAL_TONE } from "../tone/tone.js";
2
+ import { EMPTY_RHYME_INITIALS, ERHUA_SYMBOL, FINAL_PARTS, INITIAL_SYMBOLS, MEDIAL_SYMBOLS, RHYME_SYMBOLS, TONE_MARKS, } from "./bopomofo-tables.js";
3
+ export { EMPTY_RHYME_INITIALS, ERHUA_SYMBOL, FINAL_PARTS, INITIAL_SYMBOLS, MEDIAL_SYMBOLS, RHYME_SYMBOLS, TONES_BY_MARK, } from "./bopomofo-tables.js";
4
+ /**
5
+ * Write a syllable in bopomofo: 就 jiù becomes ㄐㄧㄡˋ.
6
+ *
7
+ * Total over well-formed syllables — every initial and every final has a
8
+ * symbol — so anything the syllable parser accepts can be written, including
9
+ * the syllables no dictionary uses.
10
+ */
11
+ export function writeBopomofo(syllable, options = {}) {
12
+ const { initial, final, tone } = syllable;
13
+ const [medial, rhyme] = FINAL_PARTS[final];
14
+ const isEmptyRhyme = final === "i" && EMPTY_RHYME_INITIALS.has(initial);
15
+ const written = [
16
+ INITIAL_SYMBOLS.get(initial) ?? "",
17
+ isEmptyRhyme ? "" : (MEDIAL_SYMBOLS.get(medial) ?? ""),
18
+ isEmptyRhyme ? "" : (RHYME_SYMBOLS.get(rhyme) ?? ""),
19
+ ].join("");
20
+ const suffix = syllable.erhua === true ? ERHUA_SYMBOL : "";
21
+ const mark = tone === undefined ? undefined : TONE_MARKS.get(tone);
22
+ if (mark === undefined || (tone === 1 && options.firstTone !== "mark")) {
23
+ return `${written}${suffix}`;
24
+ }
25
+ return tone === NEUTRAL_TONE
26
+ ? `${mark}${written}${suffix}`
27
+ : `${written}${mark}${suffix}`;
28
+ }
29
+ /**
30
+ * Write a word in bopomofo, one syllable after another.
31
+ *
32
+ * Separated by spaces, as 教育部's dictionaries write them. A syllable boundary
33
+ * is findable without the space — an initial symbol can only start one — but a
34
+ * long unbroken run of symbols is hard to read, and the space costs nothing.
35
+ */
36
+ export function writeBopomofoWord(syllables, options = {}) {
37
+ return syllables
38
+ .map((syllable) => writeBopomofo(syllable, options))
39
+ .join(" ");
40
+ }
41
+ //# sourceMappingURL=bopomofo-symbols.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bopomofo-symbols.js","sourceRoot":"","sources":["../../src/transcription/bopomofo-symbols.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EACL,oBAAoB,EACpB,YAAY,EACZ,WAAW,EACX,eAAe,EACf,cAAc,EACd,aAAa,EACb,UAAU,GACX,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,oBAAoB,EACpB,YAAY,EACZ,WAAW,EACX,eAAe,EAEf,cAAc,EAEd,aAAa,EACb,aAAa,GACd,MAAM,sBAAsB,CAAC;AAc9B;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAC3B,QAAkB,EAClB,OAAO,GAAoB,EAAE;IAE7B,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC;IAC1C,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IAC3C,MAAM,YAAY,GAAG,KAAK,KAAK,GAAG,IAAI,oBAAoB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAExE,MAAM,OAAO,GAAG;QACd,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE;QAClC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACtD,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;KACrD,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACX,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;IAE3D,MAAM,IAAI,GAAG,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACnE,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,OAAO,CAAC,SAAS,KAAK,MAAM,CAAC,EAAE,CAAC;QACvE,OAAO,GAAG,OAAO,GAAG,MAAM,EAAE,CAAC;IAC/B,CAAC;IACD,OAAO,IAAI,KAAK,YAAY;QAC1B,CAAC,CAAC,GAAG,IAAI,GAAG,OAAO,GAAG,MAAM,EAAE;QAC9B,CAAC,CAAC,GAAG,OAAO,GAAG,IAAI,GAAG,MAAM,EAAE,CAAC;AACnC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAC/B,SAA8B,EAC9B,OAAO,GAAoB,EAAE;IAE7B,OAAO,SAAS;SACb,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;SACnD,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC"}
@@ -0,0 +1,87 @@
1
+ /**
2
+ * The bopomofo symbols themselves, as tables.
3
+ *
4
+ * Split from the writing so that each is one thing: this says which symbol
5
+ * stands for which part of a syllable, and `bopomofo-symbols.ts` puts them
6
+ * together.
7
+ */
8
+ import type { Final, Initial } from "../syllable/phonology.js";
9
+ /**
10
+ * The medial (介音) of a syllable, or the empty string for one with none.
11
+ */
12
+ export type Medial = "" | "i" | "u" | "ü";
13
+ /**
14
+ * The rhyme a syllable ends on, or the empty string where the medial is the
15
+ * whole of the final: 於 yú is ㄩ and nothing more.
16
+ */
17
+ export type Rhyme = "" | "a" | "o" | "e" | "ê" | "ai" | "ei" | "ao" | "ou" | "an" | "en" | "ang" | "eng" | "er" | "m" | "n" | "ng";
18
+ /**
19
+ * The symbol each initial is written with.
20
+ *
21
+ * A syllable with no initial has no entry and writes nothing, which is what the
22
+ * empty string stands for throughout this file.
23
+ */
24
+ export declare const INITIAL_SYMBOLS: Map<Initial, string>;
25
+ /**
26
+ * The symbol each medial is written with.
27
+ */
28
+ export declare const MEDIAL_SYMBOLS: Map<Medial, string>;
29
+ /**
30
+ * The symbol each rhyme is written with.
31
+ *
32
+ * ㄦ is here as a rhyme of its own and also serves as the 儿化 suffix, which is
33
+ * what bopomofo does with it: 歌儿 gēr is ㄍㄜㄦ.
34
+ *
35
+ * The three syllabic nasals at the end are the marginal case. ㄇ and ㄋ are
36
+ * initial letters doing rhyme duty, as bopomofo writes 呣 and 嗯; ㄫ is the
37
+ * obsolete letter for a syllabic ng, used here rather than ㄥ so that 嗯 ǹg and
38
+ * the rare 鞥 ēng do not come out identical.
39
+ */
40
+ export declare const RHYME_SYMBOLS: Map<Rhyme, string>;
41
+ /**
42
+ * How each final divides into a medial and a rhyme.
43
+ *
44
+ * Written out rather than split off the front of the spelling, because the
45
+ * division is phonological and the spelling only mostly follows it: `in` is
46
+ * ㄧㄣ, an i medial over the ㄣ rhyme rather than over an n of its own, and
47
+ * `iong` is ㄩㄥ — a ü medial despite the i in the spelling, which is why
48
+ * 兄 xiōng and 军 jūn share a medial.
49
+ */
50
+ export declare const FINAL_PARTS: Record<Final, readonly [Medial, Rhyme]>;
51
+ /**
52
+ * The initials whose syllable with an i final is written as the initial alone:
53
+ * 知 is ㄓ, not ㄓㄧ.
54
+ *
55
+ * The i of zhi, chi, shi, ri, zi, ci and si is not the i of ji at all — it is
56
+ * the syllabic continuation of the initial (空韻), and bopomofo simply does not
57
+ * write it. This is the one place the correspondence is not one symbol per
58
+ * part.
59
+ */
60
+ export declare const EMPTY_RHYME_INITIALS: Set<Initial>;
61
+ /**
62
+ * The symbol 儿化 is written with.
63
+ *
64
+ * ㄦ, the same letter as the rhyme of 兒 ér itself, which is why reading it
65
+ * takes the position into account: see {@link parseSymbols}.
66
+ */
67
+ export declare const ERHUA_SYMBOL = "\u3126";
68
+ /**
69
+ * The mark each tone takes.
70
+ *
71
+ * The neutral tone's dot goes *before* the syllable and the other four go
72
+ * after — but **before a 儿化 ㄦ rather than after it**: 哪儿 nǎr is ㄋㄚˇㄦ and
73
+ * 玩儿 wánr is ㄨㄢˊㄦ. The mark belongs to the syllable's nucleus, and the
74
+ * suffix is not part of what it marks. Wikipedia's *Bopomofo*, citing 教育部's
75
+ * 國語注音符號手冊, says so outright, and it is what 教育部's dictionaries and
76
+ * Wiktionary both write.
77
+ */
78
+ export declare const TONE_MARKS: Map<1 | 2 | 3 | 4 | 5, string>;
79
+ /**
80
+ * The tone each mark stands for, including the shapes a keyboard produces.
81
+ *
82
+ * Tolerant input and standard output, as the rest of the package has: `´` and
83
+ * `` ` `` are the ASCII neighbours of ˊ and ˋ, and are what text that was typed
84
+ * rather than composed tends to carry.
85
+ */
86
+ export declare const TONES_BY_MARK: Map<string, 1 | 2 | 3 | 4 | 5>;
87
+ //# sourceMappingURL=bopomofo-tables.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bopomofo-tables.d.ts","sourceRoot":"","sources":["../../src/transcription/bopomofo-tables.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAG/D;;GAEG;AACH,MAAM,MAAM,MAAM,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAE1C;;;GAGG;AACH,MAAM,MAAM,KAAK,GACb,EAAE,GACF,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,KAAK,GACL,KAAK,GACL,IAAI,GACJ,GAAG,GACH,GAAG,GACH,IAAI,CAAC;AAET;;;;;GAKG;AACH,eAAO,MAAM,eAAe,sBAsB1B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,cAAc,qBAIzB,CAAC;AAEH;;;;;;;;;;GAUG;AACH,eAAO,MAAM,aAAa,oBAiBxB,CAAC;AAEH;;;;;;;;GAQG;AACH,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CA0C/D,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,oBAAoB,cAQ/B,CAAC;AAEH;;;;;GAKG;AACH,eAAO,MAAM,YAAY,WAAM,CAAC;AAEhC;;;;;;;;;GASG;AACH,eAAO,MAAM,UAAU,gCAMrB,CAAC;AAEH;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,gCAUxB,CAAC"}
@@ -0,0 +1,180 @@
1
+ import { NEUTRAL_TONE } from "../tone/tone.js";
2
+ /**
3
+ * The symbol each initial is written with.
4
+ *
5
+ * A syllable with no initial has no entry and writes nothing, which is what the
6
+ * empty string stands for throughout this file.
7
+ */
8
+ export const INITIAL_SYMBOLS = new Map([
9
+ ["b", "ㄅ"],
10
+ ["p", "ㄆ"],
11
+ ["m", "ㄇ"],
12
+ ["f", "ㄈ"],
13
+ ["d", "ㄉ"],
14
+ ["t", "ㄊ"],
15
+ ["n", "ㄋ"],
16
+ ["l", "ㄌ"],
17
+ ["g", "ㄍ"],
18
+ ["k", "ㄎ"],
19
+ ["h", "ㄏ"],
20
+ ["j", "ㄐ"],
21
+ ["q", "ㄑ"],
22
+ ["x", "ㄒ"],
23
+ ["zh", "ㄓ"],
24
+ ["ch", "ㄔ"],
25
+ ["sh", "ㄕ"],
26
+ ["r", "ㄖ"],
27
+ ["z", "ㄗ"],
28
+ ["c", "ㄘ"],
29
+ ["s", "ㄙ"],
30
+ ]);
31
+ /**
32
+ * The symbol each medial is written with.
33
+ */
34
+ export const MEDIAL_SYMBOLS = new Map([
35
+ ["i", "ㄧ"],
36
+ ["u", "ㄨ"],
37
+ ["ü", "ㄩ"],
38
+ ]);
39
+ /**
40
+ * The symbol each rhyme is written with.
41
+ *
42
+ * ㄦ is here as a rhyme of its own and also serves as the 儿化 suffix, which is
43
+ * what bopomofo does with it: 歌儿 gēr is ㄍㄜㄦ.
44
+ *
45
+ * The three syllabic nasals at the end are the marginal case. ㄇ and ㄋ are
46
+ * initial letters doing rhyme duty, as bopomofo writes 呣 and 嗯; ㄫ is the
47
+ * obsolete letter for a syllabic ng, used here rather than ㄥ so that 嗯 ǹg and
48
+ * the rare 鞥 ēng do not come out identical.
49
+ */
50
+ export const RHYME_SYMBOLS = new Map([
51
+ ["a", "ㄚ"],
52
+ ["o", "ㄛ"],
53
+ ["e", "ㄜ"],
54
+ ["ê", "ㄝ"],
55
+ ["ai", "ㄞ"],
56
+ ["ei", "ㄟ"],
57
+ ["ao", "ㄠ"],
58
+ ["ou", "ㄡ"],
59
+ ["an", "ㄢ"],
60
+ ["en", "ㄣ"],
61
+ ["ang", "ㄤ"],
62
+ ["eng", "ㄥ"],
63
+ ["er", "ㄦ"],
64
+ ["m", "ㄇ"],
65
+ ["n", "ㄋ"],
66
+ ["ng", "ㄫ"],
67
+ ]);
68
+ /**
69
+ * How each final divides into a medial and a rhyme.
70
+ *
71
+ * Written out rather than split off the front of the spelling, because the
72
+ * division is phonological and the spelling only mostly follows it: `in` is
73
+ * ㄧㄣ, an i medial over the ㄣ rhyme rather than over an n of its own, and
74
+ * `iong` is ㄩㄥ — a ü medial despite the i in the spelling, which is why
75
+ * 兄 xiōng and 军 jūn share a medial.
76
+ */
77
+ export const FINAL_PARTS = {
78
+ a: ["", "a"],
79
+ o: ["", "o"],
80
+ e: ["", "e"],
81
+ ê: ["", "ê"],
82
+ er: ["", "er"],
83
+ ai: ["", "ai"],
84
+ ei: ["", "ei"],
85
+ ao: ["", "ao"],
86
+ ou: ["", "ou"],
87
+ an: ["", "an"],
88
+ en: ["", "en"],
89
+ ang: ["", "ang"],
90
+ eng: ["", "eng"],
91
+ ong: ["u", "eng"],
92
+ i: ["i", ""],
93
+ ia: ["i", "a"],
94
+ io: ["i", "o"],
95
+ ie: ["i", "ê"],
96
+ iao: ["i", "ao"],
97
+ iou: ["i", "ou"],
98
+ ian: ["i", "an"],
99
+ in: ["i", "en"],
100
+ iang: ["i", "ang"],
101
+ ing: ["i", "eng"],
102
+ iong: ["ü", "eng"],
103
+ u: ["u", ""],
104
+ ua: ["u", "a"],
105
+ uo: ["u", "o"],
106
+ uai: ["u", "ai"],
107
+ uei: ["u", "ei"],
108
+ uan: ["u", "an"],
109
+ uen: ["u", "en"],
110
+ uang: ["u", "ang"],
111
+ ueng: ["u", "eng"],
112
+ ü: ["ü", ""],
113
+ üe: ["ü", "ê"],
114
+ üan: ["ü", "an"],
115
+ ün: ["ü", "en"],
116
+ m: ["", "m"],
117
+ n: ["", "n"],
118
+ ng: ["", "ng"],
119
+ };
120
+ /**
121
+ * The initials whose syllable with an i final is written as the initial alone:
122
+ * 知 is ㄓ, not ㄓㄧ.
123
+ *
124
+ * The i of zhi, chi, shi, ri, zi, ci and si is not the i of ji at all — it is
125
+ * the syllabic continuation of the initial (空韻), and bopomofo simply does not
126
+ * write it. This is the one place the correspondence is not one symbol per
127
+ * part.
128
+ */
129
+ export const EMPTY_RHYME_INITIALS = new Set([
130
+ "zh",
131
+ "ch",
132
+ "sh",
133
+ "r",
134
+ "z",
135
+ "c",
136
+ "s",
137
+ ]);
138
+ /**
139
+ * The symbol 儿化 is written with.
140
+ *
141
+ * ㄦ, the same letter as the rhyme of 兒 ér itself, which is why reading it
142
+ * takes the position into account: see {@link parseSymbols}.
143
+ */
144
+ export const ERHUA_SYMBOL = "ㄦ";
145
+ /**
146
+ * The mark each tone takes.
147
+ *
148
+ * The neutral tone's dot goes *before* the syllable and the other four go
149
+ * after — but **before a 儿化 ㄦ rather than after it**: 哪儿 nǎr is ㄋㄚˇㄦ and
150
+ * 玩儿 wánr is ㄨㄢˊㄦ. The mark belongs to the syllable's nucleus, and the
151
+ * suffix is not part of what it marks. Wikipedia's *Bopomofo*, citing 教育部's
152
+ * 國語注音符號手冊, says so outright, and it is what 教育部's dictionaries and
153
+ * Wiktionary both write.
154
+ */
155
+ export const TONE_MARKS = new Map([
156
+ [1, "ˉ"],
157
+ [2, "ˊ"],
158
+ [3, "ˇ"],
159
+ [4, "ˋ"],
160
+ [NEUTRAL_TONE, "˙"],
161
+ ]);
162
+ /**
163
+ * The tone each mark stands for, including the shapes a keyboard produces.
164
+ *
165
+ * Tolerant input and standard output, as the rest of the package has: `´` and
166
+ * `` ` `` are the ASCII neighbours of ˊ and ˋ, and are what text that was typed
167
+ * rather than composed tends to carry.
168
+ */
169
+ export const TONES_BY_MARK = new Map([
170
+ ["ˉ", 1],
171
+ ["¯", 1],
172
+ ["ˊ", 2],
173
+ ["´", 2],
174
+ ["ˇ", 3],
175
+ ["ˋ", 4],
176
+ ["`", 4],
177
+ ["˙", NEUTRAL_TONE],
178
+ ["·", NEUTRAL_TONE],
179
+ ]);
180
+ //# sourceMappingURL=bopomofo-tables.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bopomofo-tables.js","sourceRoot":"","sources":["../../src/transcription/bopomofo-tables.ts"],"names":[],"mappings":"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"}
@@ -1,39 +1,21 @@
1
- import type { Syllable } from "../syllable/syllable.js";
2
- /**
3
- * How the first tone is written.
4
- *
5
- * Standard bopomofo leaves it unmarked, which is why `none` is the default. The
6
- * cost is that a syllable whose tone was never written comes back as a first
7
- * tone, since bopomofo has no way to say "no tone at all"; `mark` writes ˉ and
8
- * keeps the two apart.
9
- */
10
- export interface BopomofoOptions {
11
- readonly firstTone?: "mark" | "none";
12
- }
13
- /**
14
- * Write a syllable in bopomofo: 就 jiù becomes ㄐㄧㄡˋ.
15
- *
16
- * Total over well-formed syllables — every initial and every final has a
17
- * symbol — so anything the syllable parser accepts can be written, including
18
- * the syllables no dictionary uses.
19
- */
20
- export declare function writeBopomofo(syllable: Syllable, options?: BopomofoOptions): string;
21
1
  /**
22
- * Write a word in bopomofo, one syllable after another.
2
+ * Bopomofo (注音符號), in both directions.
23
3
  *
24
- * Separated by spaces, as 教育部's dictionaries write them. A syllable boundary
25
- * is findable without the space — an initial symbol can only start one — but a
26
- * long unbroken run of symbols is hard to read, and the space costs nothing.
27
- */
28
- export declare function writeBopomofoWord(syllables: readonly Syllable[], options?: BopomofoOptions): string;
29
- /**
30
- * Whether a string is written in bopomofo at all.
4
+ * This is the easy half of romanisation interchange, and the reason is
5
+ * [phonology.ts](../syllable/phonology.ts): a parsed syllable already holds the
6
+ * underlying initial and final rather than the spelling, and bopomofo writes
7
+ * exactly those. 就 is
8
+ * `j` + `iou` and ㄐㄧㄡ; 军 is `j` + `ün` and ㄐㄩㄣ; 中 is `zh` + `ong` and
9
+ * ㄓㄨㄥ. Nothing here undoes a pinyin spelling rule, because `readSyllable`
10
+ * never applied one.
31
11
  *
32
- * This is the one thing bopomofo makes easy that Wade-Giles cannot: it has a
33
- * script of its own, so it is never mistaken for pinyin and a caller never has
34
- * to be told which system its input is in.
12
+ * So the mapping is compositional — an initial symbol, a medial symbol and a
13
+ * rhyme symbol — and it is a bijection over the whole syllable inventory. The
14
+ * three places it is not quite mechanical are recorded on the tables below.
35
15
  */
36
- export declare function isBopomofo(text: string): boolean;
16
+ import type { Syllable } from "../syllable/syllable.js";
17
+ export { type BopomofoOptions, writeBopomofo, writeBopomofoWord, } from "./bopomofo-symbols.js";
18
+ export { isBopomofo } from "./bopomofo-reverse.js";
37
19
  /**
38
20
  * Read a bopomofo syllable: ㄐㄧㄡˋ becomes 就 jiù.
39
21
  *
@@ -1 +1 @@
1
- {"version":3,"file":"bopomofo.d.ts","sourceRoot":"","sources":["../../src/transcription/bopomofo.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAyNxD;;;;;;;GAOG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACtC;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,QAAQ,EAClB,OAAO,GAAE,eAAoB,GAC5B,MAAM,CAmBR;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,SAAS,QAAQ,EAAE,EAC9B,OAAO,GAAE,eAAoB,GAC5B,MAAM,CAIR;AA6CD;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAKhD;AA4HD;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAS/D"}
1
+ {"version":3,"file":"bopomofo.d.ts","sourceRoot":"","sources":["../../src/transcription/bopomofo.ts"],"names":[],"mappings":"AACA;;;;;;;;;;;;;;GAcG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAGxD,OAAO,EACL,KAAK,eAAe,EACpB,aAAa,EACb,iBAAiB,GAClB,MAAM,uBAAuB,CAAC;AAI/B,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAoCnD;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAS/D"}