interscript 0.1.7 → 2.1.0b1

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 (314) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +11 -0
  3. data/.rspec +3 -0
  4. data/Gemfile +29 -0
  5. data/LICENSE.adoc +31 -0
  6. data/README.md +3 -0
  7. data/Rakefile +116 -0
  8. data/bin/console +14 -0
  9. data/bin/interscript +5 -0
  10. data/bin/maps_analyze_staging +168 -0
  11. data/bin/maps_debug_compilers +58 -0
  12. data/bin/maps_debug_ordering +88 -0
  13. data/bin/maps_debug_ruby_compile +24 -0
  14. data/bin/maps_debug_step_by_step +44 -0
  15. data/bin/maps_optimize_order +112 -0
  16. data/bin/maps_v1_analyze_regexps +45 -0
  17. data/bin/maps_v1_to_v2 +426 -0
  18. data/bin/setup +8 -0
  19. data/exe/interscript +6 -0
  20. data/interscript.gemspec +31 -0
  21. data/lib/interscript.rb +83 -133
  22. data/lib/interscript/command.rb +5 -5
  23. data/lib/interscript/compiler.rb +22 -0
  24. data/lib/interscript/compiler/javascript.rb +292 -0
  25. data/lib/interscript/compiler/ruby.rb +262 -0
  26. data/lib/interscript/dsl.rb +68 -0
  27. data/lib/interscript/dsl/aliases.rb +23 -0
  28. data/lib/interscript/dsl/document.rb +46 -0
  29. data/lib/interscript/dsl/group.rb +45 -0
  30. data/lib/interscript/dsl/group/parallel.rb +6 -0
  31. data/lib/interscript/dsl/items.rb +89 -0
  32. data/lib/interscript/dsl/metadata.rb +68 -0
  33. data/lib/interscript/dsl/stage.rb +6 -0
  34. data/lib/interscript/dsl/symbol_mm.rb +11 -0
  35. data/lib/interscript/dsl/tests.rb +12 -0
  36. data/lib/interscript/interpreter.rb +251 -0
  37. data/lib/interscript/node.rb +25 -0
  38. data/lib/interscript/node/alias_def.rb +15 -0
  39. data/lib/interscript/node/dependency.rb +13 -0
  40. data/lib/interscript/node/document.rb +45 -0
  41. data/lib/interscript/node/group.rb +34 -0
  42. data/lib/interscript/node/group/parallel.rb +9 -0
  43. data/lib/interscript/node/group/sequential.rb +2 -0
  44. data/lib/interscript/node/item.rb +52 -0
  45. data/lib/interscript/node/item/alias.rb +42 -0
  46. data/lib/interscript/node/item/any.rb +76 -0
  47. data/lib/interscript/node/item/capture.rb +50 -0
  48. data/lib/interscript/node/item/group.rb +51 -0
  49. data/lib/interscript/node/item/repeat.rb +40 -0
  50. data/lib/interscript/node/item/stage.rb +23 -0
  51. data/lib/interscript/node/item/string.rb +51 -0
  52. data/lib/interscript/node/metadata.rb +18 -0
  53. data/lib/interscript/node/rule.rb +6 -0
  54. data/lib/interscript/node/rule/funcall.rb +18 -0
  55. data/lib/interscript/node/rule/run.rb +15 -0
  56. data/lib/interscript/node/rule/sub.rb +68 -0
  57. data/lib/interscript/node/stage.rb +19 -0
  58. data/lib/interscript/node/tests.rb +15 -0
  59. data/lib/interscript/stdlib.rb +211 -0
  60. data/lib/interscript/utils/regexp_converter.rb +283 -0
  61. data/lib/interscript/version.rb +1 -1
  62. data/lib/interscript/visualize.rb +61 -0
  63. data/lib/interscript/visualize/group.html.erb +59 -0
  64. data/lib/interscript/visualize/json.rb +57 -0
  65. data/lib/interscript/visualize/map.html.erb +46 -0
  66. data/lib/interscript/visualize/nodes.rb +89 -0
  67. data/requirements.txt +1 -0
  68. metadata +78 -416
  69. data/README.adoc +0 -298
  70. data/lib/g2pwrapper.py +0 -34
  71. data/lib/interscript/fs.rb +0 -69
  72. data/lib/interscript/mapping.rb +0 -142
  73. data/lib/interscript/opal.rb +0 -57
  74. data/lib/interscript/opal/entrypoint.rb +0 -12
  75. data/lib/interscript/opal/map_translate.rb +0 -7
  76. data/lib/interscript/opal/maps.js.erb +0 -10
  77. data/lib/model-7 +0 -0
  78. data/lib/tha-pt-b-7 +0 -0
  79. data/maps/acadsin-zho-Hani-Latn-2002.yaml +0 -38916
  80. data/maps/alalc-amh-Ethi-Latn-1997.yaml +0 -513
  81. data/maps/alalc-amh-Ethi-Latn-2011.yaml +0 -138
  82. data/maps/alalc-ara-Arab-Latn-1997.yaml +0 -1287
  83. data/maps/alalc-asm-Deva-Latn-1997.yaml +0 -165
  84. data/maps/alalc-asm-Deva-Latn-2012.yaml +0 -40
  85. data/maps/alalc-aze-Cyrl-Latn-1997.yaml +0 -145
  86. data/maps/alalc-bel-Cyrl-Latn-1997.yaml +0 -129
  87. data/maps/alalc-ben-Beng-Latn-2017.yaml +0 -130
  88. data/maps/alalc-bul-Cyrl-Latn-1997.yaml +0 -98
  89. data/maps/alalc-ell-Grek-Latn-1997.yaml +0 -628
  90. data/maps/alalc-ell-Grek-Latn-2010.yaml +0 -626
  91. data/maps/alalc-guj-Gujr-Latn-1997.yaml +0 -266
  92. data/maps/alalc-guj-Gujr-Latn-2011.yaml +0 -64
  93. data/maps/alalc-hin-Deva-Latn-1997.yaml +0 -211
  94. data/maps/alalc-hin-Deva-Latn-2011.yaml +0 -47
  95. data/maps/alalc-kat-Geok-Latn-1997.yaml +0 -111
  96. data/maps/alalc-kat-Geor-Latn-1997.yaml +0 -150
  97. data/maps/alalc-kor-Hang-Latn-1997.yaml +0 -98
  98. data/maps/alalc-mal-Mlym-Latn-1997.yaml +0 -303
  99. data/maps/alalc-mal-Mlym-Latn-2012.yaml +0 -73
  100. data/maps/alalc-mar-Deva-Latn-1997.yaml +0 -189
  101. data/maps/alalc-mar-Deva-Latn-2011.yaml +0 -45
  102. data/maps/alalc-mkd-Cyrl-Latn-1997.yaml +0 -114
  103. data/maps/alalc-mkd-Cyrl-Latn-2013.yaml +0 -103
  104. data/maps/alalc-mon-Cyrl-Latn-1997.yaml +0 -220
  105. data/maps/alalc-pan-Guru-Latn-1997.yaml +0 -256
  106. data/maps/alalc-pan-Guru-Latn-2011.yaml +0 -78
  107. data/maps/alalc-per-Arab-Latn-1997.yaml +0 -375
  108. data/maps/alalc-pli-Deva-Latn-2012.yaml +0 -144
  109. data/maps/alalc-pra-Deva-Latn-2012.yaml +0 -47
  110. data/maps/alalc-rus-Cyrl-Latn-1997.yaml +0 -225
  111. data/maps/alalc-rus-Cyrl-Latn-2012.yaml +0 -162
  112. data/maps/alalc-san-Deva-Latn-2012.yaml +0 -172
  113. data/maps/alalc-sin-Sinh-Latn-1997.yaml +0 -292
  114. data/maps/alalc-sin-Sinh-Latn-2011.yaml +0 -71
  115. data/maps/alalc-srp-Cyrl-Latn-1997.yaml +0 -118
  116. data/maps/alalc-srp-Cyrl-Latn-2013.yaml +0 -135
  117. data/maps/alalc-tam-Taml-Latn-1997.yaml +0 -62
  118. data/maps/alalc-tam-Taml-Latn-2011.yaml +0 -58
  119. data/maps/alalc-ukr-Cyrl-Latn-1997.yaml +0 -145
  120. data/maps/alalc-ukr-Cyrl-Latn-2011.yaml +0 -16
  121. data/maps/apcbg-bul-Cyrl-Latn-1995.yaml +0 -283
  122. data/maps/bas-rus-Cyrl-Latn-2017-bss.yaml +0 -174
  123. data/maps/bas-rus-Cyrl-Latn-2017-oss.yaml +0 -169
  124. data/maps/bgn-jpn-Hrkt-Latn-1962.yaml +0 -292
  125. data/maps/bgn-kor-Hang-Latn-1943.yaml +0 -35
  126. data/maps/bgn-kor-Kore-Latn-1943.yaml +0 -31
  127. data/maps/bgna-bul-Cyrl-Latn-2006.yaml +0 -208
  128. data/maps/bgna-bul-Cyrl-Latn-2009.yaml +0 -208
  129. data/maps/bgnpcgn-amh-Ethi-Latn-1967.yaml +0 -532
  130. data/maps/bgnpcgn-ara-Arab-Latn-1956.yaml +0 -596
  131. data/maps/bgnpcgn-arm-Armn-Latn-1981.yaml +0 -108
  132. data/maps/bgnpcgn-aze-Cyrl-Latn-1993.yaml +0 -104
  133. data/maps/bgnpcgn-bak-Cyrl-Latn-2007.yaml +0 -188
  134. data/maps/bgnpcgn-bel-Cyrl-Latn-1979.yaml +0 -289
  135. data/maps/bgnpcgn-bul-Cyrl-Latn-1952.yaml +0 -119
  136. data/maps/bgnpcgn-bul-Cyrl-Latn-2013.yaml +0 -42
  137. data/maps/bgnpcgn-che-Cyrl-Latn-2008.yaml +0 -184
  138. data/maps/bgnpcgn-ell-Grek-Latn-1962.yaml +0 -705
  139. data/maps/bgnpcgn-ell-Grek-Latn-1996.yaml +0 -23
  140. data/maps/bgnpcgn-fas-Arab-Latn-1956.yaml +0 -96
  141. data/maps/bgnpcgn-jpn-Hrkt-Latn-1976.yaml +0 -257
  142. data/maps/bgnpcgn-kat-Geor-Latn-1981.yaml +0 -131
  143. data/maps/bgnpcgn-kat-Geor-Latn-2009.yaml +0 -42
  144. data/maps/bgnpcgn-kor-Hang-Latn-kn-1945.yaml +0 -253
  145. data/maps/bgnpcgn-kor-Hang-Latn-rok-2011.yaml +0 -48
  146. data/maps/bgnpcgn-kor-Kore-Latn-rok-2011.yaml +0 -48
  147. data/maps/bgnpcgn-mkd-Cyrl-Latn-1981.yaml +0 -163
  148. data/maps/bgnpcgn-mkd-Cyrl-Latn-2013.yaml +0 -190
  149. data/maps/bgnpcgn-mon-Cyrl-Latn-1964.yaml +0 -223
  150. data/maps/bgnpcgn-nep-Deva-Latn-2011.yaml +0 -230
  151. data/maps/bgnpcgn-per-Arab-Latn-1958.yaml +0 -336
  152. data/maps/bgnpcgn-prs-Arab-Latn-2007.yaml +0 -639
  153. data/maps/bgnpcgn-prs-Arab-Latn-yaghoubi.yaml +0 -459
  154. data/maps/bgnpcgn-rue-Cyrl-Latn-2016.yaml +0 -168
  155. data/maps/bgnpcgn-rus-Cyrl-Latn-1947.yaml +0 -318
  156. data/maps/bgnpcgn-srp-Cyrl-Latn-2005.yaml +0 -170
  157. data/maps/bgnpcgn-tat-Cyrl-Latn-2007.yaml +0 -220
  158. data/maps/bgnpcgn-tgk-Cyrl-Latn-1994.yaml +0 -240
  159. data/maps/bgnpcgn-ukr-Cyrl-Latn-1965.yaml +0 -166
  160. data/maps/bgnpcgn-ukr-Cyrl-Latn-2019.yaml +0 -119
  161. data/maps/bgnpcgn-uzb-Cyrl-Latn-1979.yaml +0 -127
  162. data/maps/bgnpcgn-uzb-Cyrl-Latn-2000.yaml +0 -82
  163. data/maps/bgnpcgn-zho-Hans-Latn-1979.yaml +0 -7456
  164. data/maps/bis-asm-Beng-Latn-13194-1991.yaml +0 -159
  165. data/maps/bis-ben-Beng-Latn-13194-1991.yaml +0 -156
  166. data/maps/bis-dev-Deva-Latn-13194-1991.yaml +0 -184
  167. data/maps/bis-guj-Gujr-Latn-13194-1991.yaml +0 -181
  168. data/maps/bis-knd-Knda-Latn-13194-1991.yaml +0 -173
  169. data/maps/bis-mlm-Mlym-Latn-13194-1991.yaml +0 -176
  170. data/maps/bis-ori-Orya-Latn-13194-1991.yaml +0 -160
  171. data/maps/bis-pnj-Guru-Latn-13194-1991.yaml +0 -175
  172. data/maps/bis-tel-Telu-Latn-13194-1991.yaml +0 -170
  173. data/maps/bis-tml-Taml-Latn-13194-1991.yaml +0 -155
  174. data/maps/by-bel-Cyrl-Latn-1998.yaml +0 -172
  175. data/maps/by-bel-Cyrl-Latn-2007.yaml +0 -115
  176. data/maps/din-grc-Grek-Latn-31634-2011-t1.yaml +0 -899
  177. data/maps/din-hin-Deva-Latn-33904-2018.yaml +0 -100
  178. data/maps/din-kat-Geor-Latn-32707-2010.yaml +0 -145
  179. data/maps/din-mar-Deva-Latn-33904-2018.yaml +0 -84
  180. data/maps/din-nep-Deva-Latn-33904-2018.yaml +0 -119
  181. data/maps/din-pli-Deva-Latn-33904-2018.yaml +0 -75
  182. data/maps/din-pra-Deva-Latn-33904-2018.yaml +0 -63
  183. data/maps/din-san-Deva-Latn-33904-2018.yaml +0 -338
  184. data/maps/din-tam-Taml-Latn-33903-2016.yaml +0 -213
  185. data/maps/dos-nep-Deva-Latn-1997.yaml +0 -47
  186. data/maps/elot-ell-Grek-Latn-743-1982-tl.yaml +0 -684
  187. data/maps/elot-ell-Grek-Latn-743-1982-ts.yaml +0 -680
  188. data/maps/elot-ell-Grek-Latn-743-2001-tl.yaml +0 -19
  189. data/maps/elot-ell-Grek-Latn-743-2001-ts.yaml +0 -31
  190. data/maps/ggg-kat-Geor-Latn-2002.yaml +0 -92
  191. data/maps/gki-bel-Cyrl-Latn-1992.yaml +0 -33
  192. data/maps/gki-bel-Cyrl-Latn-2000.yaml +0 -201
  193. data/maps/gost-rus-Cyrl-Latn-16876-71-1983.yaml +0 -190
  194. data/maps/gost-rus-Cyrl-Latn-7.79-2000-2002.yaml +0 -157
  195. data/maps/hk-yue-Hani-Latn-1888.yaml +0 -38497
  196. data/maps/icao-bel-Cyrl-Latn-9303.yaml +0 -136
  197. data/maps/icao-bul-Cyrl-Latn-9303.yaml +0 -118
  198. data/maps/icao-fas-Arab-Latn-9303.yaml +0 -103
  199. data/maps/icao-heb-Hebr-Latn-9303.yaml +0 -151
  200. data/maps/icao-mkd-Cyrl-Latn-9303.yaml +0 -117
  201. data/maps/icao-rus-Cyrl-Latn-9303.yaml +0 -117
  202. data/maps/icao-srp-Cyrl-Latn-9303.yaml +0 -117
  203. data/maps/icao-ukr-Cyrl-Latn-9303.yaml +0 -119
  204. data/maps/iso-ara-Arab-Latn-233-1984.yaml +0 -323
  205. data/maps/iso-asm-Beng-Latn-15919-2001.yaml +0 -75
  206. data/maps/iso-ben-Beng-Latn-15919-2001.yaml +0 -175
  207. data/maps/iso-ell-Grek-Latn-843-1997-t1.yaml +0 -613
  208. data/maps/iso-ell-Grek-Latn-843-1997-t2.yaml +0 -44
  209. data/maps/iso-guj-Gujr-Latn-15919-2001.yaml +0 -220
  210. data/maps/iso-hin-Deva-Latn-15919-2001.yaml +0 -87
  211. data/maps/iso-inc-Deva-Latn-15919-2001.yaml +0 -61
  212. data/maps/iso-jpn-Hrkt-Latn-3602-1989.yaml +0 -66
  213. data/maps/iso-kan-Knda-Latn-15919-2001.yaml +0 -220
  214. data/maps/iso-kat-Geor-Latn-9984-1996.yaml +0 -145
  215. data/maps/iso-kor-Hang-Latn-1996-method1.yaml +0 -240
  216. data/maps/iso-kor-Hang-Latn-1996-method2.yaml +0 -226
  217. data/maps/iso-mal-Mlym-Latn-15919-2001.yaml +0 -281
  218. data/maps/iso-mar-Deva-Latn-15919-2001.yaml +0 -75
  219. data/maps/iso-nep-Deva-Latn-15919-2001.yaml +0 -87
  220. data/maps/iso-ori-Orya-Latn-15919-2001.yaml +0 -193
  221. data/maps/iso-pan-Guru-Latn-15919-2001.yaml +0 -222
  222. data/maps/iso-pli-Beng-Latn-15919-2001.yaml +0 -73
  223. data/maps/iso-pli-Deva-Latn-15919-2001.yaml +0 -74
  224. data/maps/iso-pli-Sinh-Latn-15919-2001.yaml +0 -219
  225. data/maps/iso-pli-Thai-Latn-15919-2001.yaml +0 -55
  226. data/maps/iso-pra-Deva-Latn-15919-2001.yaml +0 -59
  227. data/maps/iso-prs-Arab-Latn-233-3-1999.yaml +0 -366
  228. data/maps/iso-rus-Cyrl-Latn-9-1995.yaml +0 -271
  229. data/maps/iso-san-Deva-Latn-15919-2001.yaml +0 -220
  230. data/maps/iso-tam-Taml-Latn-15919-2001.yaml +0 -159
  231. data/maps/iso-tel-Telu-Latn-15919-2001.yaml +0 -220
  232. data/maps/iso-tha-Thai-Latn-11940-1998.yaml +0 -109
  233. data/maps/kp-kor-Hang-Latn-2002.yaml +0 -909
  234. data/maps/lshk-yue-Hani-Latn-jyutping-1993.yaml +0 -44820
  235. data/maps/mext-jpn-Hrkt-Latn-1954.yaml +0 -411
  236. data/maps/mns-mon-Cyrl-Latn-5217-2012.yaml +0 -163
  237. data/maps/mns-mon-Latn-Cyrl-5217-2012.yaml +0 -200
  238. data/maps/moct-kor-Hang-Latn-2000.yaml +0 -807
  239. data/maps/mofa-jpn-Hrkt-Latn-1989.yaml +0 -541
  240. data/maps/mvd-bel-Cyrl-Latn-2008.yaml +0 -225
  241. data/maps/mvd-bel-Cyrl-Latn-2010.yaml +0 -63
  242. data/maps/mvd-rus-Cyrl-Latn-2008.yaml +0 -109
  243. data/maps/mvd-rus-Cyrl-Latn-2010.yaml +0 -37
  244. data/maps/odni-ara-Arab-Latn-2015.yaml +0 -425
  245. data/maps/odni-aze-Cyrl-Latn-2015.yaml +0 -144
  246. data/maps/odni-bel-Cyrl-Latn-2015.yaml +0 -148
  247. data/maps/odni-bul-Cyrl-Latn-2015.yaml +0 -96
  248. data/maps/odni-che-Cyrl-Latn-2015.yaml +0 -169
  249. data/maps/odni-fas-Arab-Latn-2015.yaml +0 -406
  250. data/maps/odni-hin-Deva-Latn-2015.yaml +0 -258
  251. data/maps/odni-kat-Geor-Latn-2015.yaml +0 -87
  252. data/maps/odni-kaz-Cyrl-Latn-2015.yaml +0 -148
  253. data/maps/odni-kir-Cyrl-Latn-2015.yaml +0 -136
  254. data/maps/odni-kor-Hang-Latn-2015.yaml +0 -375
  255. data/maps/odni-mkd-Cyrl-Latn-2015.yaml +0 -122
  256. data/maps/odni-per-Arab-Latn-2015.yaml +0 -228
  257. data/maps/odni-rus-Cyrl-Latn-2015.yaml +0 -77
  258. data/maps/odni-srp-Cyrl-Latn-2015.yaml +0 -129
  259. data/maps/odni-tat-Cyrl-Latn-2015.yaml +0 -142
  260. data/maps/odni-tgk-Cyrl-Latn-2015.yaml +0 -148
  261. data/maps/odni-uig-Cyrl-Latn-2015.yaml +0 -138
  262. data/maps/odni-ukr-Cyrl-Latn-2015.yaml +0 -157
  263. data/maps/odni-urd-Arab-Latn-2015.yaml +0 -221
  264. data/maps/odni-uzb-Cyrl-Latn-2015.yaml +0 -166
  265. data/maps/royin-tha-Thai-Latn-1939-generic.yaml +0 -90
  266. data/maps/royin-tha-Thai-Latn-1968.yaml +0 -183
  267. data/maps/royin-tha-Thai-Latn-1999-chained.yaml +0 -180
  268. data/maps/royin-tha-Thai-Latn-1999.yaml +0 -80
  269. data/maps/sac-zho-Hans-Latn-1979.yaml +0 -24763
  270. data/maps/sasm-mon-Mong-Latn-general-1978.yaml +0 -389
  271. data/maps/sasm-mon-Mong-Latn-phonetic-1978.yaml +0 -354
  272. data/maps/ses-ara-Arab-Latn-1930.yaml +0 -283
  273. data/maps/stategeocadastre-ukr-Cyrl-Latn-1993.yaml +0 -222
  274. data/maps/ua-ukr-Cyrl-Latn-1996.yaml +0 -197
  275. data/maps/ua-ukr-Cyrl-Latn-2007.yaml +0 -75
  276. data/maps/ua-ukr-Cyrl-Latn-2010.yaml +0 -192
  277. data/maps/un-amh-Ethi-Latn-2016.yaml +0 -602
  278. data/maps/un-ara-Arab-Latn-1971.yaml +0 -139
  279. data/maps/un-ara-Arab-Latn-1972.yaml +0 -159
  280. data/maps/un-ara-Arab-Latn-2017.yaml +0 -420
  281. data/maps/un-bel-Cyrl-Latn-2007.yaml +0 -114
  282. data/maps/un-ben-Beng-Latn-2016.yaml +0 -534
  283. data/maps/un-ell-Grek-Latn-1987-phonetic.yaml +0 -780
  284. data/maps/un-ell-Grek-Latn-1987-tl.yaml +0 -31
  285. data/maps/un-ell-Grek-Latn-1987-ts.yaml +0 -19
  286. data/maps/un-hin-Deva-Latn-2016.yaml +0 -222
  287. data/maps/un-mar-Deva-Latn-2016.yaml +0 -91
  288. data/maps/un-mon-Mong-Latn-general-2013.yaml +0 -264
  289. data/maps/un-mon-Mong-Latn-phonetic-2013.yaml +0 -264
  290. data/maps/un-nep-Deva-Latn-1972.yaml +0 -350
  291. data/maps/un-nep-Deva-Latn-2013.yaml +0 -74
  292. data/maps/un-rus-Cyrl-Latn-1987.yaml +0 -166
  293. data/maps/un-ukr-Cyrl-Latn-1998.yaml +0 -53
  294. data/maps/un-ukr-Cyrl-Latn-2012.yaml +0 -162
  295. data/maps/var-hin-Deva-Latn-hunterian-1872.yaml +0 -221
  296. data/maps/var-jpn-Hrkt-Latn-hepburn-1886.yaml +0 -406
  297. data/maps/var-jpn-Hrkt-Latn-hepburn-1954.yaml +0 -386
  298. data/maps/var-kor-Hang-Hang-jamo.yaml +0 -11193
  299. data/maps/var-kor-Hang-Latn-mr-1939.yaml +0 -1054
  300. data/maps/var-kor-Kore-Hang-2013.yaml +0 -59754
  301. data/maps/var-kor-Kore-Latn-mr-1939.yaml +0 -36
  302. data/maps/var-mar-Deva-Latn-hunterian-1872.yaml +0 -43
  303. data/maps/var-mon-Mong-Latn-1930.yaml +0 -102
  304. data/maps/var-mon-Mong-Latn-lessing.yaml +0 -272
  305. data/maps/var-mon-Mong-Latn-vpmc.yaml +0 -274
  306. data/maps/var-pra-Deva-Latn-iast-1912.yaml +0 -30
  307. data/maps/var-san-Deva-Latn-iast-1912.yaml +0 -149
  308. data/maps/var-tha-Thai-Thai-phonemic.yaml +0 -59
  309. data/maps/var-tha-Thai-Zsym-ipa.yaml +0 -301
  310. data/maps/var-zho-Hani-Latn-wd-1979.yaml +0 -38912
  311. data/spec/interscript/filenames_spec.rb +0 -384
  312. data/spec/interscript/mapping_spec.rb +0 -42
  313. data/spec/interscript_spec.rb +0 -29
  314. data/spec/spec_helper.rb +0 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 82fae2b248d9c86139b7f188da2ac72699696c9768e54a4510a6f1af2b933dc9
