aboutsummaryrefslogtreecommitdiff
path: root/arabluatex.lua
diff options
context:
space:
mode:
authorRobert Alessi <alessi@robertalessi.net>2022-06-15 10:50:00 +0200
committerRobert Alessi <alessi@robertalessi.net>2022-06-15 10:50:00 +0200
commit8c4cfb2b61dde8b30b33bbc4dba5a3267edd36b5 (patch)
tree6023ad0e670713d8a47f07cd42804f4ddf506b7a /arabluatex.lua
parent5a355afa958761229d6dbce5eae7dacbcf6c2e63 (diff)
downloadarabluatex-8c4cfb2b61dde8b30b33bbc4dba5a3267edd36b5.tar.gz
added distinction between dmg|dmg+ and \SetArbNumbers (either Indian [default] or Arabic). updated copyright dates.
Diffstat (limited to 'arabluatex.lua')
-rw-r--r--arabluatex.lua43
1 files changed, 33 insertions, 10 deletions
diff --git a/arabluatex.lua b/arabluatex.lua
index 72b1e38..f639770 100644
--- a/arabluatex.lua
+++ b/arabluatex.lua
@@ -2,7 +2,7 @@
2This file is part of the `arabluatex' package 2This file is part of the `arabluatex' package
3 3
4ArabLuaTeX -- Processing ArabTeX notation under LuaLaTeX 4ArabLuaTeX -- Processing ArabTeX notation under LuaLaTeX
5Copyright (C) 2016--2020 Robert Alessi 5Copyright (C) 2016--2022 Robert Alessi
6 6
7Please send error reports and suggestions for improvements to Robert 7Please send error reports and suggestions for improvements to Robert
8Alessi <alessi@robertalessi.net> 8Alessi <alessi@robertalessi.net>
@@ -94,7 +94,8 @@ local albrkcmds = {
94 "LRmarginpar", 94 "LRmarginpar",
95 "arbmark", 95 "arbmark",
96 "abjad", 96 "abjad",
97 "ayah" 97 "ayah",
98 "SetArbNumbers"
98} 99}
99local brkcmds = {} 100local brkcmds = {}
100 101
@@ -170,7 +171,18 @@ local function holdcmd(str)
170 return str 171 return str
171end 172end
172 173
173local function arbnum(str) 174local indorarbnum = "Indian"
175
176function arabluatex.setnums(opt)
177 if opt == "Indian"
178 then
179 indorarbnum = "Indian"
180 else
181 indorarbnum = "Arabic"
182 end
183end
184
185local function arbnum(str) -- not used, see below
174 str = string.gsub(str, "([0-9%,%-%/]+)", function(num) 186 str = string.gsub(str, "([0-9%,%-%/]+)", function(num)
175 return string.reverse(num) 187 return string.reverse(num)
176 end) 188 end)
@@ -181,8 +193,11 @@ local function indnum(str)
181 str = string.gsub(str, "([0-9%,%-%/]+)", function(num) 193 str = string.gsub(str, "([0-9%,%-%/]+)", function(num)
182 return string.reverse(num) 194 return string.reverse(num)
183 end) 195 end)
184 for i = 1,#numbers do 196 if indorarbnum == "Indian"
185 str = string.gsub(str, numbers[i].a, numbers[i].b) 197 then
198 for i = 1,#numbers do
199 str = string.gsub(str, numbers[i].a, numbers[i].b)
200 end
186 end 201 end
187 return str 202 return str
188end 203end
@@ -590,11 +605,19 @@ local function novoceasy(str)
590 return str 605 return str
591end 606end
592 607
593local function transdmg(str, rules) 608local function transdmg(str, mode, rules)
594 str = string.gsub(str, "\\arb(%b{})", function(inside) 609 str = string.gsub(str, "\\arb(%b{})", function(inside)
595 inside = string.sub(inside, 2, -2) 610 inside = string.sub(inside, 2, -2)
596 for i = 1,#hamzatrdmg do 611 if mode == "dmg"
597 inside = string.gsub(inside, hamzatrdmg[i].a, hamzatrdmg[i].b) 612 then
613 for i = 1,#hamzatrnoinitialdmg do
614 inside = string.gsub(inside, hamzatrnoinitialdmg[i].a, hamzatrnoinitialdmg[i].b)
615 end
616 elseif mode == "dmg+"
617 then
618 for i = 1,#hamzatrdmg do
619 inside = string.gsub(inside, hamzatrdmg[i].a, hamzatrdmg[i].b)
620 end
598 end 621 end
599 for i = 1,#tanwintrdmg do 622 for i = 1,#tanwintrdmg do
600 inside = string.gsub(inside, tanwintrdmg[i].a, tanwintrdmg[i].b) 623 inside = string.gsub(inside, tanwintrdmg[i].a, tanwintrdmg[i].b)
@@ -1062,8 +1085,8 @@ function arabluatex.processtrans(str, mode, rules, scheme)
1062 if scheme == "buckwalter" then 1085 if scheme == "buckwalter" then
1063 str = processbuckw(str) 1086 str = processbuckw(str)
1064 end 1087 end
1065 if mode == "dmg" then 1088 if mode == "dmg" or mode == "dmg+" then
1066 str = transdmg(str, rules) 1089 str = transdmg(str, mode, rules)
1067 elseif mode == "loc" then 1090 elseif mode == "loc" then
1068 str = transloc(str) 1091 str = transloc(str)
1069 elseif mode == "arabica" then 1092 elseif mode == "arabica" then