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.lua108
1 files changed, 51 insertions, 57 deletions
diff --git a/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex.lua b/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex.lua
index 38fe87b31dd..07968c07180 100644
--- a/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex.lua
+++ b/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex.lua
@@ -146,18 +146,29 @@ local function takeoutcapetc(str)
return str
end
-local function voc(str)
+local function voc(str, rules)
str = string.gsub(str, "\\arb(%b{})", function(inside)
inside = string.sub(inside, 2, -2)
for i = 1,#hamza do
inside = string.gsub(inside, hamza[i].a, hamza[i].b)
end
- for i = 1,#tanwin do
- inside = string.gsub(inside, tanwin[i].a, tanwin[i].b)
+ if rules == "idgham" then
+ for i = 1,#tanwin do
+ inside = string.gsub(inside, tanwin[i].a, tanwin[i].b)
+ end
+ else
+ for i = 1,#tanwineasy do
+ inside = string.gsub(inside, tanwineasy[i].a, tanwineasy[i].b)
+ end
end
for i = 1,#trigraphs do
inside = string.gsub(inside, trigraphs[i].a, trigraphs[i].b)
end
+ if rules == "idgham" then
+ for i = 1,#idgham do
+ inside = string.gsub(inside, idgham[i].a, idgham[i].b)
+ end
+ end
for i = 1,#digraphs do
inside = string.gsub(inside, digraphs[i].a, digraphs[i].b)
end
@@ -218,20 +229,37 @@ local function voceasy(str)
return str
end
-local function fullvoc(str)
+local function fullvoc(str, rules)
str = string.gsub(str, "\\arb(%b{})", function(inside)
inside = string.sub(inside, 2, -2)
for i = 1,#hamzafv do
inside = string.gsub(inside, hamzafv[i].a, hamzafv[i].b)
end
- for i = 1,#tanwinfv do
- inside = string.gsub(inside, tanwinfv[i].a, tanwinfv[i].b)
+ if rules == "idgham" then
+ for i = 1,#tanwinfv do
+ inside = string.gsub(inside, tanwinfv[i].a, tanwinfv[i].b)
+ end
+ else
+ for i = 1,#tanwinfveasy do
+ inside = string.gsub(inside, tanwinfveasy[i].a, tanwinfveasy[i].b)
+ end
end
for i = 1,#trigraphsfv do
inside = string.gsub(inside, trigraphsfv[i].a, trigraphsfv[i].b)
end
- for i = 1,#digraphsfv do
- inside = string.gsub(inside, digraphsfv[i].a, digraphsfv[i].b)
+ if rules == "idgham" then
+ for i = 1,#idgham do
+ inside = string.gsub(inside, idgham[i].a, idgham[i].b)
+ end
+ end
+ if rules == "idgham" then
+ for i = 1,#digraphsfvidgham do
+ inside = string.gsub(inside, digraphsfvidgham[i].a, digraphsfvidgham[i].b)
+ end
+ else
+ for i = 1,#digraphsfv do
+ inside = string.gsub(inside, digraphsfv[i].a, digraphsfv[i].b)
+ end
end
for i = 1,#singlefv do
inside = string.gsub(inside, singlefv[i].a, singlefv[i].b)
@@ -254,7 +282,7 @@ local function fullvoc(str)
return str
end
-local function fullvoceasy(str, opt)
+local function fullvoceasy(str, rules)
str = string.gsub(str, "\\arb(%b{})", function(inside)
inside = string.sub(inside, 2, -2)
for i = 1,#hamzafveasy do
@@ -266,7 +294,7 @@ local function fullvoceasy(str, opt)
for i = 1,#trigraphsfveasy do
inside = string.gsub(inside, trigraphsfveasy[i].a, trigraphsfveasy[i].b)
end
- if opt == "nosukun" then
+ if rules == "nosukun" then
for i = 1,#digraphsfveasy do
inside = string.gsub(inside, digraphsfveasy[i].a, digraphsfveasy[i].b)
end
@@ -368,7 +396,7 @@ local function novoceasy(str)
return str
end
-local function transdmg(str)
+local function transdmg(str, rules)
str = string.gsub(str, "\\arb(%b{})", function(inside)
inside = string.sub(inside, 2, -2)
for i = 1,#hamzatrdmg do
@@ -380,40 +408,10 @@ local function transdmg(str)
for i = 1,#trigraphstrdmg do
inside = string.gsub(inside, trigraphstrdmg[i].a, trigraphstrdmg[i].b)
end
- for i = 1,#digraphstrdmg do
- inside = string.gsub(inside, digraphstrdmg[i].a, digraphstrdmg[i].b)
- end
- for i = 1,#singletrdmg do
- inside = string.gsub(inside, singletrdmg[i].a, singletrdmg[i].b)
- end
- for i = 1,#longvtrdmg do
- inside = string.gsub(inside, longvtrdmg[i].a, longvtrdmg[i].b)
- end
- for i = 1,#shortvtrdmg do
- inside = string.gsub(inside, shortvtrdmg[i].a, shortvtrdmg[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 transdmgeasy(str)
- str = string.gsub(str, "\\arb(%b{})", function(inside)
- inside = string.sub(inside, 2, -2)
- for i = 1,#hamzatrdmg do
- inside = string.gsub(inside, hamzatrdmg[i].a, hamzatrdmg[i].b)
- end
- for i = 1,#tanwintrdmg do
- inside = string.gsub(inside, tanwintrdmg[i].a, tanwintrdmg[i].b)
- end
- for i = 1,#trigraphstrdmgeasy do
- inside = string.gsub(inside, trigraphstrdmgeasy[i].a, trigraphstrdmgeasy[i].b)
+ if rules == "idgham" then
+ for i = 1,#idghamtrdmg do
+ inside = string.gsub(inside, idghamtrdmg[i].a, idghamtrdmg[i].b)
+ end
end
for i = 1,#digraphstrdmg do
inside = string.gsub(inside, digraphstrdmg[i].a, digraphstrdmg[i].b)
@@ -498,8 +496,8 @@ function processvoc(str, rules, scheme)
else end
if rules == "easy" or rules == "easynosukun" then
str = voceasy(str)
- elseif rules == "dflt" then
- str = voc(str)
+ elseif rules == "dflt" or rules == "idgham" then
+ str = voc(str, rules)
else end
str = unprotectarb(str)
return str
@@ -518,8 +516,8 @@ function processfullvoc(str, rules, scheme)
str = fullvoceasy(str, "sukun")
elseif rules == "easynosukun" then
str = fullvoceasy(str, "nosukun")
- elseif rules == "dflt" then
- str = fullvoc(str)
+ elseif rules == "dflt" or rules == "idgham" then
+ str = fullvoc(str, rules)
else end
str = unprotectarb(str)
return str
@@ -536,7 +534,7 @@ function processnovoc(str, rules, scheme)
else end
if rules == "easy" or rules == "easynosukun" then
str = novoceasy(str)
- elseif rules == "dflt" then
+ elseif rules == "dflt" or rules == "idgham" then
str = novoc(str)
else end
str = unprotectarb(str)
@@ -551,16 +549,12 @@ function processtrans(str, mode, rules, scheme)
str = holdcmd(str)
if scheme == "buckwalter" then
str = processbuckw(str)
- else end
+ end
if mode == "dmg" then
- if rules == "easy" or rules == "easynosukun" then
- str = transdmgeasy(str)
- elseif rules == "dflt" then
- str = transdmg(str)
- else end
+ str = transdmg(str, rules)
elseif mode == "loc" then
str = transloc(str)
- else end
+ end
str = unprotectarb(str)
return str
end