diff options
-rw-r--r-- | ekdosis.dtx | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/ekdosis.dtx b/ekdosis.dtx index 9518bf0..fd1768e 100644 --- a/ekdosis.dtx +++ b/ekdosis.dtx | |||
@@ -938,6 +938,7 @@ idno={}, msName={}, origDate={}][3]{% | |||
938 | % \fi | 938 | % \fi |
939 | % \begin{ekdlua} | 939 | % \begin{ekdlua} |
940 | 940 | ||
941 | -- This table will hold the functions: | ||
941 | ekdosis = {} | 942 | ekdosis = {} |
942 | 943 | ||
943 | -- lpeg equivalent for string.gsub() | 944 | -- lpeg equivalent for string.gsub() |
@@ -963,6 +964,7 @@ local aftercmd = lpeg.Cs(lpeg.S("*[{,.?;:'`\"") + dblbkslash) | |||
963 | local cmdargs = lpeg.Cs(spce^-1 * bsqbracketsii * bcbracesii * bsqbrackets^-1) | 964 | local cmdargs = lpeg.Cs(spce^-1 * bsqbracketsii * bcbracesii * bsqbrackets^-1) |
964 | local app = lpeg.Cs("app") | 965 | local app = lpeg.Cs("app") |
965 | local lemrdg = lpeg.Cs(lpeg.Cs("lem") + lpeg.Cs("rdg")) | 966 | local lemrdg = lpeg.Cs(lpeg.Cs("lem") + lpeg.Cs("rdg")) |
967 | local note = lpeg.Cs("note") | ||
966 | local lnbrk = lpeg.Cs("\\\\") | 968 | local lnbrk = lpeg.Cs("\\\\") |
967 | local poemline = lpeg.Cs(lnbrk * bsqbrackets^-1) | 969 | local poemline = lpeg.Cs(lnbrk * bsqbrackets^-1) |
968 | local endpoem = lpeg.Cs(lnbrk * lpeg.S("*!") * bsqbrackets^-1) | 970 | local endpoem = lpeg.Cs(lnbrk * lpeg.S("*!") * bsqbrackets^-1) |
@@ -1227,6 +1229,62 @@ local function xml_entities(str) | |||
1227 | return str | 1229 | return str |
1228 | end | 1230 | end |
1229 | 1231 | ||
1232 | local function note_totei(str) | ||
1233 | str = gsub(str, | ||
1234 | dblbkslash * | ||
1235 | note * | ||
1236 | spcenc^-1 * | ||
1237 | bsqbrackets * | ||
1238 | bcbraces * | ||
1239 | spcenc^-1, | ||
1240 | function(bkslash, cmd, opt, arg) | ||
1241 | opt = string.sub(opt, 2, -2) | ||
1242 | arg = string.sub(arg, 2, -2) | ||
1243 | teitype = string.match(opt, "%f[%w]type%s?%=%s?%b{}") | ||
1244 | or string.match(opt, "%f[%w]type%s?%=%s?%w+%f[%W]") | ||
1245 | or "" | ||
1246 | teitype = string.gsub(teitype, "type%s?%=%s?(%b{})", function(bbraces) | ||
1247 | bbraces = string.sub(bbraces, 2, -2) | ||
1248 | return string.format("%s", bbraces) | ||
1249 | end) | ||
1250 | teitype = string.gsub(teitype, "(type%s?%=%s?)(%w+%f[%W])", "%2") | ||
1251 | right = string.match(opt, "%f[%w]labelb%s?%=%s?%b{}") | ||
1252 | or string.match(opt, "%f[%w]labelb%s?%=%s?%w+%f[%W]") | ||
1253 | or "" | ||
1254 | right = string.gsub(right, "labelb%s?%=%s?(%b{})", function(bbraces) | ||
1255 | bbraces = string.sub(bbraces, 2, -2) | ||
1256 | return string.format("%s", bbraces) | ||
1257 | end) | ||
1258 | right = string.gsub(right, "(labelb%s?%=%s?)(%w+%f[%W])", "%2") | ||
1259 | left = string.match(opt, "%f[%w]labele%s?%=%s?%b{}") | ||
1260 | or string.match(opt, "%f[%w]labele%s?%=%s?%w+%f[%W]") | ||
1261 | or "" | ||
1262 | left = string.gsub(left, "labele%s?%=%s?(%b{})", function(bbraces) | ||
1263 | bbraces = string.sub(bbraces, 2, -2) | ||
1264 | return string.format("%s", bbraces) | ||
1265 | end) | ||
1266 | left = string.gsub(left, "(labele%s?%=%s?)(%w+%f[%W])", "%2") | ||
1267 | |||
1268 | if left ~= "" and teitype ~= "" | ||
1269 | then | ||
1270 | return string.format("<%s type=\"%s\" target=\"#range(right(%s),left(%s))\">%s</%s>", | ||
1271 | cmd, teitype, right, left, arg, cmd) | ||
1272 | elseif left ~= "" and teitype == "" | ||
1273 | then | ||
1274 | return string.format("<%s target=\"#range(right(%s),left(%s))\">%s</%s>", | ||
1275 | cmd, right, left, arg, cmd) | ||
1276 | elseif left == "" and teitype ~= "" | ||
1277 | then | ||
1278 | return string.format("<%s type=\"%s\" target=\"#right(%s)\">%s</%s>", | ||
1279 | cmd, teitype, right, arg, cmd) | ||
1280 | else | ||
1281 | return string.format("<%s target=\"#right(%s)\">%s</%s>", | ||
1282 | cmd, right, arg, cmd) | ||
1283 | end | ||
1284 | end) | ||
1285 | return str | ||
1286 | end | ||
1287 | |||
1230 | local function app_totei(str) | 1288 | local function app_totei(str) |
1231 | str = gsub(str, | 1289 | str = gsub(str, |
1232 | dblbkslash * | 1290 | dblbkslash * |
@@ -1284,6 +1342,7 @@ local function lem_rdg_totei(str) | |||
1284 | arg = string.sub(arg, 2, -2) | 1342 | arg = string.sub(arg, 2, -2) |
1285 | return lem_rdg_totei(string.format("<%s>%s</%s>", cmd, arg, cmd)) | 1343 | return lem_rdg_totei(string.format("<%s>%s</%s>", cmd, arg, cmd)) |
1286 | end) | 1344 | end) |
1345 | str = string.gsub(str, "(%<lem.-%>.-)(%<note.-%<%/note%>)(.-%<%/lem%>)", "%1%3%2") | ||
1287 | return str | 1346 | return str |
1288 | end | 1347 | end |
1289 | 1348 | ||
@@ -1385,6 +1444,7 @@ local function textotei(str) | |||
1385 | str = string.gsub(str, "%s?\\par%s?", "\n<p>") | 1444 | str = string.gsub(str, "%s?\\par%s?", "\n<p>") |
1386 | tei_p_open = true | 1445 | tei_p_open = true |
1387 | end | 1446 | end |
1447 | str = note_totei(str) | ||
1388 | str = app_totei(str) | 1448 | str = app_totei(str) |
1389 | str = lem_rdg_totei(str) | 1449 | str = lem_rdg_totei(str) |
1390 | str = versetotei(str) | 1450 | str = versetotei(str) |