summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex.lua
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/lualatex/arabluatex/arabluatex.lua')
-rw-r--r--Master/texmf-dist/tex/lualatex/arabluatex/arabluatex.lua37
1 files changed, 37 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex.lua b/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex.lua
index 91932b78213..3b76376b80d 100644
--- a/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex.lua
+++ b/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex.lua
@@ -494,6 +494,41 @@ 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,#hamzatrloc do
+ inside = string.gsub(inside, hamzatrloc[i].a, hamzatrloc[i].b)
+ end
+ for i = 1,#tanwintrloc do
+ inside = string.gsub(inside, tanwintrloc[i].a, tanwintrloc[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,#longvtrloc do
+ inside = string.gsub(inside, longvtrloc[i].a, longvtrloc[i].b)
+ end
+ for i = 1,#shortvtrloc do
+ inside = string.gsub(inside, shortvtrloc[i].a, shortvtrloc[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 +614,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