[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: FInding the real name of a module
- From: David Manura <dm.lua@...>
- Date: Thu, 22 Jan 2009 01:07:07 -0500
On Wed, Jan 21, 2009 at 5:51 PM, František Fuka wrote:
>
> But this also doesn't work because the order is
> significant. I have to call the test_function() functions in exactly the
> same order their filenames are present in the original array.
Something like this may do:
Iterate over the package names in package.loaded. Convert each
package name to a file name by consulting the package.path variable in
the same manner that require does so. (For an idea of how you might
do this see http://lua-users.org/wiki/BinaryModulesLoader or
http://www.keplerproject.org/compat/ .) Storing the inverse mapping
of this in a table allows you to determine package names(s) that map
to a given file name.
Then iterate over the table of file names. For each file name,
convert it into a package name by consulting the map above. Do
require(package_name) (note: calling require twice has no side-effect)
and store the return value, which is the package table. Call the
test_function() inside it or, to find MODULENAME (which might differ
from the package name passed to require), lookup inside package.loaded
for a MODULENAME having a package table matching this package table.