4
- data.tar.gz: 3e2cc24b8d33f5a8ed0f8b475e4d109049439221274ecda9ee1b9c7743896e07
3
+ metadata.gz: 5fc3d229c727e71662e0fd33a1e40424015f2c4caeea2b592a464554a3610ba1
4
+ data.tar.gz: f254317afa4d3d2372572df7b4751edcfb0fe2f24acc2ffc61978b613d062656
5
5
  SHA512:
6
- metadata.gz: 5f9925a97d17f0433446a898f63d18869a73e92f9975d8259c916dae242fc5b15ff93dd6d3c28ca2ff5bcbda29489d4ea59af26d4e16f2e1416d701354a6f6e2
7
- data.tar.gz: 77321c4a1001cabda8cc057950682037b637176fd05637ce78a6ea698d8c55e238e6bbcc850dda97828c719afbdae1192a8e7a93fd2307a9d52196342fb015f5
6
+ metadata.gz: 69bf1648abe50c5a27dd3a1c3d96edfd011c790b35fcfdba78ea0dd85c2339497c44add107571b05de4c042889f4b1fe9edb766a31a0613bd1b7d526bc4257de
7
+ data.tar.gz: 155a553e164a7ce32cf13ead6beaffdeb449937087d86fb605ec7813f818a1985fdc36624db8669f86b2e0bea5377ea853d6e960ed821c811cc016416b857537
data/.gitignore ADDED
@@ -0,0 +1,11 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /_yardoc/
4
+ /coverage/
5
+ /doc/
6
+ /pkg/
7
+ /spec/reports/
8
+ /tmp/
9
+
10
+ # rspec failure tracking
11
+ .rspec_status
data/.rspec ADDED
@@ -0,0 +1,3 @@
1
+ --format documentation
2
+ --color
3
+ --require spec_helper
data/Gemfile ADDED
@@ -0,0 +1,29 @@
1
+ source "https://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in interscript.gemspec
4
+ gemspec
5
+
6
+ gem "rake", "~> 12.0"
7
+ gem "rspec", "~> 3.0"
8
+
9
+ gem "interscript-maps", path: "../maps"
10
+
11
+ unless Gem::Version.new(RUBY_VERSION) < Gem::Version.new("2.7")
12
+ group :secryst do
13
+ if File.exist? "../../secryst"
14
+ gem "secryst", path: "../../secryst"
15
+ else
16
+ gem "secryst"
17
+ end
18
+ end
19
+ end
20
+
21
+ gem 'regexp_parser'
22
+
23
+ unless ENV["SKIP_JS"]
24
+ group :jsexec do
25
+ gem 'mini_racer'
26
+ end
27
+ end
28
+
29
+ gem 'simplecov', require: false, group: :test
data/LICENSE.adoc ADDED
@@ -0,0 +1,31 @@
1
+ = Licenses & Copyright
2
+
3
+ This license file adheres to the formatting guidelines of
4
+ https://github.com/nevir/readable-licenses[readable-licenses].
5
+
6
+
7
+ == Ribose BSD 2-Clause License
8
+
9
+ Copyright (c) 2019-, https://www.ribose.com[Ribose Inc].
10
+ All rights reserved.
11
+
12
+ Redistribution and use in source and binary forms, with or without modification,
13
+ are permitted provided that the following conditions are met:
14
+
15
+ 1. Redistributions of source code must retain the above copyright notice,
16
+ this list of conditions and the following disclaimer.
17
+
18
+ 2. Redistributions in binary form must reproduce the above copyright notice,
19
+ this list of conditions and the following disclaimer in the documentation
20
+ and/or other materials provided with the distribution.
21
+
22
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
23
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
24
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
25
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
26
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
27
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
28
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
29
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
30
+ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
31
+ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
data/README.md ADDED
@@ -0,0 +1,3 @@
1
+ # Interscript
2
+
3
+ Documentation is available directory higher in file README.adoc.
data/Rakefile ADDED
@@ -0,0 +1,116 @@
1
+ require "bundler/setup"
2
+ require "bundler/gem_tasks"
3
+ require "rspec/core/rake_task"
4
+
5
+ RSpec::Core::RakeTask.new(:spec)
6
+
7
+ task :compile, [:compiler, :target] do |t, args|
8
+ require "interscript"
9
+
10
+ compiler, ext = case args[:compiler]
11
+ when "ruby"
12
+ require "interscript/compiler/ruby"
13
+ [Interscript::Compiler::Ruby, "rb"]
14
+ when "javascript"
15
+ require "interscript/compiler/javascript"
16
+ [Interscript::Compiler::Javascript, "js"]
17
+ end
18
+
19
+ FileUtils.mkdir_p(args[:target])
20
+
21
+ maplist = {}
22
+
23
+ Interscript.maps.each do |map|
24
+ code = compiler.(map).code
25
+ File.write(args[:target] + "/" + map + "." + ext, code)
26
+ maplist[map] = nil
27
+ end
28
+
29
+ Interscript.maps(libraries: true).each do |map|
30
+ code = compiler.(map).code
31
+ File.write(args[:target] + "/" + map + "." + ext, code)
32
+ end
33
+
34
+ File.write(args[:target] + "/index.json", maplist.to_json)
35
+ end
36
+
37
+ task :version, [:ver] do |t, ver|
38
+ ver = ver[:ver]
39
+
40
+ rubyver = File.read(rubyfile = __dir__+"/lib/interscript/version.rb")
41
+ jsver = File.read(jsfile = __dir__+"/../js/package.json")
42
+ mapsver = File.read(mapsfile = __dir__+"/../maps/interscript-maps.gemspec")
43
+
44
+ rubyver = rubyver.gsub(/(VERSION = ")([0-9a-z.-]*)(")/, "\\1#{ver}\\3")
45
+ jsver = jsver.gsub(/("version": ")([0-9a-z.-]*)(")/, "\\1#{ver}\\3")
46
+ mapsver = mapsver.gsub(/(INTERSCRIPT_MAPS_VERSION=")([0-9a-z.-]*)(")/, "\\1#{ver}\\3")
47
+
48
+ File.write(rubyfile, rubyver)
49
+ File.write(jsfile, jsver)
50
+ File.write(mapsfile, mapsver)
51
+ end
52
+
53
+ task :generate_visualization_html do
54
+ require "fileutils"
55
+ require "interscript"
56
+ require "interscript/visualize"
57
+
58
+ FileUtils.rm_rf(dir = __dir__+"/visualizations/")
59
+ FileUtils.mkdir_p(dir)
60
+
61
+ Interscript.maps.each do |map|
62
+ html = Interscript::Visualize.(map)
63
+ File.write(dir+map+".html", html)
64
+ end
65
+ end
66
+
67
+ task :generate_metadata_json do
68
+ require "fileutils"
69
+ require "json"
70
+ require "interscript"
71
+
72
+ FileUtils.rm_rf(file = __dir__+"/metadata.json")
73
+
74
+ hash = Interscript.maps.map do |map|
75
+ parsed_map = Interscript.parse(map)
76
+ md = parsed_map.metadata.to_hash
77
+ md["test"] = parsed_map.tests&.data&.first
78
+ [map, md]
79
+ end.to_h
80
+
81
+ File.write(file, JSON.pretty_generate(hash))
82
+ end
83
+
84
+ task :generate_json do
85
+ require "fileutils"
86
+ require "json"
87
+ require "interscript"
88
+
89
+ FileUtils.rm_rf(dir = __dir__+"/json/")
90
+ FileUtils.mkdir_p(dir)
91
+
92
+ (Interscript.maps + Interscript.maps(libraries: true)).each do |map|
93
+ json = JSON.pretty_generate(Interscript.parse(map).to_hash)
94
+ File.write(dir+map+".json", json)
95
+ end
96
+ end
97
+
98
+ task :generate_visualization_json do
99
+ require "fileutils"
100
+ require "interscript"
101
+ require "json"
102
+ require "interscript/visualize"
103
+
104
+ FileUtils.rm_rf(dir = __dir__+"/vis_json/")
105
+ FileUtils.mkdir_p(dir)
106
+
107
+ (Interscript.maps + Interscript.maps(libraries: true)).each do |map_name|
108
+ map = Interscript.parse(map_name)
109
+ map.stages.each do |stage_name, stage|
110
+ json = JSON.pretty_generate(stage.to_visualization_array(map))
111
+ File.write(dir+map_name+"_#{stage_name}.json", json)
112
+ end
113
+ end
114
+ end
115
+
116
+ task :default => :spec
data/bin/console ADDED
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "interscript"
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ # require "pry"
11
+ # Pry.start
12
+
13
+ require "irb"
14
+ IRB.start(__FILE__)
data/bin/interscript ADDED
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'bundler/setup'
4
+ $LOAD_PATH << "#{__dir__}/../lib"
5
+ load "#{__dir__}/../exe/interscript"
@@ -0,0 +1,168 @@
1
+ #!/usr/bin/env ruby
2
+ ENV["INTERSCRIPT_STAGING"] = "1"
3
+ require "bundler/setup"
4
+ require "interscript"
5
+ require "interscript/compiler/ruby"
6
+
7
+ $map_name = ARGV[0]
8
+
9
+ # surpress warnings
10
+ def warn(*)
11
+ end
12
+
13
+
14
+ def debug_single_map(from, expected, result, result2)
15
+ puts ""
16
+ # puts $subs_array.inspect
17
+ # puts $subs_matches.inspect
18
+ puts from.inspect
19
+ puts from.chars.inspect
20
+ puts from.codepoints.map{|cp| '\\u%04x' % cp}.join(' ')
21
+ puts expected
22
+ puts result
23
+ puts result2
24
+ return nil unless $subs_matches
25
+ first_mismatch = $subs_matches.select{|match_data|
26
+ exp = expected[match_data[:begin]...match_data[:end]]
27
+ res = result[match_data[:begin]...match_data[:end]]
28
+ exp != res
29
+ }.first
30
+
31
+ # puts $subs_matches.inspect
32
+ # puts first_mismatch.inspect
33
+ output_string = ''
34
+ last_end = 0
35
+ $subs_matches.each do |match_data|
36
+ substr = from[match_data[:begin]...match_data[:end]]
37
+ if match_data[:begin] != last_end
38
+ output_string << '_' * (match_data[:begin] - last_end)
39
+ end
40
+ output_string << match_data[:result]
41
+
42
+ puts ''
43
+ puts "ERROR " if match_data == first_mismatch
44
+ indent = ' ' * match_data[:begin]
45
+ # puts indent + substr
46
+
47
+
48
+
49
+ matched_rule = $subs_array[match_data[:idx]]
50
+
51
+ if match_data == first_mismatch
52
+ puts indent + matched_rule.inspect + " (#{matched_rule[0].codepoints.map{|cp| '\\u%04x' % cp}.join(' ')})"
53
+ else
54
+ puts indent + matched_rule.inspect + " (#{matched_rule[0].codepoints.map{|cp| '\\u%04x' % cp}.join(' ')})"
55
+ end
56
+
57
+ puts from[0,match_data[:end]]
58
+
59
+ puts expected[0,output_string.size]
60
+ puts output_string
61
+ last_end = match_data[:end]
62
+
63
+
64
+ #return if match_data == first_mismatch
65
+ end
66
+ puts ''
67
+ end
68
+
69
+ def analyze_maps( filelist )
70
+ cache = {}
71
+
72
+ good_total = 0
73
+ almost_total = 0
74
+ bad_total = 0
75
+ passed_total = 0
76
+ for i in filelist
77
+ # used at the bottom
78
+ raw_lines = File.open(i).read.split("\n")
79
+ rules_line = raw_lines.index " # RULES"
80
+ characters_line = raw_lines.index " # CHARACTERS"
81
+ postrules_line = raw_lines.index " # POSTRULES"
82
+
83
+ system_name = File.basename(i, ".imp")
84
+
85
+ print "#{system_name}: "
86
+
87
+ exceptions = []
88
+
89
+ # begin
90
+ system = Interscript.parse(system_name)
91
+ # rescue Exception => e
92
+ # exceptions << e
93
+ # end
94
+ # puts $using_tree.inspect
95
+ if exceptions.length == 0 && system.tests && system.tests.data && system.tests.data.length > 0
96
+ good = 0
97
+ bad = 0
98
+ almost = 0
99
+
100
+ system.tests.data.each do |from,expected|
101
+ testname = from[0...300].gsub("\n", " / ")
102
+
103
+ result = Interscript.transliterate(system_name, from, cache, compiler: Interscript::Interpreter)
104
+ result2 = Interscript.transliterate(system_name, from, cache, compiler: Interscript::Compiler::Ruby)
105
+ if result == nil or result2 == nil
106
+ print '0'
107
+ bad += 1
108
+ elsif result != result2
109
+ # Compiler / Interpreter bug!
110
+ print "!"
111
+ bad += 1
112
+ elsif result == expected
113
+ print "."
114
+ good += 1
115
+ elsif result.unicode_normalize == expected.unicode_normalize
116
+ print ","
117
+ almost += 1
118
+ elsif result.unicode_normalize.chomp == expected.unicode_normalize.chomp
119
+ print ";"
120
+ almost += 1
121
+ else
122
+ print "#"
123
+ debug_single_map(from, expected, result, result2) if $map_name
124
+ bad += 1
125
+ end
126
+ rescue Exception => e
127
+ print "%"
128
+ bad += 1
129
+ exceptions << e
130
+ end
131
+
132
+ if bad == 0
133
+ passed_total += 1
134
+ puts " all tests passed!"
135
+ `git mv #{i} #{i.sub("-staging", "")}` if i.include? '-staging'
136
+ else
137
+ puts " (#{good}/#{good+almost+bad})"
138
+ end
139
+ good_total += good
140
+ almost_total += almost
141
+ bad_total += bad
142
+ elsif exceptions.length != 0
143
+ else
144
+ puts "no tests!"
145
+ end
146
+ puts "warning: postrules before rules\n\n" if (postrules_line||10000000) < (rules_line||0)
147
+ puts "warning: postrules before characters\n\n" if (postrules_line||10000000) < (characters_line||0)
148
+
149
+ Array(exceptions.first).compact.each do |e|
150
+ puts e.full_message
151
+ end
152
+ end
153
+ puts " #{good_total} (#{good_total+almost_total})/#{good_total+almost_total+bad_total}"
154
+ puts " #{passed_total} passed!"
155
+ end
156
+
157
+ #analyze_maps Dir[__dir__+"/../../maps/maps/*.imp"].sort
158
+ if $map_name
159
+ $DEBUG_RE = true
160
+ analyze_maps Dir[__dir__+"/../../maps/maps/#{$map_name}.imp"].sort
161
+ analyze_maps Dir[__dir__+"/../../maps/maps-staging/#{$map_name}.imp"].sort
162
+ else
163
+ analyze_maps Dir[__dir__+"/../../maps/maps-staging/*.imp"].sort
164
+ if ENV['NONSTAGING']
165
+ puts "\n" * 5
166
+ analyze_maps Dir[__dir__+"/../../maps/maps/*.imp"].sort
167
+ end
168
+ end
@@ -0,0 +1,58 @@
1
+ #!/usr/bin/env ruby
2
+ require "bundler/setup"
3
+ require "interscript"
4
+ require "interscript/compiler/ruby"
5
+ require "interscript/compiler/javascript"
6
+
7
+ # Differing maps as of writing this code:
8
+ # - alalc-ara-Arab-Latn-1997
9
+ # - alalc-aze-Arab-Latn-1997
10
+ # - alalc-ell-Grek-Latn-2010
11
+ # - bgnpcgn-bal-Arab-Latn-2008
12
+ # - bgnpcgn-per-Arab-Latn-1958
13
+ # - bgnpcgn-prs-Arab-Latn-2007
14
+ # - bgnpcgn-pus-Arab-Latn-1968
15
+ # - bgnpcgn-ukr-Cyrl-Latn-1965
16
+ # - bgnpcgn-urd-Arab-Latn-2007
17
+ # - odni-ara-Arab-Latn-2004
18
+ # - odni-ara-Arab-Latn-2015
19
+ # - stategeocadastre-ukr-Cyrl-Latn-1993
20
+ # - ua-ukr-Cyrl-Latn-1996
21
+ # - un-ara-Arab-Latn-2017
22
+ # - un-ell-Grek-Latn-1987-phonetic
23
+ # - un-prs-Arab-Latn-1967
24
+ # - un-urd-Arab-Latn-1972
25
+
26
+ map = ARGV[0]
27
+
28
+ m = Interscript.parse(map)
29
+
30
+ cr = Interscript::Compiler::Ruby
31
+ mr = cr.(map, debug: true)
32
+ cj = Interscript::Compiler::Javascript
33
+ mj = cj.(map, debug: true)
34
+
35
+ m.tests.data.each do |from, expected|
36
+ r = mr.(from)
37
+ j = mj.(from)
38
+
39
+ next if r == j
40
+
41
+ dr = cr.read_debug_data
42
+ dj = cj.read_debug_data
43
+
44
+ dr.zip(dj).each do |er, ej|
45
+ if er[0] != ej[0]
46
+ puts "First differing rule in map: #{er[1]}, stage #{er[2]}"
47
+ puts "Ruby: #{er[0]}, Javascript: #{ej[0]}"
48
+ puts "Rule:\n#{er[3].gsub(/^/, " ")}"
49
+ puts "Generated Ruby code:\n#{er[4].gsub(/^/, " ")}"
50
+ puts "Generated Javascript code:\n#{ej[4].gsub(/^/, " ")}"
51
+ puts
52
+ break
53
+ end
54
+ end
55
+
56
+ cr.reset_debug_data
57
+ cj.reset_debug_data
58
+ end