liblouis-rb 0.1.0

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 (517) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +520 -0
  3. data/README.md +100 -0
  4. data/Rakefile +80 -0
  5. data/ext/liblouis/braille_character.c +200 -0
  6. data/ext/liblouis/braille_table.c +198 -0
  7. data/ext/liblouis/braille_text.c +223 -0
  8. data/ext/liblouis/extconf.rb +73 -0
  9. data/ext/liblouis/liblouis.c +168 -0
  10. data/ext/liblouis/liblouis_ext.h +49 -0
  11. data/ext/liblouis/table_source.c +161 -0
  12. data/ext/liblouis/translation.c +443 -0
  13. data/liblouis-rb.gemspec +49 -0
  14. data/spec/liblouis_spec.rb +62 -0
  15. data/test/integration/packaging_test.rb +82 -0
  16. data/test/table_source_cases.rb +9 -0
  17. data/test/test_braille_character.rb +62 -0
  18. data/test/test_braille_table.rb +379 -0
  19. data/test/test_braille_text.rb +30 -0
  20. data/test/test_helper.rb +7 -0
  21. data/test/translation_cases.rb +33 -0
  22. data/vendor/liblouis/COPYING +674 -0
  23. data/vendor/liblouis/COPYING.LESSER +502 -0
  24. data/vendor/liblouis/configure.ac +290 -0
  25. data/vendor/liblouis/liblouis/commonTranslationFunctions.c +95 -0
  26. data/vendor/liblouis/liblouis/compileTranslationTable.c +5515 -0
  27. data/vendor/liblouis/liblouis/internal.h +781 -0
  28. data/vendor/liblouis/liblouis/liblouis.h.in +514 -0
  29. data/vendor/liblouis/liblouis/logging.c +233 -0
  30. data/vendor/liblouis/liblouis/lou_backTranslateString.c +1855 -0
  31. data/vendor/liblouis/liblouis/lou_translateString.c +4177 -0
  32. data/vendor/liblouis/liblouis/maketable.c +463 -0
  33. data/vendor/liblouis/liblouis/metadata.c +1258 -0
  34. data/vendor/liblouis/liblouis/pattern.c +1632 -0
  35. data/vendor/liblouis/liblouis/utils.c +448 -0
  36. data/vendor/liblouis/tables/Es-Es-G0.utb +248 -0
  37. data/vendor/liblouis/tables/IPA-unicode-range.uti +200 -0
  38. data/vendor/liblouis/tables/IPA.utb +164 -0
  39. data/vendor/liblouis/tables/Lv-Lv-g1.utb +509 -0
  40. data/vendor/liblouis/tables/Makefile.am +503 -0
  41. data/vendor/liblouis/tables/Pl-Pl-g1.utb +312 -0
  42. data/vendor/liblouis/tables/README +6 -0
  43. data/vendor/liblouis/tables/afr-za-g1.ctb +63 -0
  44. data/vendor/liblouis/tables/afr-za-g2.ctb +1050 -0
  45. data/vendor/liblouis/tables/akk-borger.utb +997 -0
  46. data/vendor/liblouis/tables/akk.utb +1002 -0
  47. data/vendor/liblouis/tables/ancient-languages-borger.utb +114 -0
  48. data/vendor/liblouis/tables/ancient-languages-us.utb +114 -0
  49. data/vendor/liblouis/tables/ar-ar-comp8.utb +293 -0
  50. data/vendor/liblouis/tables/ar-ar-g1-core.uti +291 -0
  51. data/vendor/liblouis/tables/ar-ar-g1.utb +26 -0
  52. data/vendor/liblouis/tables/ar-ar-g2.ctb +447 -0
  53. data/vendor/liblouis/tables/ar-ar-math.uti +501 -0
  54. data/vendor/liblouis/tables/ar.tbl +17 -0
  55. data/vendor/liblouis/tables/as-in-g1.utb +27 -0
  56. data/vendor/liblouis/tables/as.tbl +18 -0
  57. data/vendor/liblouis/tables/aw-in-g1.utb +27 -0
  58. data/vendor/liblouis/tables/awa.tbl +18 -0
  59. data/vendor/liblouis/tables/ba.utb +64 -0
  60. data/vendor/liblouis/tables/be-in-g1.utb +27 -0
  61. data/vendor/liblouis/tables/bel-comp.utb +42 -0
  62. data/vendor/liblouis/tables/bel-detailed.utb +32 -0
  63. data/vendor/liblouis/tables/bel.utb +61 -0
  64. data/vendor/liblouis/tables/bengali.cti +238 -0
  65. data/vendor/liblouis/tables/bg.ctb +215 -0
  66. data/vendor/liblouis/tables/bg.dis +84 -0
  67. data/vendor/liblouis/tables/bg.tbl +21 -0
  68. data/vendor/liblouis/tables/bg.utb +454 -0
  69. data/vendor/liblouis/tables/bh.ctb +24 -0
  70. data/vendor/liblouis/tables/bh.tbl +17 -0
  71. data/vendor/liblouis/tables/bn.tbl +18 -0
  72. data/vendor/liblouis/tables/bo.ctb +184 -0
  73. data/vendor/liblouis/tables/bo.tbl +21 -0
  74. data/vendor/liblouis/tables/boxes.ctb +162 -0
  75. data/vendor/liblouis/tables/br-in-g1.utb +27 -0
  76. data/vendor/liblouis/tables/bra.tbl +18 -0
  77. data/vendor/liblouis/tables/braille-patterns.cti +287 -0
  78. data/vendor/liblouis/tables/ca-chardefs.cti +225 -0
  79. data/vendor/liblouis/tables/ca-g1.ctb +46 -0
  80. data/vendor/liblouis/tables/ca.tbl +18 -0
  81. data/vendor/liblouis/tables/chr-us-g1.ctb +180 -0
  82. data/vendor/liblouis/tables/ckb-chardefs.cti +219 -0
  83. data/vendor/liblouis/tables/ckb-g1.ctb +31 -0
  84. data/vendor/liblouis/tables/ckb-translation.cti +131 -0
  85. data/vendor/liblouis/tables/ckb.tbl +18 -0
  86. data/vendor/liblouis/tables/compress.cti +44 -0
  87. data/vendor/liblouis/tables/controlchars.cti +27 -0
  88. data/vendor/liblouis/tables/cop-eg-comp8.utb +255 -0
  89. data/vendor/liblouis/tables/cop.utb +231 -0
  90. data/vendor/liblouis/tables/corrections.cti +47 -0
  91. data/vendor/liblouis/tables/countries.cti +263 -0
  92. data/vendor/liblouis/tables/critical-apparatus.uti +54 -0
  93. data/vendor/liblouis/tables/cs-chardefs.cti +385 -0
  94. data/vendor/liblouis/tables/cs-comp8.utb +405 -0
  95. data/vendor/liblouis/tables/cs-g1.ctb +37 -0
  96. data/vendor/liblouis/tables/cs-translation.cti +63 -0
  97. data/vendor/liblouis/tables/cs.tbl +20 -0
  98. data/vendor/liblouis/tables/cuneiform-transliterated-compact.utb +432 -0
  99. data/vendor/liblouis/tables/cuneiform-transliterated.utb +160 -0
  100. data/vendor/liblouis/tables/cy-cy-g1.utb +487 -0
  101. data/vendor/liblouis/tables/cy-cy-g2.ctb +199 -0
  102. data/vendor/liblouis/tables/cy.tbl +19 -0
  103. data/vendor/liblouis/tables/da-dk-6miscChars.cti +385 -0
  104. data/vendor/liblouis/tables/da-dk-6miscChars_1993.cti +412 -0
  105. data/vendor/liblouis/tables/da-dk-8miscChars.cti +90 -0
  106. data/vendor/liblouis/tables/da-dk-8miscChars_1993.cti +102 -0
  107. data/vendor/liblouis/tables/da-dk-g08.ctb +290 -0
  108. data/vendor/liblouis/tables/da-dk-g08_1993.ctb +331 -0
  109. data/vendor/liblouis/tables/da-dk-g16-lit_1993.ctb +294 -0
  110. data/vendor/liblouis/tables/da-dk-g16.ctb +289 -0
  111. data/vendor/liblouis/tables/da-dk-g16_1993.ctb +305 -0
  112. data/vendor/liblouis/tables/da-dk-g18.ctb +545 -0
  113. data/vendor/liblouis/tables/da-dk-g18_1993.ctb +563 -0
  114. data/vendor/liblouis/tables/da-dk-g2.dic +7439 -0
  115. data/vendor/liblouis/tables/da-dk-g26-lit_1993.ctb +898 -0
  116. data/vendor/liblouis/tables/da-dk-g26.ctb +1345 -0
  117. data/vendor/liblouis/tables/da-dk-g26_1993.ctb +1127 -0
  118. data/vendor/liblouis/tables/da-dk-g26l-lit_1993.ctb +588 -0
  119. data/vendor/liblouis/tables/da-dk-g26l_1993.ctb +604 -0
  120. data/vendor/liblouis/tables/da-dk-g28.ctb +2426 -0
  121. data/vendor/liblouis/tables/da-dk-g28_1993.ctb +2063 -0
  122. data/vendor/liblouis/tables/da-dk-g28l_1993.ctb +1594 -0
  123. data/vendor/liblouis/tables/da-dk-octobraille.dis +316 -0
  124. data/vendor/liblouis/tables/da-dk-octobraille_1993.dis +313 -0
  125. data/vendor/liblouis/tables/de-accents-detailed.cti +214 -0
  126. data/vendor/liblouis/tables/de-accents.cti +214 -0
  127. data/vendor/liblouis/tables/de-chardefs6.cti +289 -0
  128. data/vendor/liblouis/tables/de-chardefs8.cti +278 -0
  129. data/vendor/liblouis/tables/de-chess.ctb +37 -0
  130. data/vendor/liblouis/tables/de-comp6.utb +226 -0
  131. data/vendor/liblouis/tables/de-de-comp8.ctb +492 -0
  132. data/vendor/liblouis/tables/de-de.dis +331 -0
  133. data/vendor/liblouis/tables/de-eurobrl6.dis +101 -0
  134. data/vendor/liblouis/tables/de-eurobrl6u.dis +96 -0
  135. data/vendor/liblouis/tables/de-g0-core.uti +732 -0
  136. data/vendor/liblouis/tables/de-g0-detailed.utb +84 -0
  137. data/vendor/liblouis/tables/de-g0.utb +57 -0
  138. data/vendor/liblouis/tables/de-g1-core-patterns.dic +4863 -0
  139. data/vendor/liblouis/tables/de-g1-core.cti +67 -0
  140. data/vendor/liblouis/tables/de-g1-detailed.ctb +79 -0
  141. data/vendor/liblouis/tables/de-g1.ctb +54 -0
  142. data/vendor/liblouis/tables/de-g2-core-patterns.dic +26711 -0
  143. data/vendor/liblouis/tables/de-g2-core.cti +607 -0
  144. data/vendor/liblouis/tables/de-g2-detailed.ctb +60 -0
  145. data/vendor/liblouis/tables/de-g2.ctb +57 -0
  146. data/vendor/liblouis/tables/devanagari.cti +325 -0
  147. data/vendor/liblouis/tables/digits6Dots.uti +30 -0
  148. data/vendor/liblouis/tables/digits6DotsPlusDot6.uti +30 -0
  149. data/vendor/liblouis/tables/digits8Dots.uti +30 -0
  150. data/vendor/liblouis/tables/dra.ctb +23 -0
  151. data/vendor/liblouis/tables/dra.tbl +21 -0
  152. data/vendor/liblouis/tables/el.ctb +775 -0
  153. data/vendor/liblouis/tables/en-GB-g2.ctb +829 -0
  154. data/vendor/liblouis/tables/en-chardefs.cti +193 -0
  155. data/vendor/liblouis/tables/en-chess.ctb +37 -0
  156. data/vendor/liblouis/tables/en-g3-patterns.dic +11194 -0
  157. data/vendor/liblouis/tables/en-g3.ctb +2261 -0
  158. data/vendor/liblouis/tables/en-gb-comp8.ctb +282 -0
  159. data/vendor/liblouis/tables/en-gb-g1.utb +527 -0
  160. data/vendor/liblouis/tables/en-in-g1.ctb +162 -0
  161. data/vendor/liblouis/tables/en-nabcc.utb +166 -0
  162. data/vendor/liblouis/tables/en-nz-g1.utb +65 -0
  163. data/vendor/liblouis/tables/en-nz-g2.ctb +46 -0
  164. data/vendor/liblouis/tables/en-ueb-chardefs.uti +938 -0
  165. data/vendor/liblouis/tables/en-ueb-g1.ctb +167 -0
  166. data/vendor/liblouis/tables/en-ueb-g2.ctb +3925 -0
  167. data/vendor/liblouis/tables/en-ueb-math.ctb +71 -0
  168. data/vendor/liblouis/tables/en-us-brf.dis +102 -0
  169. data/vendor/liblouis/tables/en-us-comp6.ctb +149 -0
  170. data/vendor/liblouis/tables/en-us-comp8-ext.utb +626 -0
  171. data/vendor/liblouis/tables/en-us-comp8.ctb +62 -0
  172. data/vendor/liblouis/tables/en-us-compbrl.uti +69 -0
  173. data/vendor/liblouis/tables/en-us-emphasis.uti +45 -0
  174. data/vendor/liblouis/tables/en-us-g1.ctb +199 -0
  175. data/vendor/liblouis/tables/en-us-g2.ctb +1081 -0
  176. data/vendor/liblouis/tables/en-us-interline.ctb +1126 -0
  177. data/vendor/liblouis/tables/en-us-mathtext.ctb +880 -0
  178. data/vendor/liblouis/tables/en_CA.ctb +195 -0
  179. data/vendor/liblouis/tables/en_CA.tbl +21 -0
  180. data/vendor/liblouis/tables/en_GB.tbl +26 -0
  181. data/vendor/liblouis/tables/en_US-comp8-ext.tbl +15 -0
  182. data/vendor/liblouis/tables/en_US.tbl +26 -0
  183. data/vendor/liblouis/tables/eo-g1-x-system.ctb +85 -0
  184. data/vendor/liblouis/tables/eo-g1.ctb +165 -0
  185. data/vendor/liblouis/tables/eo.tbl +14 -0
  186. data/vendor/liblouis/tables/es-chardefs.cti +206 -0
  187. data/vendor/liblouis/tables/es-g1.ctb +36 -0
  188. data/vendor/liblouis/tables/es-g2.ctb +955 -0
  189. data/vendor/liblouis/tables/es-new.dis +284 -0
  190. data/vendor/liblouis/tables/es-no.utb +79 -0
  191. data/vendor/liblouis/tables/es-old.dis +284 -0
  192. data/vendor/liblouis/tables/es.tbl +19 -0
  193. data/vendor/liblouis/tables/et-6dot.utb +269 -0
  194. data/vendor/liblouis/tables/et-g0.utb +139 -0
  195. data/vendor/liblouis/tables/ethio-g1.ctb +335 -0
  196. data/vendor/liblouis/tables/eurodefs.cti +107 -0
  197. data/vendor/liblouis/tables/fa-ir-comp8.ctb +250 -0
  198. data/vendor/liblouis/tables/fa-ir-g1.utb +311 -0
  199. data/vendor/liblouis/tables/fi-fi-8dot.ctb +278 -0
  200. data/vendor/liblouis/tables/fi.utb +354 -0
  201. data/vendor/liblouis/tables/fil-g2.ctb +491 -0
  202. data/vendor/liblouis/tables/fr-bfu-comp6-puncs-math.uti +351 -0
  203. data/vendor/liblouis/tables/fr-bfu-comp6.utb +238 -0
  204. data/vendor/liblouis/tables/fr-bfu-comp68.cti +251 -0
  205. data/vendor/liblouis/tables/fr-bfu-comp8.utb +323 -0
  206. data/vendor/liblouis/tables/fr-bfu-g2.ctb +4644 -0
  207. data/vendor/liblouis/tables/ga-g1.utb +95 -0
  208. data/vendor/liblouis/tables/ga-g2.ctb +231 -0
  209. data/vendor/liblouis/tables/gd.ctb +123 -0
  210. data/vendor/liblouis/tables/gd.tbl +21 -0
  211. data/vendor/liblouis/tables/gez.tbl +21 -0
  212. data/vendor/liblouis/tables/gon.ctb +25 -0
  213. data/vendor/liblouis/tables/gon.tbl +17 -0
  214. data/vendor/liblouis/tables/gr-pl-comp8.uti +256 -0
  215. data/vendor/liblouis/tables/grc-international-common.uti +104 -0
  216. data/vendor/liblouis/tables/grc-international-composed.uti +268 -0
  217. data/vendor/liblouis/tables/grc-international-decomposed.uti +268 -0
  218. data/vendor/liblouis/tables/grc-international-en-composed.utb +54 -0
  219. data/vendor/liblouis/tables/grc-international-en.utb +206 -0
  220. data/vendor/liblouis/tables/grc-international-es.utb +228 -0
  221. data/vendor/liblouis/tables/gu-in-g1.utb +27 -0
  222. data/vendor/liblouis/tables/gu.tbl +18 -0
  223. data/vendor/liblouis/tables/gujarati.cti +221 -0
  224. data/vendor/liblouis/tables/gurumuki.cti +393 -0
  225. data/vendor/liblouis/tables/haw-us-g1.ctb +54 -0
  226. data/vendor/liblouis/tables/hbo-cantillated-rules.uti +71 -0
  227. data/vendor/liblouis/tables/hbo-cantillated.utb +109 -0
  228. data/vendor/liblouis/tables/hbo-common-rules.uti +152 -0
  229. data/vendor/liblouis/tables/hbo-ihbc-rules.uti +58 -0
  230. data/vendor/liblouis/tables/hbo-slim-rules.uti +68 -0
  231. data/vendor/liblouis/tables/hbo-slim.utb +100 -0
  232. data/vendor/liblouis/tables/hbo.utb +107 -0
  233. data/vendor/liblouis/tables/he-IL-comp8.utb +464 -0
  234. data/vendor/liblouis/tables/he-IL.utb +406 -0
  235. data/vendor/liblouis/tables/he-common-consonants.uti +102 -0
  236. data/vendor/liblouis/tables/he-common-vowels-ihbc.uti +161 -0
  237. data/vendor/liblouis/tables/hi-in-g1.utb +27 -0
  238. data/vendor/liblouis/tables/hi.tbl +18 -0
  239. data/vendor/liblouis/tables/hr-chardefs.cti +278 -0
  240. data/vendor/liblouis/tables/hr-comp8.tbl +21 -0
  241. data/vendor/liblouis/tables/hr-comp8.utb +239 -0
  242. data/vendor/liblouis/tables/hr-digits.uti +40 -0
  243. data/vendor/liblouis/tables/hr-g1.ctb +36 -0
  244. data/vendor/liblouis/tables/hr-g1.tbl +9 -0
  245. data/vendor/liblouis/tables/hr-translation.cti +364 -0
  246. data/vendor/liblouis/tables/ht-frenchcompatibility.uti +61 -0
  247. data/vendor/liblouis/tables/ht-g1.utb +114 -0
  248. data/vendor/liblouis/tables/hu-backtranslate-correction.dis +38 -0
  249. data/vendor/liblouis/tables/hu-backtranslate-word-corrections.cti +4293 -0
  250. data/vendor/liblouis/tables/hu-chardefs.cti +298 -0
  251. data/vendor/liblouis/tables/hu-exceptionwords.cti +3204 -0
  252. data/vendor/liblouis/tables/hu-hu-comp8.ctb +183 -0
  253. data/vendor/liblouis/tables/hu-hu-g1.ctb +129 -0
  254. data/vendor/liblouis/tables/hu-hu-g1_braille_input.cti +486 -0
  255. data/vendor/liblouis/tables/hu-hu-g2.ctb +270 -0
  256. data/vendor/liblouis/tables/hu-hu-g2_exceptions.cti +1164 -0
  257. data/vendor/liblouis/tables/hy.ctb +121 -0
  258. data/vendor/liblouis/tables/hy.tbl +21 -0
  259. data/vendor/liblouis/tables/hyph_cs_CZ.dic +3637 -0
  260. data/vendor/liblouis/tables/hyph_da_DK.dic +8896 -0
  261. data/vendor/liblouis/tables/hyph_de_DE.dic +5799 -0
  262. data/vendor/liblouis/tables/hyph_en_US.dic +5537 -0
  263. data/vendor/liblouis/tables/hyph_eo.dic +1024 -0
  264. data/vendor/liblouis/tables/hyph_es_ES.dic +877 -0
  265. data/vendor/liblouis/tables/hyph_fr_FR.dic +1067 -0
  266. data/vendor/liblouis/tables/hyph_hu_HU.dic +98519 -0
  267. data/vendor/liblouis/tables/hyph_it_IT.dic +410 -0
  268. data/vendor/liblouis/tables/hyph_nb_NO.dic +27142 -0
  269. data/vendor/liblouis/tables/hyph_nl_NL.dic +12725 -0
  270. data/vendor/liblouis/tables/hyph_nn_NO.dic +27142 -0
  271. data/vendor/liblouis/tables/hyph_pl_PL.dic +4074 -0
  272. data/vendor/liblouis/tables/hyph_pt_PT.dic +308 -0
  273. data/vendor/liblouis/tables/hyph_ru.dic +6480 -0
  274. data/vendor/liblouis/tables/hyph_sv_SE.dic +4697 -0
  275. data/vendor/liblouis/tables/is-chardefs6.cti +170 -0
  276. data/vendor/liblouis/tables/is-chardefs8.cti +293 -0
  277. data/vendor/liblouis/tables/is.ctb +157 -0
  278. data/vendor/liblouis/tables/is.tbl +18 -0
  279. data/vendor/liblouis/tables/it-it-comp6.utb +404 -0
  280. data/vendor/liblouis/tables/it-it-comp8.utb +663 -0
  281. data/vendor/liblouis/tables/iu-ca-g1.ctb +236 -0
  282. data/vendor/liblouis/tables/ja-kantenji-ucs2.utb +11448 -0
  283. data/vendor/liblouis/tables/ja-kantenji.utb +53 -0
  284. data/vendor/liblouis/tables/ja-rokutenkanji.utb +8710 -0
  285. data/vendor/liblouis/tables/ka-in-g1.utb +27 -0
  286. data/vendor/liblouis/tables/ka.utb +128 -0
  287. data/vendor/liblouis/tables/kannada.cti +282 -0
  288. data/vendor/liblouis/tables/kh-in-g1.utb +26 -0
  289. data/vendor/liblouis/tables/kha.tbl +18 -0
  290. data/vendor/liblouis/tables/kk.utb +77 -0
  291. data/vendor/liblouis/tables/km-g1.utb +412 -0
  292. data/vendor/liblouis/tables/kmr.tbl +108 -0
  293. data/vendor/liblouis/tables/kn.tbl +18 -0
  294. data/vendor/liblouis/tables/ko-2006-g1.ctb +49 -0
  295. data/vendor/liblouis/tables/ko-2006-g2.ctb +53 -0
  296. data/vendor/liblouis/tables/ko-2006.cti +190 -0
  297. data/vendor/liblouis/tables/ko-chars.cti +15140 -0
  298. data/vendor/liblouis/tables/ko-g1-rules.cti +634 -0
  299. data/vendor/liblouis/tables/ko-g1.ctb +48 -0
  300. data/vendor/liblouis/tables/ko-g2-rules.cti +9263 -0
  301. data/vendor/liblouis/tables/ko-g2.ctb +52 -0
  302. data/vendor/liblouis/tables/ko.cti +223 -0
  303. data/vendor/liblouis/tables/kok.ctb +24 -0
  304. data/vendor/liblouis/tables/kok.tbl +17 -0
  305. data/vendor/liblouis/tables/kru.ctb +24 -0
  306. data/vendor/liblouis/tables/kru.tbl +17 -0
  307. data/vendor/liblouis/tables/ks-in-g1.utb +27 -0
  308. data/vendor/liblouis/tables/latinLetterDef6Dots.uti +78 -0
  309. data/vendor/liblouis/tables/latinLetterDef8Dots.uti +75 -0
  310. data/vendor/liblouis/tables/latinLowercase.uti +389 -0
  311. data/vendor/liblouis/tables/latinUppercaseComp6.uti +78 -0
  312. data/vendor/liblouis/tables/lg-ug-g1.utb +60 -0
  313. data/vendor/liblouis/tables/litdigits6Dots.uti +30 -0
  314. data/vendor/liblouis/tables/litdigits6DotsPlusDot6.uti +30 -0
  315. data/vendor/liblouis/tables/lo-g1.utb +3127 -0
  316. data/vendor/liblouis/tables/loweredDigits6Dots.uti +30 -0
  317. data/vendor/liblouis/tables/loweredDigits8Dots.uti +30 -0
  318. data/vendor/liblouis/tables/lt-6dot.utb +308 -0
  319. data/vendor/liblouis/tables/lt-8dot.utb +281 -0
  320. data/vendor/liblouis/tables/lt.ctb +313 -0
  321. data/vendor/liblouis/tables/lv.tbl +22 -0
  322. data/vendor/liblouis/tables/maketablelist.sh +52 -0
  323. data/vendor/liblouis/tables/malayalam.cti +674 -0
  324. data/vendor/liblouis/tables/mao-nz-g1.ctb +65 -0
  325. data/vendor/liblouis/tables/marburg_single_cell_defs.cti +66 -0
  326. data/vendor/liblouis/tables/marburg_unicode_defs.cti +297 -0
  327. data/vendor/liblouis/tables/mk-g1.utb +240 -0
  328. data/vendor/liblouis/tables/ml-in-g1.utb +27 -0
  329. data/vendor/liblouis/tables/ml.tbl +21 -0
  330. data/vendor/liblouis/tables/mn-MN-common.cti +110 -0
  331. data/vendor/liblouis/tables/mn-MN-g1.utb +52 -0
  332. data/vendor/liblouis/tables/mn-MN-g2.ctb +50 -0
  333. data/vendor/liblouis/tables/mn-in-g1.utb +27 -0
  334. data/vendor/liblouis/tables/mni.tbl +18 -0
  335. data/vendor/liblouis/tables/mr-in-g1.utb +27 -0
  336. data/vendor/liblouis/tables/mr.tbl +18 -0
  337. data/vendor/liblouis/tables/ms-my-g2.ctb +4897 -0
  338. data/vendor/liblouis/tables/mt.ctb +114 -0
  339. data/vendor/liblouis/tables/mt.tbl +21 -0
  340. data/vendor/liblouis/tables/mun.ctb +24 -0
  341. data/vendor/liblouis/tables/mun.tbl +17 -0
  342. data/vendor/liblouis/tables/mwr.ctb +24 -0
  343. data/vendor/liblouis/tables/mwr.tbl +17 -0
  344. data/vendor/liblouis/tables/my-g1.utb +771 -0
  345. data/vendor/liblouis/tables/my-g2.ctb +3805 -0
  346. data/vendor/liblouis/tables/ne.ctb +22 -0
  347. data/vendor/liblouis/tables/ne.tbl +18 -0
  348. data/vendor/liblouis/tables/nemethdefs.cti +382 -0
  349. data/vendor/liblouis/tables/nl-BE.dis +532 -0
  350. data/vendor/liblouis/tables/nl-NL-g0.utb.in +646 -0
  351. data/vendor/liblouis/tables/nl-chardefs.uti.in +455 -0
  352. data/vendor/liblouis/tables/nl-comp8.utb +411 -0
  353. data/vendor/liblouis/tables/nl-print.dis +551 -0
  354. data/vendor/liblouis/tables/nl-unicode.dis +540 -0
  355. data/vendor/liblouis/tables/no-no-8dot-fallback-6dot-g0.utb +59 -0
  356. data/vendor/liblouis/tables/no-no-8dot.utb +629 -0
  357. data/vendor/liblouis/tables/no-no-braillo-047-01.dis +247 -0
  358. data/vendor/liblouis/tables/no-no-chardefs6.uti +305 -0
  359. data/vendor/liblouis/tables/no-no-comp8.ctb +323 -0
  360. data/vendor/liblouis/tables/no-no-cyrillic6dot.uti +95 -0
  361. data/vendor/liblouis/tables/no-no-g0.utb +320 -0
  362. data/vendor/liblouis/tables/no-no-g1.ctb +272 -0
  363. data/vendor/liblouis/tables/no-no-g2.ctb +737 -0
  364. data/vendor/liblouis/tables/no-no-g3.ctb +3597 -0
  365. data/vendor/liblouis/tables/no-no-generic.ctb +295 -0
  366. data/vendor/liblouis/tables/no-no-generic.dis +295 -0
  367. data/vendor/liblouis/tables/no-no-latinLetterDef6Dots_diacritics.uti +852 -0
  368. data/vendor/liblouis/tables/no-no.dis +291 -0
  369. data/vendor/liblouis/tables/np-in-g1.utb +27 -0
  370. data/vendor/liblouis/tables/nso-za-g1.utb +38 -0
  371. data/vendor/liblouis/tables/nso-za-g2.ctb +38 -0
  372. data/vendor/liblouis/tables/ny-mw.utb +70 -0
  373. data/vendor/liblouis/tables/or-in-g1.utb +27 -0
  374. data/vendor/liblouis/tables/or.tbl +18 -0
  375. data/vendor/liblouis/tables/oriya.cti +238 -0
  376. data/vendor/liblouis/tables/ovd-6g0.utb +64 -0
  377. data/vendor/liblouis/tables/ovd-8g0.utb +81 -0
  378. data/vendor/liblouis/tables/pa.tbl +18 -0
  379. data/vendor/liblouis/tables/pi.ctb +24 -0
  380. data/vendor/liblouis/tables/pi.tbl +17 -0
  381. data/vendor/liblouis/tables/pl-pl-comp8.ctb +658 -0
  382. data/vendor/liblouis/tables/pl.tbl +12 -0
  383. data/vendor/liblouis/tables/printables.cti +70 -0
  384. data/vendor/liblouis/tables/pt-comp6.utb +299 -0
  385. data/vendor/liblouis/tables/pt-pt-comp8.ctb +395 -0
  386. data/vendor/liblouis/tables/pt-pt-g1.utb +1312 -0
  387. data/vendor/liblouis/tables/pt-pt-g2.ctb +874 -0
  388. data/vendor/liblouis/tables/pt.tbl +20 -0
  389. data/vendor/liblouis/tables/pu-in-g1.utb +42 -0
  390. data/vendor/liblouis/tables/quotation-marks.uti +30 -0
  391. data/vendor/liblouis/tables/ro-g0.utb +85 -0
  392. data/vendor/liblouis/tables/ro.ctb +126 -0
  393. data/vendor/liblouis/tables/ro.tbl +21 -0
  394. data/vendor/liblouis/tables/ru-brf.dis +116 -0
  395. data/vendor/liblouis/tables/ru-comp6.utb +258 -0
  396. data/vendor/liblouis/tables/ru-comp8.utb +740 -0
  397. data/vendor/liblouis/tables/ru-letters.dis +145 -0
  398. data/vendor/liblouis/tables/ru-litbrl-detailed.utb +77 -0
  399. data/vendor/liblouis/tables/ru-litbrl.ctb +857 -0
  400. data/vendor/liblouis/tables/ru-math.uti +395 -0
  401. data/vendor/liblouis/tables/ru-ru-g1.ctb +804 -0
  402. data/vendor/liblouis/tables/ru-unicode.dis +121 -0
  403. data/vendor/liblouis/tables/rw-rw-g1.utb +133 -0
  404. data/vendor/liblouis/tables/sa-in-g1.utb +27 -0
  405. data/vendor/liblouis/tables/sa.tbl +18 -0
  406. data/vendor/liblouis/tables/sah.utb +72 -0
  407. data/vendor/liblouis/tables/sd.tbl +18 -0
  408. data/vendor/liblouis/tables/se-se.ctb +246 -0
  409. data/vendor/liblouis/tables/se-se.dis +334 -0
  410. data/vendor/liblouis/tables/si-in-g1.utb +27 -0
  411. data/vendor/liblouis/tables/sin.cti +213 -0
  412. data/vendor/liblouis/tables/sin.utb +35 -0
  413. data/vendor/liblouis/tables/sk-g1.ctb +1019 -0
  414. data/vendor/liblouis/tables/sk-sk-g1.utb +206 -0
  415. data/vendor/liblouis/tables/sk-sk.utb +112 -0
  416. data/vendor/liblouis/tables/sl-si-comp8.ctb +204 -0
  417. data/vendor/liblouis/tables/sl-si-g1.utb +471 -0
  418. data/vendor/liblouis/tables/sl.tbl +20 -0
  419. data/vendor/liblouis/tables/smi-6g0.utb +64 -0
  420. data/vendor/liblouis/tables/smi-8g0.utb +61 -0
  421. data/vendor/liblouis/tables/sot-za-g1.ctb +72 -0
  422. data/vendor/liblouis/tables/sot-za-g2.ctb +244 -0
  423. data/vendor/liblouis/tables/spaces.uti +62 -0
  424. data/vendor/liblouis/tables/sr-Cyrl.ctb +59 -0
  425. data/vendor/liblouis/tables/sr-common.cti +161 -0
  426. data/vendor/liblouis/tables/sr-cyrletters.cti +92 -0
  427. data/vendor/liblouis/tables/sr-g1.ctb +57 -0
  428. data/vendor/liblouis/tables/sr-latletters.cti +45 -0
  429. data/vendor/liblouis/tables/sv-1989.ctb +241 -0
  430. data/vendor/liblouis/tables/sv-1996.ctb +180 -0
  431. data/vendor/liblouis/tables/sv-6common.uti +1199 -0
  432. data/vendor/liblouis/tables/sv-6g0d.utb +508 -0
  433. data/vendor/liblouis/tables/sv-6g0p.utb +61 -0
  434. data/vendor/liblouis/tables/sv-6g1.uti +106 -0
  435. data/vendor/liblouis/tables/sv-6g1d.ctb +57 -0
  436. data/vendor/liblouis/tables/sv-6g2.uti +254 -0
  437. data/vendor/liblouis/tables/sv-6g2d.ctb +57 -0
  438. data/vendor/liblouis/tables/sv-8g0d.utb +495 -0
  439. data/vendor/liblouis/tables/sv-8g0n.utb +1236 -0
  440. data/vendor/liblouis/tables/sv-8g1.uti +199 -0
  441. data/vendor/liblouis/tables/sv-8g1d.ctb +73 -0
  442. data/vendor/liblouis/tables/sv-8g1n.ctb +73 -0
  443. data/vendor/liblouis/tables/sv-8g2.uti +486 -0
  444. data/vendor/liblouis/tables/sv-8g2d.ctb +73 -0
  445. data/vendor/liblouis/tables/sv-8g2n.ctb +73 -0
  446. data/vendor/liblouis/tables/sv-g0.utb +65 -0
  447. data/vendor/liblouis/tables/sv-g1.ctb +57 -0
  448. data/vendor/liblouis/tables/sv-g2.ctb +57 -0
  449. data/vendor/liblouis/tables/sv-phon.uti +241 -0
  450. data/vendor/liblouis/tables/sw-ke-g1-2.ctb +90 -0
  451. data/vendor/liblouis/tables/sw-ke-g1-3.ctb +109 -0
  452. data/vendor/liblouis/tables/sw-ke-g1-4.ctb +107 -0
  453. data/vendor/liblouis/tables/sw-ke-g1-5.ctb +73 -0
  454. data/vendor/liblouis/tables/sw-ke-g1.utb +278 -0
  455. data/vendor/liblouis/tables/sw-ke-g2.ctb +276 -0
  456. data/vendor/liblouis/tables/syc.utb +195 -0
  457. data/vendor/liblouis/tables/ta-ta-g1.ctb +167 -0
  458. data/vendor/liblouis/tables/ta.ctb +24 -0
  459. data/vendor/liblouis/tables/ta.tbl +21 -0
  460. data/vendor/liblouis/tables/tamil.cti +86 -0
  461. data/vendor/liblouis/tables/te-in-g1.utb +27 -0
  462. data/vendor/liblouis/tables/te.tbl +18 -0
  463. data/vendor/liblouis/tables/telugu.cti +239 -0
  464. data/vendor/liblouis/tables/text_nabcc.dis +426 -0
  465. data/vendor/liblouis/tables/th-comp8-backward.utb +226 -0
  466. data/vendor/liblouis/tables/th-g0.utb +177 -0
  467. data/vendor/liblouis/tables/th-g1.utb +89 -0
  468. data/vendor/liblouis/tables/th-g1.uti +315 -0
  469. data/vendor/liblouis/tables/th-g2.ctb +616 -0
  470. data/vendor/liblouis/tables/tr-g1.ctb +254 -0
  471. data/vendor/liblouis/tables/tr-g2.ctb +863 -0
  472. data/vendor/liblouis/tables/tr-g2.tbl +20 -0
  473. data/vendor/liblouis/tables/tr.ctb +324 -0
  474. data/vendor/liblouis/tables/tr.tbl +21 -0
  475. data/vendor/liblouis/tables/tsn-za-g1.ctb +33 -0
  476. data/vendor/liblouis/tables/tsn-za-g2.ctb +33 -0
  477. data/vendor/liblouis/tables/tt.utb +74 -0
  478. data/vendor/liblouis/tables/uga.utb +86 -0
  479. data/vendor/liblouis/tables/uk-comp.utb +53 -0
  480. data/vendor/liblouis/tables/uk-detailed.utb +32 -0
  481. data/vendor/liblouis/tables/uk.utb +101 -0
  482. data/vendor/liblouis/tables/ukchardefs.cti +106 -0
  483. data/vendor/liblouis/tables/ukmaths_single_cell_defs.cti +65 -0
  484. data/vendor/liblouis/tables/ukmaths_unicode_defs.cti +298 -0
  485. data/vendor/liblouis/tables/uni-text.dis +330 -0
  486. data/vendor/liblouis/tables/unicode-braille.utb +291 -0
  487. data/vendor/liblouis/tables/unicode-without-blank.dis +24 -0
  488. data/vendor/liblouis/tables/unicode.dis +278 -0
  489. data/vendor/liblouis/tables/ur-pk-g1.utb +248 -0
  490. data/vendor/liblouis/tables/ur-pk-g2.ctb +641 -0
  491. data/vendor/liblouis/tables/us-table.dis +67 -0
  492. data/vendor/liblouis/tables/uz-g1.utb +117 -0
  493. data/vendor/liblouis/tables/ve-za-g1.utb +69 -0
  494. data/vendor/liblouis/tables/ve-za-g2.ctb +208 -0
  495. data/vendor/liblouis/tables/vi-cb8.utb +49 -0
  496. data/vendor/liblouis/tables/vi-charsdef.uti +36 -0
  497. data/vendor/liblouis/tables/vi-lettersdef.uti +401 -0
  498. data/vendor/liblouis/tables/vi-puncsdef.uti +446 -0
  499. data/vendor/liblouis/tables/vi-saigon-g1.ctb +530 -0
  500. data/vendor/liblouis/tables/vi-vn-g0.utb +135 -0
  501. data/vendor/liblouis/tables/vi-vn-g1.ctb +574 -0
  502. data/vendor/liblouis/tables/vi-vn-g2.ctb +743 -0
  503. data/vendor/liblouis/tables/wiskunde-chardefs.cti +261 -0
  504. data/vendor/liblouis/tables/wordcx.dis +91 -0
  505. data/vendor/liblouis/tables/xh-za-g1.utb +61 -0
  506. data/vendor/liblouis/tables/xh-za-g2.ctb +386 -0
  507. data/vendor/liblouis/tables/yi.utb +236 -0
  508. data/vendor/liblouis/tables/zh-chn.ctb +45011 -0
  509. data/vendor/liblouis/tables/zh-hk.ctb +10461 -0
  510. data/vendor/liblouis/tables/zh-tw.ctb +53810 -0
  511. data/vendor/liblouis/tables/zh_CHN.tbl +23 -0
  512. data/vendor/liblouis/tables/zhcn-cbs.ctb +31523 -0
  513. data/vendor/liblouis/tables/zhcn-g1.ctb +26523 -0
  514. data/vendor/liblouis/tables/zhcn-g2.ctb +26519 -0
  515. data/vendor/liblouis/tables/zu-za-g1.utb +33 -0
  516. data/vendor/liblouis/tables/zu-za-g2.ctb +33 -0
  517. metadata +558 -0
