(module/add-paths ext loader) Add paths to module/paths for a given loader such that the generated paths behave like other module types, including relative imports and syspath imports. ext is the file extension to associate with this module type, including the dot. loader is the keyword name of a loader that is module/loaders. Returns the modified module/paths.
Table mapping loaded module identifiers to their environments.
(module/expand-path path template) Expands a path template as found in module/paths for module/find. This takes in a path (the argument to require) and a template string, template, to expand the path to a path that can be used for importing files. The replacements are as follows: :all: the value of path verbatim :cur: the current file, or (dyn :current-file) :dir: the directory containing the current file :name: the filename component of path, with extenion if given :native: the extension used to load natives, .so or .dll :sys: the system path, or (syn :syspath)
(module/find path) Try to match a module or path name from the patterns in module/paths. Returns a tuple (fullpath kind) where the kind is one of :source, :native, or image if the module is found, otherwise a tuple with nil followed by an error message.
A table of loading method names to loading functions. This table lets require and import load many different kinds of files as module.
Table mapping currently loading modules to true. Used to prevent circular dependencies.
The list of paths to look for modules, templated for module/expand-path. Each element is a two element tuple, containing the path template and a keyword :source, :native, or :image indicating how require should load files found at these paths. A tuple can also contain a third element, specifying a filter that prevents module/find from searching that path template if the filter doesn't match the input path. The filter can be a string or a predicate function, and is often a file extension, including the period.