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
@@ -0,0 +1,25 @@
1
+
2
+ class Interscript::Node
3
+ def initialize
4
+ raise NotImplementedError, "You can't construct a Node directly"
5
+ end
6
+
7
+ def to_hash
8
+ { :class => self.class.to_s,
9
+ :question => "is something missing?"
10
+ }
11
+ end
12
+ end
13
+
14
+
15
+ require "interscript/node/group"
16
+ require "interscript/node/document"
17
+
18
+ require "interscript/node/metadata"
19
+ require 'interscript/node/alias_def'
20
+ require 'interscript/node/dependency'
21
+ require 'interscript/node/tests'
22
+
23
+ require "interscript/node/stage"
24
+ require "interscript/node/rule"
25
+ require "interscript/node/item"
@@ -0,0 +1,15 @@
1
+ class Interscript::Node::AliasDef < Interscript::Node
2
+ attr_accessor :name, :data, :doc_name
3
+
4
+ def initialize(name, data)
5
+ data = Interscript::Node::Item.try_convert(data)
6
+ @name = name
7
+ @data = data
8
+ end
9
+
10
+ def to_hash
11
+ { :class => self.class.to_s,
12
+ :name => @name,
13
+ :data => @data.to_hash }
14
+ end
15
+ end
@@ -0,0 +1,13 @@
1
+ class Interscript::Node::Dependency < Interscript::Node
2
+ attr_accessor :name, :full_name, :import, :document
3
+
4
+ def initialize
5
+ end
6
+
7
+ def to_hash
8
+ { :class => self.class.to_s,
9
+ :name => @name,
10
+ :full_name => @full_name,
11
+ :import => @import }
12
+ end
13
+ end
@@ -0,0 +1,45 @@
1
+ class Interscript::Node::Document
2
+ attr_accessor :metadata, :tests, :name
3
+ attr_accessor :dependencies, :aliases, :stages, :dep_aliases
4
+
5
+ def initialize
6
+ puts "Interscript::Node::Document.new " if $DEBUG
7
+ @metadata = nil
8
+ @tests = nil
9
+ @dependencies = []
10
+ @dep_aliases = {}
11
+ @aliases = {}
12
+ @stages = {}
13
+ end
14
+
15
+ def imported_aliases
16
+ aliases = @aliases
17
+ @dependencies.select(&:import).each do |d|
18
+ aliases = d.document.aliases.merge(aliases)
19
+ end
20
+ aliases
21
+ end
22
+
23
+ def imported_stages
24
+ stages = @stages
25
+ @dependencies.select(&:import).each do |d|
26
+ stages = d.document.stages.merge(stages)
27
+ end
28
+ stages
29
+ end
30
+
31
+ def all_dependencies
32
+ (dependencies + dependencies.map { |i| i.document.dependencies }).flatten.uniq_by do |i|
33
+ i.full_name
34
+ end
35
+ end
36
+
37
+ def to_hash
38
+ { :class => self.class.to_s, :metadata => @metadata&.to_hash,
39
+ :tests => @tests&.to_hash,
40
+ :dependencies => @dependencies.map{|x| x.to_hash},
41
+ :dep_aliases => @dep_aliases.transform_values(&:to_hash),
42
+ :aliases => @aliases.transform_values(&:to_hash),
43
+ :stages => @stages.transform_values(&:to_hash) }
44
+ end
45
+ end
@@ -0,0 +1,34 @@
1
+ class Interscript::Node::Group < Interscript::Node
2
+ attr_accessor :children
3
+
4
+ def initialize
5
+ @children = []
6
+ end
7
+
8
+ def reorder_children(source,target)
9
+ @children[source], @children[target] = @children[target], @children[source]
10
+ self
11
+ end
12
+
13
+ def apply_order(order)
14
+ children_new = [nil] * @children.size
15
+ order.each_with_index do |pos,idx|
16
+ children_new[idx] = @children[pos]
17
+ end
18
+ @children = children_new
19
+ #@children[source], @children[target] = @children[target], @children[source]
20
+ self
21
+ end
22
+
23
+ def to_hash
24
+ { :class => self.class.to_s,
25
+ :children => @children.map{|x| x.to_hash} }
26
+ end
27
+
28
+ def inspect
29
+ @children.map(&:inspect).join("\n").gsub(/^/, " ")
30
+ end
31
+ end
32
+
33
+ require "interscript/node/group/parallel"
34
+ require "interscript/node/group/sequential"
@@ -0,0 +1,9 @@
1
+ class Interscript::Node::Group::Parallel < Interscript::Node::Group
2
+ # A place for Interpreter to store a compiled form of the tree
3
+ attr_accessor :cached_tree
4
+ attr_accessor :subs_regexp, :subs_replacements, :subs_array
5
+
6
+ def inspect
7
+ "parallel {\n#{super}\n}"
8
+ end
9
+ end
@@ -0,0 +1,2 @@
1
+ class Interscript::Node::Group::Sequential < Interscript::Node::Group
2
+ end
@@ -0,0 +1,52 @@
1
+ class Interscript::Node::Item < Interscript::Node
2
+ attr_accessor :item
3
+ def initialize item
4
+ raise NotImplementedError, "You can't construct a Node::Item directly"
5
+ end
6
+
7
+ def + other
8
+ this = self
9
+
10
+ this = this.children if Interscript::Node::Item::Group === this
11
+ other = other.children if Interscript::Node::Item::Group === other
12
+
13
+ this = Array(this)
14
+ other = Array(other)
15
+
16
+ this = this.map { |i| Interscript::Node::Item.try_convert(i) }
17
+ other = other.map { |i| Interscript::Node::Item.try_convert(i) }
18
+
19
+ middle = []
20
+
21
+ if Interscript::Node::Item::String === this.last &&
22
+ Interscript::Node::Item::String === other.first
23
+
24
+ middle = [this.last + other.first]
25
+ this = this[0..-2]
26
+ other = this[1..-1]
27
+ end
28
+
29
+ g = Interscript::Node::Item::Group.new(*this, *middle, *other)
30
+ g.verify!
31
+ g
32
+ end
33
+
34
+ def to_hash
35
+ { :class => self.class.to_s,
36
+ :item => self.item }
37
+ end
38
+
39
+ def self.try_convert(i)
40
+ i = Interscript::Node::Item::String.new(i) if i.class == ::String
41
+ raise TypeError, "Wrong type #{i.class}, expected I::Node::Item" unless Interscript::Node::Item === i
42
+ i
43
+ end
44
+ end
45
+
46
+ require "interscript/node/item/alias"
47
+ require "interscript/node/item/string"
48
+ require "interscript/node/item/group"
49
+ require "interscript/node/item/any"
50
+ require "interscript/node/item/stage"
51
+ require "interscript/node/item/capture"
52
+ require "interscript/node/item/repeat"
@@ -0,0 +1,42 @@
1
+ class Interscript::Node::Item::Alias < Interscript::Node::Item
2
+ attr_accessor :name
3
+ attr_accessor :map
4
+ def initialize(name, map: nil)
5
+ self.name = name
6
+ self.map = map
7
+ end
8
+
9
+ def stdlib?
10
+ !map && Interscript::Stdlib::ALIASES.has_key?(name)
11
+ end
12
+
13
+ def max_length
14
+ if stdlib?
15
+ ([:none].include? name) ? 0 : 1
16
+ else
17
+ return 1 if name == :unicode_hangul
18
+ raise NotImplementedError, "can't get a max length of this alias"
19
+ end
20
+ end
21
+
22
+ def first_string
23
+ self
24
+ end
25
+
26
+ alias nth_string first_string
27
+
28
+ def to_hash
29
+ { :class => self.class.to_s,
30
+ :name => name,
31
+ :map => map,
32
+ }
33
+ end
34
+
35
+ def inspect
36
+ if map
37
+ "map.#{map}.#{name}"
38
+ else
39
+ "#{name}"
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,76 @@
1
+ class Interscript::Node::Item::Any < Interscript::Node::Item
2
+ attr_accessor :value
3
+ def initialize data
4
+ case data
5
+ when Array, ::String, Range
6
+ self.value = data
7
+ when Interscript::Node::Item::Group # debug alalc-ara-Arab-Latn-1997 line 683
8
+ self.value = data.children
9
+ when Interscript::Node::Item::Alias # debug mofa-jpn-Hrkt-Latn-1989 line 116
10
+ self.value = Interscript::Stdlib::ALIASES[data.name]
11
+ else
12
+ puts data.inspect
13
+ raise TypeError, "Wrong type #{data[0].class}, excepted Array, String or Range"
14
+ end
15
+ end
16
+
17
+ def data
18
+ case @value
19
+ when Array
20
+ value.map { |i| Interscript::Node::Item.try_convert(i) }
21
+ when ::String
22
+ value.split("").map { |i| Interscript::Node::Item.try_convert(i) }
23
+ when Range
24
+ value.map { |i| Interscript::Node::Item.try_convert(i) }
25
+ end
26
+ end
27
+
28
+ def first_string
29
+ case @value
30
+ when Array
31
+ Interscript::Node::Item.try_convert(value.first).first_string
32
+ when ::String
33
+ value[0]
34
+ when Range
35
+ value.begin
36
+ end
37
+ end
38
+
39
+ def nth_string
40
+ return first_string unless $select_nth_string
41
+
42
+ d = data
43
+ Fiber.yield(:prepare)
44
+ id = Fiber.yield(:select_nth_string, d.count, self.hash)
45
+ Fiber.yield(:selection)
46
+ Interscript::Node::Item.try_convert(value[id]).nth_string
47
+ end
48
+
49
+ def max_length
50
+ self.data.map(&:max_length).max
51
+ end
52
+
53
+ def to_hash
54
+ hash = { :class => self.class.to_s }
55
+
56
+ case @value
57
+ when Array
58
+ hash[:type] = "Array"
59
+ hash[:data] = data.map { |i| i.to_hash }
60
+ when ::String
61
+ hash[:type] = "String"
62
+ hash[:data] = @value
63
+ when Range
64
+ hash[:type] = "Range"
65
+ hash[:data] = [@value.begin, @value.end]
66
+ when NilClass
67
+ hash[:type] = "nil (bug)"
68
+ end
69
+
70
+ hash
71
+ end
72
+
73
+ def inspect
74
+ "any(#{value.inspect})"
75
+ end
76
+ end
@@ -0,0 +1,50 @@
1
+ # (...)
2
+ class Interscript::Node::Item::CaptureGroup < Interscript::Node::Item
3
+ attr_accessor :data
4
+
5
+ def initialize(data)
6
+ data = Interscript::Node::Item.try_convert(data)
7
+ @data = data
8
+ end
9
+
10
+ def first_string
11
+ data.first_string
12
+ end
13
+
14
+ def nth_string
15
+ data.nth_string
16
+ end
17
+
18
+ def to_hash
19
+ { :class => self.class.to_s,
20
+ :data => self.data.to_hash }
21
+ end
22
+
23
+ def inspect
24
+ "capture(#{@data.inspect})"
25
+ end
26
+ end
27
+
28
+ # \1
29
+ class Interscript::Node::Item::CaptureRef < Interscript::Node::Item
30
+ attr_accessor :id
31
+
32
+ def initialize(id)
33
+ @id = id
34
+ end
35
+
36
+ def first_string
37
+ self
38
+ end
39
+
40
+ alias nth_string first_string
41
+
42
+ def to_hash
43
+ { :class => self.class.to_s,
44
+ :id => self.id }
45
+ end
46
+
47
+ def inspect
48
+ "ref(#{@id.inspect})"
49
+ end
50
+ end
@@ -0,0 +1,51 @@
1
+ class Interscript::Node::Item::Group < Interscript::Node::Item
2
+ attr_accessor :children
3
+
4
+ def initialize *children
5
+ @children = children.flatten.map do |i|
6
+ Interscript::Node::Item.try_convert(i)
7
+ end
8
+ end
9
+
10
+ def +(item)
11
+ item = Interscript::Node::Item.try_convert(item)
12
+ out = self.dup
13
+ out.children << item
14
+ out.verify!
15
+ out
16
+ end
17
+
18
+ # Verify if a group is valid
19
+ def verify!
20
+ wrong = @children.find do |i|
21
+ Interscript::Node::Item::Stage === i ||
22
+ ! (Interscript::Node::Item === i) ||
23
+ i.class == Interscript::Node::Item
24
+ end
25
+
26
+ if wrong
27
+ raise TypeError, "An I::Node::Item::Group can't contain an #{wrong.class} item."
28
+ end
29
+ end
30
+
31
+ def first_string
32
+ self.children.map(&:first_string).reduce(&:+)
33
+ end
34
+
35
+ def nth_string
36
+ self.children.map(&:nth_string).reduce(&:+)
37
+ end
38
+
39
+ def max_length
40
+ @children.map { |i| i.max_length }.sum
41
+ end
42
+
43
+ def to_hash
44
+ { :class => self.class.to_s,
45
+ :children => self.children.map{|x| x.to_hash} }
46
+ end
47
+
48
+ def inspect
49
+ @children.map(&:inspect).join("+")
50
+ end
51
+ end
@@ -0,0 +1,40 @@
1
+ class Interscript::Node::Item::Repeat < Interscript::Node::Item
2
+ attr_accessor :data
3
+ def initialize data
4
+ data = Interscript::Node::Item.try_convert(data)
5
+ @data = data
6
+ end
7
+
8
+ def first_string
9
+ data.first_string
10
+ end
11
+
12
+ def nth_string
13
+ data.nth_string
14
+ end
15
+
16
+ def max_length
17
+ data.max_length
18
+ end
19
+
20
+ def to_hash
21
+ { :class => self.class.to_s,
22
+ :data => self.data.to_hash }
23
+ end
24
+
25
+ def inspect
26
+ str = case self
27
+ when Interscript::Node::Item::Maybe
28
+ "maybe"
29
+ when Interscript::Node::Item::MaybeSome
30
+ "maybe_some"
31
+ when Interscript::Node::Item::Some
32
+ "some"
33
+ end
34
+ "#{str}(#{@data.inspect})"
35
+ end
36
+ end
37
+
38
+ class Interscript::Node::Item::Maybe < Interscript::Node::Item::Repeat; end
39
+ class Interscript::Node::Item::MaybeSome < Interscript::Node::Item::Repeat; end
40
+ class Interscript::Node::Item::Some < Interscript::Node::Item::Repeat; end