@@ -0,0 +1,448 @@
1
+ /* liblouis Braille Translation and Back-Translation Library
2
+
3
+ Based on the Linux screenreader BRLTTY, copyright (C) 1999-2006 by The
4
+ BRLTTY Team
5
+
6
+ Copyright (C) 2004, 2005, 2006 ViewPlus Technologies, Inc. www.viewplus.com
7
+ Copyright (C) 2004, 2005, 2006 JJB Software, Inc. www.jjb-software.com
8
+ Copyright (C) 2016 Mike Gray, American Printing House for the Blind
9
+ Copyright (C) 2016 Davy Kager, Dedicon
10
+
11
+ This file is part of liblouis.
12
+
13
+ liblouis is free software: you can redistribute it and/or modify it
14
+ under the terms of the GNU Lesser General Public License as published
15
+ by the Free Software Foundation, either version 2.1 of the License, or
16
+ (at your option) any later version.
17
+
18
+ liblouis is distributed in the hope that it will be useful, but
19
+ WITHOUT ANY WARRANTY; without even the implied warranty of
20
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
21
+ Lesser General Public License for more details.
22
+
23
+ You should have received a copy of the GNU Lesser General Public
24
+ License along with liblouis. If not, see <http://www.gnu.org/licenses/>.
25
+ */
26
+
27
+ /**
28
+ * @file
29
+ * @brief Common utility functions
30
+ */
31
+
32
+ #include "config.h"
33
+
34
+ #include <stddef.h>
35
+ #include <stdlib.h>
36
+ #include <stdio.h>
37
+ #include <stdarg.h>
38
+ #include <string.h>
39
+ #include <ctype.h>
40
+ #include <sys/stat.h>
41
+
42
+ #include "internal.h"
43
+
44
+ /* Contributed by Michel Such <michel.such@free.fr> */
45
+ #ifdef _WIN32
46
+
47
+ /* Adapted from BRLTTY code (see sys_progs_wihdows.h) */
48
+
49
+ #include <shlobj.h>
50
+
51
+ static void *
52
+ reallocWrapper(void *address, size_t size) {
53
+ if (!(address = realloc(address, size)) && size) _lou_outOfMemory();
54
+ return address;
55
+ }
56
+
57
+ static char *
58
+ strdupWrapper(const char *string) {
59
+ char *address = strdup(string);
60
+ if (!address) _lou_outOfMemory();
61
+ return address;
62
+ }
63
+
64
+ char *EXPORT_CALL
65
+ lou_getProgramPath(void) {
66
+ char *path = NULL;
67
+ HMODULE handle;
68
+
69
+ if ((handle = GetModuleHandle(NULL))) {
70
+ DWORD size = 0X80;
71
+ char *buffer = NULL;
72
+
73
+ while (1) {
74
+ buffer = reallocWrapper(buffer, size <<= 1);
75
+
76
+ {
77
+ // As the "UNICODE" Windows define may have been set at compilation,
78
+ // This call must be specifically GetModuleFilenameA as further code
79
+ // expects it to be single byte chars.
80
+ DWORD length = GetModuleFileNameA(handle, buffer, size);
81
+
82
+ if (!length) {
83
+ printf("GetModuleFileName\n");
84
+ exit(3);
85
+ }
86
+
87
+ if (length < size) {
88
+ buffer[length] = 0;
89
+ path = strdupWrapper(buffer);
90
+
91
+ while (length > 0)
92
+ if (path[--length] == '\\') break;
93
+
94
+ strncpy(path, path, length + 1);
95
+ path[length + 1] = '\0';
96
+ break;
97
+ }
98
+ }
99
+ }
100
+
101
+ free(buffer);
102
+ } else {
103
+ printf("GetModuleHandle\n");
104
+ exit(3);
105
+ }
106
+
107
+ return path;
108
+ }
109
+ #endif
110
+ /* End of MS contribution */
111
+
112
+ static widechar
113
+ toLowercase(widechar c, const TranslationTableHeader *table) {
114
+ static TranslationTableOffset offset;
115
+ static TranslationTableCharacter *character;
116
+ offset = table->characters[_lou_charHash(c)];
117
+ while (offset) {
118
+ character = (TranslationTableCharacter *)&table->ruleArea[offset];
119
+ if (character->value == c) {
120
+ if (character->mode & CTC_UpperCase) {
121
+ const TranslationTableCharacter *c = character;
122
+ if (c->basechar)
123
+ c = (TranslationTableCharacter *)&table->ruleArea[c->basechar];
124
+ while (1) {
125
+ if ((c->mode & (character->mode & ~CTC_UpperCase)) ==
126
+ (character->mode & ~CTC_UpperCase))
127
+ return c->value;
128
+ if (!c->linked) break;
129
+ c = (TranslationTableCharacter *)&table->ruleArea[c->linked];
130
+ }
131
+ }
132
+ return character->value;
133
+ }
134
+ offset = character->next;
135
+ }
136
+ return c;
137
+ }
138
+
139
+ unsigned long int EXPORT_CALL
140
+ _lou_stringHash(const widechar *c, int lowercase, const TranslationTableHeader *table) {
141
+ if (!lowercase)
142
+ return (((unsigned long int)c[0] << 8) + (unsigned long int)c[1]) % HASHNUM;
143
+ else
144
+ return (((unsigned long int)toLowercase(c[0], table) << 8) +
145
+ (unsigned long int)toLowercase(c[1], table)) %
146
+ HASHNUM;
147
+ }
148
+
149
+ unsigned long int EXPORT_CALL
150
+ _lou_charHash(widechar c) {
151
+ return (unsigned long int)c % HASHNUM;
152
+ }
153
+
154
+ const char *EXPORT_CALL
155
+ _lou_showString(widechar const *chars, int length, int forceHex) {
156
+ /* Translate a string of characters to the encoding used in character
157
+ * operands */
158
+ static char scratchBuf[MAXSTRING];
159
+ int bufPos = 0;
160
+ scratchBuf[bufPos++] = '\'';
161
+
162
+ for (int charPos = 0; (charPos < length) && (bufPos < (MAXSTRING - 2));
163
+ charPos += 1) {
164
+ widechar c = chars[charPos];
165
+
166
+ if (!forceHex && isASCII(c)) {
167
+ scratchBuf[bufPos++] = (char)c;
168
+ } else {
169
+ char hexbuf[20];
170
+ int hexLength;
171
+ char escapeLetter;
172
+
173
+ int leadingZeros;
174
+ int hexPos;
175
+ hexLength = sprintf(hexbuf, "%x", c);
176
+ switch (hexLength) {
177
+ case 1:
178
+ case 2:
179
+ case 3:
180
+ case 4:
181
+ escapeLetter = 'x';
182
+ leadingZeros = 4 - hexLength;
183
+ break;
184
+ case 5:
185
+ escapeLetter = 'y';
186
+ leadingZeros = 0;
187
+ break;
188
+ case 6:
189
+ case 7:
190
+ case 8:
191
+ escapeLetter = 'z';
192
+ leadingZeros = 8 - hexLength;
193
+ break;
194
+ default:
195
+ escapeLetter = '?';
196
+ leadingZeros = 0;
197
+ break;
198
+ }
199
+ if ((bufPos + leadingZeros + hexLength + 4) >= (MAXSTRING - 2)) break;
200
+ scratchBuf[bufPos++] = '\\';
201
+ scratchBuf[bufPos++] = escapeLetter;
202
+ for (hexPos = 0; hexPos < leadingZeros; hexPos++) scratchBuf[bufPos++] = '0';
203
+ for (hexPos = 0; hexPos < hexLength; hexPos++)
204
+ scratchBuf[bufPos++] = hexbuf[hexPos];
205
+ }
206
+ }
207
+ scratchBuf[bufPos++] = '\'';
208
+ scratchBuf[bufPos] = 0;
209
+ return scratchBuf;
210
+ }
211
+
212
+ /**
213
+ * Mapping between braille dot and textual representation as used in dots operands
214
+ */
215
+ static const intCharTupple dotMapping[] = {
216
+ { LOU_DOT_1, '1' },
217
+ { LOU_DOT_2, '2' },
218
+ { LOU_DOT_3, '3' },
219
+ { LOU_DOT_4, '4' },
220
+ { LOU_DOT_5, '5' },
221
+ { LOU_DOT_6, '6' },
222
+ { LOU_DOT_7, '7' },
223
+ { LOU_DOT_8, '8' },
224
+ { LOU_DOT_9, '9' },
225
+ { LOU_DOT_10, 'A' },
226
+ { LOU_DOT_11, 'B' },
227
+ { LOU_DOT_12, 'C' },
228
+ { LOU_DOT_13, 'D' },
229
+ { LOU_DOT_14, 'E' },
230
+ { LOU_DOT_15, 'F' },
231
+ { 0, 0 },
232
+ };
233
+
234
+ /**
235
+ * Print out dot numbers
236
+ *
237
+ * @return a string containing the dot numbers. The longest possible
238
+ * output is "\123456789ABCDEF0/"
239
+ */
240
+ const char *EXPORT_CALL
241
+ _lou_unknownDots(widechar dots) {
242
+ static char buffer[20];
243
+
244
+ int k = 0;
245
+ buffer[k++] = '\\';
246
+
247
+ for (int mappingPos = 0; dotMapping[mappingPos].key; mappingPos++) {
248
+ if (dots & dotMapping[mappingPos].key) buffer[k++] = dotMapping[mappingPos].value;
249
+ }
250
+
251
+ if (k == 1) buffer[k++] = '0';
252
+ buffer[k++] = '/';
253
+ buffer[k] = 0;
254
+ return buffer;
255
+ }
256
+
257
+ /**
258
+ * Translate a sequence of dots to the encoding used in dots operands.
259
+ */
260
+ const char *EXPORT_CALL
261
+ _lou_showDots(widechar const *dots, int length) {
262
+ int bufPos = 0;
263
+ static char scratchBuf[MAXSTRING];
264
+ for (int dotsPos = 0; dotsPos < length && bufPos < (MAXSTRING - 1); dotsPos++) {
265
+ for (int mappingPos = 0; dotMapping[mappingPos].key; mappingPos++) {
266
+ if ((dots[dotsPos] & dotMapping[mappingPos].key) &&
267
+ (bufPos < (MAXSTRING - 1)))
268
+ scratchBuf[bufPos++] = dotMapping[mappingPos].value;
269
+ }
270
+ if ((dots[dotsPos] == LOU_DOTS) && (bufPos < (MAXSTRING - 1)))
271
+ scratchBuf[bufPos++] = '0';
272
+ if ((dotsPos != length - 1) && (bufPos < (MAXSTRING - 1)))
273
+ scratchBuf[bufPos++] = '-';
274
+ }
275
+ scratchBuf[bufPos] = 0;
276
+ return scratchBuf;
277
+ }
278
+
279
+ /**
280
+ * Mapping between character attribute and textual representation
281
+ */
282
+ static const intCharTupple attributeMapping[] = {
283
+ { CTC_Space, 's' },
284
+ { CTC_Letter, 'l' },
285
+ { CTC_Digit, 'd' },
286
+ { CTC_Punctuation, 'p' },
287
+ { CTC_UpperCase, 'U' },
288
+ { CTC_LowerCase, 'u' },
289
+ { CTC_Math, 'm' },
290
+ { CTC_Sign, 'S' },
291
+ { CTC_LitDigit, 'D' },
292
+ { CTC_UserDefined9, 'w' },
293
+ { CTC_UserDefined10, 'x' },
294
+ { CTC_UserDefined11, 'y' },
295
+ { CTC_UserDefined12, 'z' },
296
+ { 0, 0 },
297
+ };
298
+
299
+ /**
300
+ * Show attributes using the letters used after the $ in multipass
301
+ * opcodes.
302
+ */
303
+ char *EXPORT_CALL
304
+ _lou_showAttributes(TranslationTableCharacterAttributes a) {
305
+ int bufPos = 0;
306
+ static char scratchBuf[MAXSTRING];
307
+ for (int mappingPos = 0; attributeMapping[mappingPos].key; mappingPos++) {
308
+ if ((a & attributeMapping[mappingPos].key) && bufPos < (MAXSTRING - 1))
309
+ scratchBuf[bufPos++] = attributeMapping[mappingPos].value;
310
+ }
311
+ scratchBuf[bufPos] = 0;
312
+ return scratchBuf;
313
+ }
314
+
315
+ void EXPORT_CALL
316
+ _lou_outOfMemory(void) {
317
+ _lou_logMessage(LOU_LOG_FATAL, "liblouis: Insufficient memory\n");
318
+ exit(3);
319
+ }
320
+
321
+ #ifdef DEBUG
322
+ void EXPORT_CALL
323
+ _lou_debugHook(void) {
324
+ char *hook = "debug hook";
325
+ printf("%s\n", hook);
326
+ }
327
+ #endif
328
+
329
+ static const int validTranslationModes[] = { noContractions, compbrlAtCursor, dotsIO,
330
+ compbrlLeftCursor, ucBrl, noUndefined, partialTrans };
331
+
332
+ int EXPORT_CALL
333
+ _lou_isValidMode(int mode) {
334
+ // mask out all valid mode bits. If you end up with some bits set
335
+ // then the input isn't valid. See
336
+ // https://en.wikipedia.org/wiki/Material_nonimplication
337
+ for (size_t i = 0;
338
+ i < (sizeof(validTranslationModes) / sizeof(*validTranslationModes)); i++)
339
+ mode &= ~validTranslationModes[i];
340
+ return !mode;
341
+ }
342
+
343
+ /* Map char to dots according to North American Braille Computer Code (NABCC) */
344
+ widechar EXPORT_CALL
345
+ _lou_charToFallbackDots(widechar c) {
346
+ static const unsigned char charToDots[] = {
347
+ /* ASCII characters 0X00-0X1F - control characters.
348
+ * These won't be referenced so we have room for data.
349
+ * These groups must be in descending order.
350
+ * Each group contains the following four bytes:
351
+ * 1) The first character to which this block applies.
352
+ * 2) The bits to remove from the character.
353
+ * 3) The bits to add to the character.
354
+ * 4) The dots to add to the braille pattern.
355
+ */
356
+ // clang-format off
357
+ 0X7F, 0X20, 0X00, LOU_DOT_7,
358
+ 0X60, 0X20, 0X00, 0,
359
+ 0X5F, 0X00, 0X00, 0,
360
+ 0X40, 0X00, 0X00, LOU_DOT_7,
361
+ 0X20, 0X00, 0X00, 0,
362
+ 0X00, 0X00, 0X40, LOU_DOT_7 | LOU_DOT_8,
363
+
364
+ // ASCII characters 0X20-0X3F - digits and common symbols.
365
+ [' '] = 0,
366
+ ['!'] = LOU_DOT_2 | LOU_DOT_3 | LOU_DOT_4 | LOU_DOT_6,
367
+ ['"'] = LOU_DOT_5,
368
+ ['#'] = LOU_DOT_3 | LOU_DOT_4 | LOU_DOT_5 | LOU_DOT_6,
369
+ ['$'] = LOU_DOT_1 | LOU_DOT_2 | LOU_DOT_4 | LOU_DOT_6,
370
+ ['%'] = LOU_DOT_1 | LOU_DOT_4 | LOU_DOT_6,
371
+ ['&'] = LOU_DOT_1 | LOU_DOT_2 | LOU_DOT_3 | LOU_DOT_4 | LOU_DOT_6,
372
+ ['\''] = LOU_DOT_3,
373
+ ['('] = LOU_DOT_1 | LOU_DOT_2 | LOU_DOT_3 | LOU_DOT_5 | LOU_DOT_6,
374
+ [')'] = LOU_DOT_2 | LOU_DOT_3 | LOU_DOT_4 | LOU_DOT_5 | LOU_DOT_6,
375
+ ['*'] = LOU_DOT_1 | LOU_DOT_6,
376
+ ['+'] = LOU_DOT_3 | LOU_DOT_4 | LOU_DOT_6,
377
+ [','] = LOU_DOT_6,
378
+ ['-'] = LOU_DOT_3 | LOU_DOT_6,
379
+ ['.'] = LOU_DOT_4 | LOU_DOT_6,
380
+ ['/'] = LOU_DOT_3 | LOU_DOT_4,
381
+ ['0'] = LOU_DOT_3 | LOU_DOT_5 | LOU_DOT_6,
382
+ ['1'] = LOU_DOT_2,
383
+ ['2'] = LOU_DOT_2 | LOU_DOT_3,
384
+ ['3'] = LOU_DOT_2 | LOU_DOT_5,
385
+ ['4'] = LOU_DOT_2 | LOU_DOT_5 | LOU_DOT_6,
386
+ ['5'] = LOU_DOT_2 | LOU_DOT_6,
387
+ ['6'] = LOU_DOT_2 | LOU_DOT_3 | LOU_DOT_5,
388
+ ['7'] = LOU_DOT_2 | LOU_DOT_3 | LOU_DOT_5 | LOU_DOT_6,
389
+ ['8'] = LOU_DOT_2 | LOU_DOT_3 | LOU_DOT_6,
390
+ ['9'] = LOU_DOT_3 | LOU_DOT_5,
391
+ [':'] = LOU_DOT_1 | LOU_DOT_5 | LOU_DOT_6,
392
+ [';'] = LOU_DOT_5 | LOU_DOT_6,
393
+ ['<'] = LOU_DOT_1 | LOU_DOT_2 | LOU_DOT_6,
394
+ ['='] = LOU_DOT_1 | LOU_DOT_2 | LOU_DOT_3 | LOU_DOT_4 | LOU_DOT_5 | LOU_DOT_6,
395
+ ['>'] = LOU_DOT_3 | LOU_DOT_4 | LOU_DOT_5,
396
+ ['?'] = LOU_DOT_1 | LOU_DOT_4 | LOU_DOT_5 | LOU_DOT_6,
397
+
398
+ // ASCII characters 0X40-0X5F - letters and other symbols.
399
+ ['@'] = LOU_DOT_4,
400
+ ['A'] = LOU_DOT_1,
401
+ ['B'] = LOU_DOT_1 | LOU_DOT_2,
402
+ ['C'] = LOU_DOT_1 | LOU_DOT_4,
403
+ ['D'] = LOU_DOT_1 | LOU_DOT_4 | LOU_DOT_5,
404
+ ['E'] = LOU_DOT_1 | LOU_DOT_5,
405
+ ['F'] = LOU_DOT_1 | LOU_DOT_2 | LOU_DOT_4,
406
+ ['G'] = LOU_DOT_1 | LOU_DOT_2 | LOU_DOT_4 | LOU_DOT_5,
407
+ ['H'] = LOU_DOT_1 | LOU_DOT_2 | LOU_DOT_5,
408
+ ['I'] = LOU_DOT_2 | LOU_DOT_4,
409
+ ['J'] = LOU_DOT_2 | LOU_DOT_4 | LOU_DOT_5,
410
+ ['K'] = LOU_DOT_1 | LOU_DOT_3,
411
+ ['L'] = LOU_DOT_1 | LOU_DOT_2 | LOU_DOT_3,
412
+ ['M'] = LOU_DOT_1 | LOU_DOT_3 | LOU_DOT_4,
413
+ ['N'] = LOU_DOT_1 | LOU_DOT_3 | LOU_DOT_4 | LOU_DOT_5,
414
+ ['O'] = LOU_DOT_1 | LOU_DOT_3 | LOU_DOT_5,
415
+ ['P'] = LOU_DOT_1 | LOU_DOT_2 | LOU_DOT_3 | LOU_DOT_4,
416
+ ['Q'] = LOU_DOT_1 | LOU_DOT_2 | LOU_DOT_3 | LOU_DOT_4 | LOU_DOT_5,
417
+ ['R'] = LOU_DOT_1 | LOU_DOT_2 | LOU_DOT_3 | LOU_DOT_5,
418
+ ['S'] = LOU_DOT_2 | LOU_DOT_3 | LOU_DOT_4,
419
+ ['T'] = LOU_DOT_2 | LOU_DOT_3 | LOU_DOT_4 | LOU_DOT_5,
420
+ ['U'] = LOU_DOT_1 | LOU_DOT_3 | LOU_DOT_6,
421
+ ['V'] = LOU_DOT_1 | LOU_DOT_2 | LOU_DOT_3 | LOU_DOT_6,
422
+ ['W'] = LOU_DOT_2 | LOU_DOT_4 | LOU_DOT_5 | LOU_DOT_6,
423
+ ['X'] = LOU_DOT_1 | LOU_DOT_3 | LOU_DOT_4 | LOU_DOT_6,
424
+ ['Y'] = LOU_DOT_1 | LOU_DOT_3 | LOU_DOT_4 | LOU_DOT_5 | LOU_DOT_6,
425
+ ['Z'] = LOU_DOT_1 | LOU_DOT_3 | LOU_DOT_5 | LOU_DOT_6,
426
+ ['['] = LOU_DOT_2 | LOU_DOT_4 | LOU_DOT_6,
427
+ ['\\'] = LOU_DOT_1 | LOU_DOT_2 | LOU_DOT_5 | LOU_DOT_6,
428
+ [']'] = LOU_DOT_1 | LOU_DOT_2 | LOU_DOT_4 | LOU_DOT_5 | LOU_DOT_6,
429
+ ['^'] = LOU_DOT_4 | LOU_DOT_5,
430
+ ['_'] = LOU_DOT_4 | LOU_DOT_5 | LOU_DOT_6
431
+ // clang-format on
432
+ };
433
+
434
+ if (c >= 0X80) c = '?';
435
+ widechar dots = LOU_DOTS;
436
+
437
+ {
438
+ const unsigned char *p = charToDots;
439
+ while (*p > c) p += 4;
440
+
441
+ c &= ~*++p;
442
+ c |= *++p;
443
+ dots |= *++p;
444
+ }
445
+
446
+ dots |= charToDots[c];
447
+ return dots;
448
+ }
@@ -0,0 +1,248 @@
1
+ # liblouis: Computer Spanish 8 dots Braille table
2
+ #
3
+ # -----------
4
+ #-index-name: Spanish, computer
5
+ #-display-name: Spanish computer braille
6
+ #
7
+ #+language:es
8
+ #+type:computer
9
+ # Marked as "direction:both" by Bue Vester-Andersen
10
+ # as it is a computer Braille table.
11
+ #+direction:both
12
+ # -----------
13
+ #
14
+ # Copyright (C) 2012 by José Enrique Fernández del Campo and Juan Carlos Buño Suárez <quetzatl@eresmas.net>
15
+ #
16
+ # This file is part of liblouis.
17
+ #
18
+ # liblouis is free software: you can redistribute it and/or modify it
19
+ # under the terms of the GNU Lesser General Public License as
20
+ # published by the Free Software Foundation, either version 3 of the
21
+ # License, or (at your option) any later version.
22
+ #
23
+ # liblouis is distributed in the hope that it will be useful, but
24
+ # WITHOUT ANY WARRANTY; without even the implied warranty of
25
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
26
+ # Lesser General Public License for more details.
27
+ #
28
+ # You should have received a copy of the GNU Lesser General Public
29
+ # License along with liblouis. If not, see
30
+ # <http://www.gnu.org/licenses/>.
31
+ #
32
+ # -----------------------------------------------------------------------------
33
+
34
+ # Uncontracted Computer Spanish Table
35
+ # Autor José Enrique Fernández del Campo <jefdelcampo@gmail.com> and Juan Carlos Buño Suárez <quetzatl@eresmas.net>
36
+ # -----------------------------------------------------------------------------
37
+
38
+
39
+ space \s 0 # blank 32
40
+ space \t 9 # tab 9
41
+ space \x001B 1b # escape
42
+ space \x000A 0 # lf
43
+ space \x000D 0 # cr
44
+ space \x00A0 0 # Espacio de no separación
45
+
46
+ # all except 0 are the same, so define 0 here to take higher presidence
47
+ # Also define ó (lowercase o acute) not to clash with the definition of 0 in original include.
48
+ digit 0 34678 cero
49
+ uppercase \x00d3 3467 o con acento
50
+ lowercase \x00f3 346 o con acento
51
+
52
+ include digits6DotsPlusDot6.uti
53
+ include latinLetterDef8Dots.uti
54
+
55
+ lowercase \x00e7 123468 c cedilla
56
+ lowercase \x00e1 12356 a con acento
57
+ lowercase \x00e9 2346 e con acento
58
+ lowercase \x00ed 34 i con acento
59
+ lowercase \x00fa 23456 u con acento
60
+ lowercase \x00e0 123568 a grave
61
+ lowercase \x00e8 23468 e grave
62
+ lowercase \x00ec 348 i grave
63
+ lowercase \x00f2 3468 o grave
64
+ lowercase \x00f9 234568 u grave
65
+ lowercase \x00e2 18 a con circunflejo
66
+ lowercase \x00ea 158 e con circunflejo
67
+ lowercase \x00ee 248 i con circunflejo
68
+ lowercase \x00f4 1358 o con circunflejo
69
+ lowercase \x00fb 1368 u con circunflejo
70
+ lowercase \x00e4 3458 a con diéresis
71
+ lowercase \x00eb 12468 e con diéresis
72
+ lowercase \x00ef 258 i con diéresis
73
+ lowercase \x00f6 2468 o con diéresis
74
+ lowercase \x00fc 12568 u con diéresis
75
+ lowercase \x00fd 2348 ye con acento agudo
76
+ lowercase \x00FF 67 ye con diéresis
77
+ lowercase \x00e6 1348 ae
78
+ lowercase \x0153 1238 oe
79
+ lowercase \x009C 1238 oe
80
+ lowercase \x00E3 168 a con tilde
81
+ lowercase \x00F5 4567 o con tilde
82
+ lowercase \x00F1 124568 letra eñe
83
+ uppercase \x00c7 1234678 c cedilla
84
+ uppercase \x00c1 123567 a con acento
85
+ uppercase \x00c9 23467 e con acento
86
+ uppercase \x00cd 347 i con acento
87
+ uppercase \x00da 234567 u con acento
88
+ uppercase \x00c0 1235678 a grave
89
+ uppercase \x00c8 234678 e grave
90
+ uppercase \x00cc 345 i grave
91
+ uppercase \x00d2 2458 o grave
92
+ uppercase \x00d9 2345678 u grave
93
+ uppercase \x00c2 178 a con circunflejo
94
+ uppercase \x00ca 1578 e con circunflejo
95
+ uppercase \x00ce 2478 i con circunflejo
96
+ uppercase \x00d4 13578 o con circunflejo
97
+ uppercase \x00db 13678 u con circunflejo
98
+ uppercase \x00c4 34578 a con diéresis
99
+ uppercase \x00cb 124678 e con diéresis
100
+ uppercase \x00cf 1245678 i con diéresis
101
+ uppercase \x00d6 24678 o con diéresis
102
+ uppercase \x00dc 125678 u con diéresis
103
+ uppercase \x00dd 1567 ye con acento agudo
104
+ uppercase \x009F 367 ye con diéresis
105
+ uppercase \x00c6 38 ae
106
+ uppercase \x0152 1468 oe
107
+ uppercase \x008C 1468 oe
108
+ uppercase \x00C3 3567 a con tilde
109
+ uppercase \x00D5 12458 o con tilde
110
+ uppercase \x00D1 124567 letra eñe
111
+
112
+ punctuation , 2 coma
113
+ punctuation ; 23 punto y coma
114
+ punctuation : 25 dos puntos
115
+ punctuation - 36 guión
116
+ punctuation . 3 punto
117
+ punctuation ? 26 cerrar interrogación
118
+ punctuation ! 2357 cerrar admiración
119
+ punctuation \x0022 56 comillas
120
+ punctuation \x201c 14568 abrir comillas
121
+ punctuation \x201d 12348 cerrar comillas
122
+ punctuation ( 1268 abre paréntesis
123
+ punctuation ) 3457 cierra paréntesis
124
+ punctuation ' 4 apóstrofo
125
+ punctuation \x00ab 238 comillas angulares izquierda
126
+ punctuation \x00bb 567 comillas angulares derecha
127
+ punctuation [ 2367 abre corchetes
128
+ punctuation ] 3568 cierra corchetes
129
+ punctuation { 46 abre llave
130
+ punctuation } 35 cierra llave
131
+
132
+ sign * 256 asterisco
133
+ sign \\ 123456 barra invertida
134
+ sign @ 5 arroba
135
+ sign % 456 por ciento
136
+ sign _ 6 subrayado
137
+ sign # 3456 signo de número
138
+ sign \x0060 58 acento grave
139
+ sign ^ 45 circunflejo
140
+ sign \x007E 57 #126 ~ tilde
141
+ sign \x007C 4568 # barra vertical
142
+ sign \x007F 7 # borrar
143
+ sign \x00a1 23578 # abrir admiración
144
+ sign \x00A6 478 # barra vertical cortada
145
+ sign \x00A7 167 # sección
146
+ sign \x00A8 268 # diéresis
147
+ sign \x00A9 23567 # copyright
148
+ sign \x00AC 257 # guión opcional
149
+ sign \x20AC 12358 # euros
150
+ sign \x00AD 2358 # soft hyphen
151
+ sign \x00AE 2368 # registrado
152
+ sign \x00AF 24568 # macron
153
+ sign \x00B1 12467 # más-menos
154
+ sign \x00B5 13468 # my
155
+ sign \x00B6 14567 # párrafo
156
+ sign \x00B7 14678 # punto centrado
157
+ sign \x00B9 237 # Super uno
158
+ sign \x00BA 5678 # ordinal masculino
159
+ sign \x00AA 23568 # ordinal femenino
160
+ sign \x00BF 267 # abrir interrogación
161
+ sign \x00C5 12368 #*a mayúscula con círculo superescrito
162
+
163
+ sign \x00D0 13458 # letra eth mayúscula
164
+ sign \x00D7 1678 # multiplicado por
165
+ sign \x00D8 34567 # Alfa
166
+ sign \x00DE 123458 # Thorn
167
+ sign \x00DF 128 # Beta
168
+ sign \x00E5 15678 # a con círculo superescrito
169
+ sign \x00F0 235678 # letra eth
170
+ sign \x00F7 2578 # dividido por
171
+ sign \x00F8 457 # latin small letter o with stroke
172
+ sign \x00FE 1568 # thorn
173
+ sign \x00A8 268 diéresis
174
+
175
+ math + 235 más
176
+ math = 2356 igual
177
+ math \x00d7 1678 multiplicado por
178
+ math < 236 menor que
179
+ math > 356 mayor que
180
+ math / 3478 barra oblicua
181
+ math \x00F7 2578 dividido por
182
+
183
+ sign \x00a9 23567 copyright
184
+ sign \x00b0 8 grado
185
+ sign & 12346 ampersand
186
+ sign \x00a2 12678 centavo
187
+ sign \x00a4 2567
188
+ sign \x00a3 2378 libra
189
+ sign \x00a7 167 sección
190
+ sign \x0024 123467 dólar
191
+ sign \x00a5 145678 yen
192
+ sign \x00b9 237 super 1
193
+ sign \x00b2 47 al cuadrado
194
+ sign \x00b3 568 al cubo
195
+ sign \x00bc 1467 un cuarto
196
+ sign \x00bd 468 un medio
197
+ sign \x00be 48 tres cuartos
198
+
199
+ sign \x0081 358 sin nombre
200
+ sign \x0082 37 por
201
+ sign \x201a 37 por
202
+ sign \x0083 1248 signo
203
+ sign \x0192 1248 signo
204
+ sign \x0084 78 signo
205
+ sign \x201e 78 signo
206
+ sign \x0085 1267 elipsis
207
+ sign \x2026 1267 elipsis
208
+ sign \x0086 28 sin nombre
209
+ sign \x2020 28 sin nombre
210
+ sign \x0087 23458 sin nombre
211
+ sign \x2021 23458 sin nombre
212
+ sign \x0088 458 sin nombre
213
+ sign \x02c6 23458 sin nombre
214
+ sign \x0089 45678 sin nombre
215
+ sign \x2030 45678 sin nombre
216
+ sign \x008a 1234568 sh mayúscula
217
+ sign \x0160 1234568 sh mayúscula
218
+ sign \x008b 1258
219
+ sign \x2039 1258
220
+ sign \x008d 357 sin nombre
221
+ sign \x008e 148 sin nombre
222
+ sign \x017d 148 sin nombre
223
+ sign \x008f 58
224
+ sign \x0090 68 sin nombre
225
+ sign \x2018 4 apóstrofo
226
+ sign \x2019 4 apóstrofo
227
+ sign \x0095 1458 signo
228
+ sign \x2022 1458 signo
229
+ sign \x0096 368 guión
230
+ sign \x2013 368 guión
231
+ sign \x0097 3678 guión
232
+ sign \x2014 3678 guión
233
+ sign \x0098 134568 tilde
234
+ sign \x02dc 134568 tilde
235
+ sign \x0099 2467 marca registrada
236
+ sign \x2122 2467 marca registrada
237
+ sign \x009a 34568 signo
238
+ sign \x203a 34568 signo
239
+ sign \x0161 12567 sh
240
+ sign \x009d 25678
241
+ sign \x009e 2568
242
+ sign \x017e 2568
243
+ sign \x009f 367
244
+ sign \x0178 367
245
+ sign \x00b4 467 acento agudo
246
+ sign \x00B8 135678 z con caron
247
+
248
+ noback sign \x25CF 256 black circle