view src/luan/modules/Which_mod.luan @ 1088:bae2d0c2576c

change module naming convention
author Franklin Schmidt <fschmidt@gmail.com>
date Mon, 26 Dec 2016 22:29:36 -0700
parents 1a68fc55a80c
children
line wrap: on
line source

local Luan = require "luan:Luan.luan"
local error = Luan.error
local ipairs = Luan.ipairs or error()
local pairs = Luan.pairs or error()
local type = Luan.type or error()
local String = require "luan:String.luan"
local literal = String.literal or error()
local matches = String.matches or error()
local Io = require "luan:Io.luan"
local print = Io.print or error()


local Which_mod = {}

Which_mod.uris = {
	"luan:Luan"
	"luan:Binary"
	"luan:Html"
	"luan:Io"
	"luan:Math"
	"luan:Package"
	"luan:String"
	"luan:Table"
	"luan:Thread"
	"luan:Time"
	"luan:host/Hosting"
	"luan:http/Http"
	"luan:http/Server"
	"luan:lucene/Lucene"
	"luan:lucene/Versioning"
	"luan:mail/Mail"
	"luan:logging/Logging"
	"luan:stripe/Stripe"
}

function Which_mod.which(name)
	local ptn = "[:./]"..literal(name).."$"
	for _, uri in ipairs(Which_mod.uris) do
		local mod = require(uri)
		if matches(uri,ptn) then
			print(uri)
		end
		if type(mod) == "table" then
			for key in pairs(mod) do
				if key == name then
					print(uri.." "..key)
				end
			end
		end
	end
end

return Which_mod