From efb07927d995efbc33822ba447b2beed2b31ef5a Mon Sep 17 00:00:00 2001 From: Robert Alessi Date: Wed, 24 Feb 2016 20:27:29 +0100 Subject: first implementation of fullvoc tables --- arabluatex.lua | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 50 insertions(+), 6 deletions(-) (limited to 'arabluatex.lua') diff --git a/arabluatex.lua b/arabluatex.lua index 087ee82..76d61b3 100644 --- a/arabluatex.lua +++ b/arabluatex.lua @@ -23,6 +23,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA --]] require("arabluatex_voc") +require("arabluatex_fullvoc") require("arabluatex_novoc") local function protectarb(str) @@ -133,14 +134,47 @@ local function voc(str) return str end +local function fullvoc(str) + 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,#tanwin do + inside = string.gsub(inside, tanwin[i].a, tanwin[i].b) + end + for i = 1,#trigraphs do + inside = string.gsub(inside, trigraphs[i].a, trigraphs[i].b) + end + for i = 1,#digraphsfv do + inside = string.gsub(inside, digraphsfv[i].a, digraphsfv[i].b) + end + for i = 1,#single do + inside = string.gsub(inside, single[i].a, single[i].b) + end + for i = 1,#longv do + inside = string.gsub(inside, longv[i].a, longv[i].b) + end + for i = 1,#shortv do + inside = string.gsub(inside, shortv[i].a, shortv[i].b) + end + for i = 1,#null do + inside = string.gsub(inside, null[i].a, null[i].b) + end + inside = indnum(inside) + return string.format("\\txarb{%s}", inside) + end) +return str +end + local function novoc(str) 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,#tanwinnovoc do - inside = string.gsub(inside, tanwinnovoc[i].a, tanwinnovoc[i].b) + for i = 1,#tanwinnv do + inside = string.gsub(inside, tanwinnv[i].a, tanwinnv[i].b) end for i = 1,#trigraphs do inside = string.gsub(inside, trigraphs[i].a, trigraphs[i].b) @@ -151,11 +185,11 @@ local function novoc(str) for i = 1,#single do inside = string.gsub(inside, single[i].a, single[i].b) end - for i = 1,#longvnovoc do - inside = string.gsub(inside, longvnovoc[i].a, longvnovoc[i].b) + for i = 1,#longvnv do + inside = string.gsub(inside, longvnv[i].a, longvnv[i].b) end - for i = 1,#shortvnovoc do - inside = string.gsub(inside, shortvnovoc[i].a, shortvnovoc[i].b) + for i = 1,#shortvnv do + inside = string.gsub(inside, shortvnv[i].a, shortvnv[i].b) end for i = 1,#null do inside = string.gsub(inside, null[i].a, null[i].b) @@ -176,6 +210,16 @@ function processvoc(str) return str end +function processfullvoc(str) + str = "\\arb{".. str.."}" + str = protectarb(str) + str = breakcmd(str) + str = holdcmd(str) + str = fullvoc(str) + str = unprotectarb(str) +return str +end + function processnovoc(str) str = "\\arb{".. str.."}" str = protectarb(str) -- cgit v1.2.3