diff options
Diffstat (limited to 'Master/texmf-dist/tex/context/base/supp-fil.lua')
-rw-r--r-- | Master/texmf-dist/tex/context/base/supp-fil.lua | 49 |
1 files changed, 29 insertions, 20 deletions
diff --git a/Master/texmf-dist/tex/context/base/supp-fil.lua b/Master/texmf-dist/tex/context/base/supp-fil.lua index a1c176dcd91..a93b0bce92f 100644 --- a/Master/texmf-dist/tex/context/base/supp-fil.lua +++ b/Master/texmf-dist/tex/context/base/supp-fil.lua @@ -12,26 +12,30 @@ if not modules then modules = { } end modules ['supp-fil'] = { at the <l n='tex'/> side.</p> --ldx]]-- +local find, gsub, match = string.find, string.gsub, string.match + +local ctxcatcodes = tex.ctxcatcodes + support = support or { } environment = environment or { } environment.outputfilename = environment.outputfilename or environment.jobname function support.checkfilename(str) -- "/whatever..." "c:..." "http://..." - cs.chardef("kindoffile",boolean.tonumber(str:find("^/") or str:find("[%a]:"))) + commands.chardef("kindoffile",boolean.tonumber(find(str,"^/") or find(str,"[%a]:"))) end function support.thesanitizedfilename(str) - tex.write((str:gsub("\\","/"))) + tex.write((gsub(str,"\\","/"))) end function support.splitfilename(fullname) local path, name, base, suffix, kind = '', fullname, fullname, '', 0 - local p, n = fullname:match("^(.+)/(.-)$") + local p, n = match(fullname,"^(.+)/(.-)$") if p and n then path, name, base = p, n, n end - local b, s = base:match("^(.+)%.(.-)$") + local b, s = match(base,"^(.+)%.(.-)$") if b and s then name, suffix = b, s end @@ -42,38 +46,43 @@ function support.splitfilename(fullname) else kind = 2 end ---~ print(fullname,path,base,name,suffix) - cs.def("splitofffull", fullname) - cs.def("splitoffpath", path) - cs.def("splitoffbase", base) - cs.def("splitoffname", name) - cs.def("splitofftype", suffix) - cs.chardef("splitoffkind", kind) + commands.def("splitofffull", fullname) + commands.def("splitoffpath", path) + commands.def("splitoffbase", base) + commands.def("splitoffname", name) + commands.def("splitofftype", suffix) + commands.chardef("splitoffkind", kind) end function support.splitfiletype(fullname) local name, suffix = fullname, '' - local n, s = fullname:match("^(.+)%.(.-)$") + local n, s = match(fullname,"^(.+)%.(.-)$") if n and s then name, suffix = n, s end - cs.def("splitofffull", fullname) - cs.def("splitoffpath", "") - cs.def("splitoffname", name) - cs.def("splitofftype", suffix) + commands.def("splitofffull", fullname) + commands.def("splitoffpath", "") + commands.def("splitoffname", name) + commands.def("splitofftype", suffix) end function support.doifparentfileelse(n) - cs.testcase(n==environment.jobname or n==environment.jobname..'.tex' or n==environment.outputfilename) + commands.testcase(n==environment.jobname or n==environment.jobname..'.tex' or n==environment.outputfilename) end -- saves some .15 sec on 12 sec format generation +local lastexistingfile = "" + function support.doiffileexistelse(name) if not name or name == "" then - return cs.testcase(false) + lastexistingfile = "" else - local n = input.findtexfile(texmf.instance,name) - return cs.testcase(n and n ~= "") + lastexistingfile = resolvers.findtexfile(name) or "" end + return commands.testcase(lastexistingfile ~= "") +end + +function support.lastexistingfile() + tex.sprint(ctxcatcodes,lastexistingfile) end |