API Reference
Janitor
Constructors
Janitor New()
Janitor New(function thunk)
Creates and returns a new Janitor
instance. If thunk
is given, it will be used later as the Janitor
instance’s default cleanup function. thunk
must be a function that accepts a dynamic parameter.
Methods
dynamic Add(dynamic key, dynamic value)
dynamic Add(dynamic key, dynamic value, function thunk)
Adds an entry for value value
to this Janitor
instance, with key key
for later reference. If thunk
is given, it will be used later as the entry’s cleanup function. thunk
must be a function that accepts a dynamic parameter. Returns value
.
dynamic AddValue(dynamic value)
dynamic AddValue(dynamic value, function thunk)
Adds an entry for value value
to this Janitor
instance. If thunk
is given, it will be used later as the entry’s cleanup function. thunk
must be a function that accepts a dynamic parameter. Returns value
.
nil Cleanup(dynamic key)
Removes the entry with key key
from this Janitor
instance. If the entry has a cleanup function, that function will be called, with the entry’s value as the argument; otherwise, this Janitor
instance’s default cleanup function will be called, with the entry’s value as the argument.
nil CleanupAll()
Removes all entries from this Janitor
instance. For each entry: if the entry has a cleanup function, that function will be called, with the entry’s value as the argument; otherwise, this Janitor
instance’s default cleanup function will be called, with the entry’s value as the argument.
Examples
Usage
Example.lua
local Janitor = require("Janitor")
local Thing = {}
Thing.__index = Thing
function Thing.New()
local self = setmetatable({}, Thing)
return self
end
function Thing:Destroy()
print("Destroy")
end
local _janitor = Janitor.New(Thing.Destroy)
_janitor:AddValue(Thing.New())
_janitor:AddValue(Thing.New())
_janitor:AddValue(Thing.New())
_janitor:CleanupAll()
🧾 (Output)
Destroy
Destroy
Destroy