Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local c = require('component')
- -- Javascript-style modules? Okay, why not.
- local exports = {}
- -- Retrieve a handle to the AE2 network
- local function me()
- if (c.isAvailable('upgrade_me')) then
- return c.getPrimary('upgrade_me')
- end
- if (c.isAvailable('me_controller')) then
- return c.getPrimary('me_controller')
- end
- if (c.isAvailable('me_interface')) then
- return c.getPrimary('me_interface')
- end
- return nil
- end
- exports.me = me
- local function getCraftables()
- return me().getCraftables()
- end
- exports.getCraftables = getCraftables
- local function getCraftablesFiltered(filter)
- return me().getCraftables(filter)
- end
- exports.getCraftablesFiltered = getCraftablesFiltered
- local function getCraftablesByName(name)
- return me().getCraftablesFiltered({name = name})
- end
- exports.getCraftablesByName = getCraftablesByName
- local function getCraftableNamesByRegex(nameSelector)
- local craftables = getCraftables()
- local matches = {}; local n = 0
- for k,v in pairs(craftables) do
- if type(v) == "table" then
- local stack = v.getItemStack()
- if string.match(stack.label, nameSelector)
- or string.match(stack.name, nameSelector)
- then
- matches[k] = v
- n = n + 1
- end
- end
- end
- matches.n = n
- return matches
- end
- exports.getCraftableNameByRegex = getCraftableNameByRegex
- local function getSingleCraftableNameByRegex(nameSelector)
- local matches = getCraftableNamesByRegex(nameSelector)
- if matches.n ~= 1 then
- local errstring = "More than one craftable item matched your filters."
- print(errstring)
- print(string.format("SELECTOR: %s", nameSelector))
- print("-- MATCHES --")
- for k,v in pairs(matches) do
- print(string.format(" %s : %s"), tostring(k), tostring(v))
- end
- error(errstring)
- end
- return matches[1]
- end
- return exports
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement