From 885a3e5523dc7d33ad45a3254b2d0be2af8f40ad Mon Sep 17 00:00:00 2001 From: Robert Alessi Date: Wed, 29 Mar 2017 21:34:39 +0200 Subject: arabica: started implementing this standard: added new functions; now working on tables --- arabluatex.lua | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) (limited to 'arabluatex.lua') diff --git a/arabluatex.lua b/arabluatex.lua index 91932b7..722084c 100644 --- a/arabluatex.lua +++ b/arabluatex.lua @@ -494,6 +494,44 @@ local function transloc(str) return str end +local function transarabica(str) + str = string.gsub(str, "\\arb(%b{})", function(inside) + inside = string.sub(inside, 2, -2) + for i = 1,#hamzatrarabica do + inside = string.gsub(inside, hamzatrarabica[i].a, hamzatrarabica[i].b) + end + for i = 1,#tanwintrarabica do + inside = string.gsub(inside, tanwintrarabica[i].a, tanwintrarabica[i].b) + end + for i = 1,#trigraphstrarabica do + inside = string.gsub(inside, trigraphstrarabica[i].a, trigraphstrarabica[i].b) + end + for i = 1,#digraphstrarabica do + inside = string.gsub(inside, digraphstrarabica[i].a, digraphstrarabica[i].b) + end + for i = 1,#singletrarabica do + inside = string.gsub(inside, singletrarabica[i].a, singletrarabica[i].b) + end + for i = 1,#longvtrarabica do + inside = string.gsub(inside, longvtrarabica[i].a, longvtrarabica[i].b) + end + for i = 1,#shortvtrarabica do + inside = string.gsub(inside, shortvtrarabica[i].a, shortvtrarabica[i].b) + end + for i = 1,#finaltrarabica do + inside = string.gsub(inside, finaltrarabica[i].a, finaltrarabica[i].b) + end + for i = 1,#punctuationtr do + inside = string.gsub(inside, punctuationtr[i].a, punctuationtr[i].b) + end + for i = 1,#nulltr do + inside = string.gsub(inside, nulltr[i].a, nulltr[i].b) + end + return string.format("\\txtrans{%s}", inside) + end) +return str +end + local function processbuckw(str) str = string.gsub(str, "\\arb(%b{})", function(inside) inside = string.sub(inside, 2, -2) @@ -579,6 +617,8 @@ function processtrans(str, mode, rules, scheme) str = transdmg(str, rules) elseif mode == "loc" then str = transloc(str) + elseif mode == "arabica" then + str = transarabica(str) end str = unprotectarb(str) return str -- cgit v1.2.3