Skip to content

l0.DependencyControl.ModuleProvider

ModuleProvider = require "l0.DependencyControl.ModuleProvider"
local ModuleProvider = require("l0.DependencyControl.ModuleProvider")

ModuleProvider

Resolves provided module aliases to their provider module through a custom package searcher.

Class methods

isDepCtrlVersionRecord

ModuleProvider.isDepCtrlVersionRecord value
ModuleProvider.isDepCtrlVersionRecord(value)

Returns true when value is a live DependencyControl PackageRecord instance, regardless of which class object created it.

param type description
value any

Returns:

  • isRecord boolean

runInitializer

ModuleProvider.runInitializer ref, DependencyControl
ModuleProvider.runInitializer(ref, DependencyControl)

Runs a freshly-loaded module reference's DependencyControl initializer (__depCtrlInit), if it has one and hasn't been initialized yet, so the module exposes a proper DependencyControl record. The guard avoids re-initializing modules that mutate state on first init (e.g. BadMutex).

param type description
ref any The loaded module reference.
DependencyControl table The DependencyControl class handed to the initializer.

Returns:

  • ran boolean|nil — True if the initializer ran, false if there was nothing to run, nil on initializer error.
  • err string? — Error message when the initializer raised.

register

ModuleProvider\register alias, providerName
ModuleProvider:register(alias, providerName)

Registers a provider for an alias name. First registration wins.

param type description
alias string The (possibly bare) module name to provide.
providerName string The namespaced module that provides it.

Returns:

  • registered boolean — Whether the registration was applied.

registerRecord

ModuleProvider\registerRecord record
ModuleProvider:registerRecord(record)

Registers every alias declared in a record's provides field.

param type description
record table A record with .moduleName and an optional .provides array.

fullTraceback

ModuleProvider.fullTraceback msg
ModuleProvider.fullTraceback(msg)

Builds a stack traceback string with full, untruncated source paths, rewriting known Aegisub directory prefixes back to their ?user/?data/?temp aliases. Suitable as an xpcall handler.

param type description
msg? string A message, typically the error, prepended to the traceback.

Returns:

  • traceback string — The formatted traceback, one frame per line.

getProvider

ModuleProvider\getProvider alias
ModuleProvider:getProvider(alias)

Gets the provider namespace registered for an alias module name.

param type description
alias string

Returns:

  • providerName string? — The provider namespace registered for the alias.

install

ModuleProvider\install!
ModuleProvider:install()

Installs the alias searcher. Idempotent across reloads.