diff src/luan/modules/Which_mod.luan @ 775:1a68fc55a80c

simplify dir structure
author Franklin Schmidt <fschmidt@gmail.com>
date Fri, 26 Aug 2016 14:36:40 -0600
parents core/src/luan/modules/Which_mod.luan@ca169567ce07
children bae2d0c2576c
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/luan/modules/Which_mod.luan	Fri Aug 26 14:36:40 2016 -0600
@@ -0,0 +1,53 @@
+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 M = {}
+
+M.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 M.which(name)
+	local ptn = "[:./]"..literal(name).."$"
+	for _, uri in ipairs(M.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 M