diff options
author | Hans Hagen <pragma@wxs.nl> | 2023-03-10 12:42:42 +0100 |
---|---|---|
committer | Context Git Mirror Bot <phg@phi-gamma.net> | 2023-03-10 12:42:42 +0100 |
commit | 250c5684b9ee44ac972db51f87289ef935182c53 (patch) | |
tree | 4d2001bfc9e9575367c9f23c7d182b8c31d83d77 /tex/context/base/mkxl/file-syn.lmt | |
parent | c677baac37632308600b5108b586f80246056c74 (diff) | |
download | context-250c5684b9ee44ac972db51f87289ef935182c53.tar.gz |
2023-03-10 12:17:00
Diffstat (limited to 'tex/context/base/mkxl/file-syn.lmt')
-rw-r--r-- | tex/context/base/mkxl/file-syn.lmt | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/tex/context/base/mkxl/file-syn.lmt b/tex/context/base/mkxl/file-syn.lmt new file mode 100644 index 000000000..1c3010b43 --- /dev/null +++ b/tex/context/base/mkxl/file-syn.lmt @@ -0,0 +1,79 @@ +if not modules then modules = { } end modules ['file-syn'] = { + version = 1.001, + comment = "companion to file-syn.mkvi", + author = "Hans Hagen, PRAGMA-ADE, Hasselt NL", + copyright = "PRAGMA ADE / ConTeXt Development Team", + license = "see context related readme files" +} + + +environment.filesynonyms = environment.filesynonyms or { } +local filesynonyms = environment.filesynonyms + +local settings_to_array = utilities.parsers.settings_to_array +local findfile = resolvers.findfile + +local implement = interfaces.implement + +storage.register("environment/filesynonyms", filesynonyms, "environment.filesynonyms") + +local function truefilename(name) + local realname = filesynonyms[name] or name + if realname ~= name then + return truefilename(realname) + else + return realname + end +end + +environment.truefilename = truefilename + +function environment.definefilesynonym(name,realname) + if name and realname then + local names = settings_to_array(name) + for i=1,#names do + local name = names[i] + local synonym = filesynonyms[name] + if synonym then + interfaces.showmessage("files",1,{ name or "?", realname or "?", synonym or "?" }) + end + filesynonyms[name] = realname + end + end +end + +function environment.definefilefallback(name,alternatives) + if name and alternatives then + local names = settings_to_array(alternatives) + for i=1,#names do + local realname = findfile(names[i]) + if realname ~= "" then + filesynonyms[name] = realname + break + end + end + end +end + +implement { + name = "truefilename", + public = true, + actions = { truefilename, context }, + arguments = "argument" +} + +implement { + name = "definefilesynonym", + public = true, + protected = true, + actions = environment.definefilesynonym, + arguments = "2 optionals" +} + +implement { + name = "definefilefallback", + public = true, + protected = true, + actions = environment,definefilefallback, + arguments = "2 optionals" +} |