[Dev-luatex] Module searching
Hans Hagen
pragma at wxs.nl
Mon Dec 10 23:51:28 CET 2007
Heiko Oberdiek wrote:
> Hello,
>
> in the TeX world scripts are usually installed below TDS:scripts.
>
> Lua does know a module system.
>
> Example: There is a package "foobar" with module "foobar.hello".
> Lua then searches in some standard places for
> foobar/hello.lua
>
> However LuaTeX neglects the texmf trees. Thus "package.loaders"
> could be extended by a kpse loader, e.g.:
>
> function kpse.module_loader(module)
> local file
> if string.find(module, ".", 1, true) then
> -- What to do?
> -- the following is just an unreliable emergency workaround:
> module = string.gsub(module, "^.*\%.", "")
> file = kpse.find_file(module .. ".lua", "texmfscripts")
> else
> file = kpse.find_file(module .. ".lua", "texmfscripts")
> end
> if file then
> local loader, error = loadfile(file)
> if loader then
> return loader
> end
> return "\n\t KPSE loading error:\n" .. error
> end
> return "\n\t KPSE search failed"
> end
> table.insert(package.loaders, kpse.module_loader)
>
> However, the problem are modules with dots.
> I haven't find a solution using kpse functions.
> kpsewhich --format=texmfscripts foobar/hello.lua
> doesn't find the file.
well, maybe you could ask for the path variable, and loop over it
there's also luainputs
> Perhaps a search path could be hacked by using the output of
> kpsewhich --show-path=texmfscripts
> and appending the module directories to each path component.
> But:
> * LuaTeX's kpse library doesn't have a "show_path" function.
> * os.execute is not available in safer mode.
> * Last but not least, a kpse function is missing for
> searching along the modified path specification.
can't you use lua for that?
> * Portability among different operating systems.
> (directory specificator, ..., LUA_DIRSEP isn't available, ...)
>
> Ideas?
we explicitly didn't hard code these things because each user and/or
macro package may want to do it different (the same for suffixes of lua
files)
> Something like "foobar_hello.lua" isn't the best solution:
> * Redundancy in the full name:
> TDS:scripts/foobar/foobar_hello.lua
> * It doesn't scale well, e.g. it pollutes "package.loaded".
Hans
-----------------------------------------------------------------
Hans Hagen | PRAGMA ADE
Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
tel: 038 477 53 69 | fax: 038 477 53 74 | www.pragma-ade.com
| www.pragma-pod.nl
-----------------------------------------------------------------
More information about the dev-luatex
mailing list