diff options
Diffstat (limited to 'arabluatex.lua')
-rw-r--r-- | arabluatex.lua | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/arabluatex.lua b/arabluatex.lua index f0cfa78..b716bea 100644 --- a/arabluatex.lua +++ b/arabluatex.lua | |||
@@ -25,6 +25,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA | |||
25 | require("arabluatex_voc") | 25 | require("arabluatex_voc") |
26 | require("arabluatex_fullvoc") | 26 | require("arabluatex_fullvoc") |
27 | require("arabluatex_novoc") | 27 | require("arabluatex_novoc") |
28 | require("arabluatex_trans") | ||
28 | 29 | ||
29 | local function protectarb(str) | 30 | local function protectarb(str) |
30 | str = string.gsub(str, "(\\arb.?)(%[.-%])(%b{})", "\\@arb%2%3") | 31 | str = string.gsub(str, "(\\arb.?)(%[.-%])(%b{})", "\\@arb%2%3") |
@@ -206,6 +207,35 @@ local function novoc(str) | |||
206 | return str | 207 | return str |
207 | end | 208 | end |
208 | 209 | ||
210 | local function transdmg(str) | ||
211 | str = string.gsub(str, "\\arb(%b{})", function(inside) | ||
212 | inside = string.sub(inside, 2, -2) | ||
213 | for i = 1,#hamzatrdmg do | ||
214 | inside = string.gsub(inside, hamzatrdmg[i].a, hamzatrdmg[i].b) | ||
215 | end | ||
216 | for i = 1,#tanwintrdmg do | ||
217 | inside = string.gsub(inside, tanwintrdmg[i].a, tanwintrdmg[i].b) | ||
218 | end | ||
219 | for i = 1,#trigraphstrdmg do | ||
220 | inside = string.gsub(inside, trigraphstrdmg[i].a, trigraphstrdmg[i].b) | ||
221 | end | ||
222 | for i = 1,#digraphstrdmg do | ||
223 | inside = string.gsub(inside, digraphstrdmg[i].a, digraphstrdmg[i].b) | ||
224 | end | ||
225 | for i = 1,#singletrdmg do | ||
226 | inside = string.gsub(inside, singletrdmg[i].a, singletrdmg[i].b) | ||
227 | end | ||
228 | for i = 1,#longvtrdmg do | ||
229 | inside = string.gsub(inside, longvtrdmg[i].a, longvtrdmg[i].b) | ||
230 | end | ||
231 | for i = 1,#shortvtrdmg do | ||
232 | inside = string.gsub(inside, shortvtrdmg[i].a, shortvtrdmg[i].b) | ||
233 | end | ||
234 | return string.format("\\txtrans{%s}", inside) | ||
235 | end) | ||
236 | return str | ||
237 | end | ||
238 | |||
209 | function processvoc(str) | 239 | function processvoc(str) |
210 | str = "\\arb{".. str.."}" | 240 | str = "\\arb{".. str.."}" |
211 | str = protectarb(str) | 241 | str = protectarb(str) |
@@ -236,6 +266,18 @@ function processnovoc(str) | |||
236 | return str | 266 | return str |
237 | end | 267 | end |
238 | 268 | ||
269 | function processtrans(str, mode) | ||
270 | str = "\\arb{".. str.."}" | ||
271 | str = protectarb(str) | ||
272 | str = breakcmd(str) | ||
273 | str = holdcmd(str) | ||
274 | if mode == "dmg" then | ||
275 | str = transdmg(str) | ||
276 | else end | ||
277 | str = unprotectarb(str) | ||
278 | return str | ||
279 | end | ||
280 | |||
239 | --print(processvoc("'at_A .sadIquN 'il_A ju.hA ya.tlubu min-hu .himAra-hu li-yarkiba-hu fI safraTiN qa.sIraTiN wa-qAla la-hu sawfa 'u`Idu-hu 'ilay-ka fI 'l-masA'i wa-'adfa`u la-ka 'ujraTaN 'at_A .sadIquN 'il_A ju.hA ya.tlubu min-hu .himAra-hu li-yarkiba-hu fI safraTiN qa.sIraTiN wa-qAla la-hu sawfa 'u`Idu-hu 'ilay-ka fI 'l-masA'i wa-'adfa`u la-ka 'ujraTaN")) | 281 | --print(processvoc("'at_A .sadIquN 'il_A ju.hA ya.tlubu min-hu .himAra-hu li-yarkiba-hu fI safraTiN qa.sIraTiN wa-qAla la-hu sawfa 'u`Idu-hu 'ilay-ka fI 'l-masA'i wa-'adfa`u la-ka 'ujraTaN 'at_A .sadIquN 'il_A ju.hA ya.tlubu min-hu .himAra-hu li-yarkiba-hu fI safraTiN qa.sIraTiN wa-qAla la-hu sawfa 'u`Idu-hu 'ilay-ka fI 'l-masA'i wa-'adfa`u la-ka 'ujraTaN")) |
240 | --print(arbnum("bop 0123456789")) | 282 | --print(arbnum("bop 0123456789")) |
241 | --print(processvoc("daxala \\arb[novoc]{mubtasimaN}")) | 283 | --print(processvoc("daxala \\arb[novoc]{mubtasimaN}")) |