diff options
Diffstat (limited to 'tex/context/base/supp-fil.lua')
-rw-r--r-- | tex/context/base/supp-fil.lua | 33 |
1 files changed, 31 insertions, 2 deletions
diff --git a/tex/context/base/supp-fil.lua b/tex/context/base/supp-fil.lua index 7f573c038..4370e1163 100644 --- a/tex/context/base/supp-fil.lua +++ b/tex/context/base/supp-fil.lua @@ -145,14 +145,18 @@ openers.fix = openers.file loaders.fix = loaders.file openers.set = openers.file loaders.set = loaders.file openers.any = openers.file loaders.any = loaders.file -function commands.doreadfile(scheme,path,name) -- better do a split and then pass table +function finders.doreadfile(scheme,path,name) -- better do a split and then pass table local fullname if url.hasscheme(name) then fullname = name else fullname = ((path == "") and format("%s:///%s",scheme,name)) or format("%s:///%s/%s",scheme,path,name) end - context(resolvers.findtexfile(fullname)) -- can be more direct + return resolvers.findtexfile(fullname) or "" -- can be more direct +end + +function commands.doreadfile(scheme,path,name) + context(finders.doreadfile(scheme,path,name)) end -- modules can have a specific suffix or can specify one @@ -294,6 +298,31 @@ function commands.usemodules(prefix,askedname,truename) modstatus[hashname] = status end +local loaded = { } + +function commands.uselibrary(name,patterns,action,failure) + local files = utilities.parsers.settings_to_array(name) + local done = false + for i=1,#files do + local filename = files[i] + if not loaded[filename] then + loaded[filename] = true + for i=1,#patterns do + local filename = format(patterns[i],filename) + -- local foundname = resolvers.find_file(filename) or "" + local foundname = finders.doreadfile("any",".",filename) + if foundname ~= "" then + action(name,foundname) + done = true + end + end + end + end + if not done then + failure(name) + end +end + statistics.register("loaded tex modules", function() if next(modstatus) then local t, f, nt, nf = { }, { }, 0, 0 |