annotate core/src/luan/modules/Which_mod.luan @ 628:6510de302f95

add "which" command
author Franklin Schmidt <fschmidt@gmail.com>
date Mon, 18 Jan 2016 06:42:50 -0700
parents
children 35dde32c02ab
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
628
6510de302f95 add "which" command
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
1 local Luan = require "luan:Luan"
6510de302f95 add "which" command
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
2 local error = Luan.error
6510de302f95 add "which" command
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
3 local ipairs = Luan.ipairs or error()
6510de302f95 add "which" command
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
4 local pairs = Luan.pairs or error()
6510de302f95 add "which" command
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
5 local type = Luan.type or error()
6510de302f95 add "which" command
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
6 local String = require "luan:String"
6510de302f95 add "which" command
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
7 local literal = String.literal or error()
6510de302f95 add "which" command
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
8 local match = String.match or error()
6510de302f95 add "which" command
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
9 local Io = require "luan:Io"
6510de302f95 add "which" command
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
10 local print = Io.print or error()
6510de302f95 add "which" command
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
11
6510de302f95 add "which" command
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
12
6510de302f95 add "which" command
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
13 local M = {}
6510de302f95 add "which" command
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
14
6510de302f95 add "which" command
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
15 M.uris = {
6510de302f95 add "which" command
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
16 "luan:Luan"
6510de302f95 add "which" command
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
17 "luan:Binary"
6510de302f95 add "which" command
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
18 "luan:Html"
6510de302f95 add "which" command
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
19 "luan:Io"
6510de302f95 add "which" command
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
20 "luan:Math"
6510de302f95 add "which" command
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
21 "luan:Package"
6510de302f95 add "which" command
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
22 "luan:String"
6510de302f95 add "which" command
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
23 "luan:Table"
6510de302f95 add "which" command
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
24 "luan:Thread"
6510de302f95 add "which" command
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
25 "luan:Time"
6510de302f95 add "which" command
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
26 "luan:host/Hosting"
6510de302f95 add "which" command
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
27 "luan:http/Http"
6510de302f95 add "which" command
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
28 "luan:http/Server"
6510de302f95 add "which" command
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
29 "luan:lucene/Lucene"
6510de302f95 add "which" command
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
30 "luan:lucene/Versioning"
6510de302f95 add "which" command
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
31 "luan:mail/Mail"
6510de302f95 add "which" command
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
32 "luan:logging/Logging"
6510de302f95 add "which" command
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
33 "luan:stripe/Stripe"
6510de302f95 add "which" command
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
34 }
6510de302f95 add "which" command
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
35
6510de302f95 add "which" command
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
36 function M.which(name)
6510de302f95 add "which" command
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
37 local ptn = "[:./]"..literal(name).."$"
6510de302f95 add "which" command
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
38 for _, uri in ipairs(M.uris) do
6510de302f95 add "which" command
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
39 local mod = require(uri)
6510de302f95 add "which" command
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
40 if match(uri,ptn) ~= nil then
6510de302f95 add "which" command
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
41 print(uri)
6510de302f95 add "which" command
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
42 end
6510de302f95 add "which" command
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
43 if type(mod) == "table" then
6510de302f95 add "which" command
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
44 for key in pairs(mod) do
6510de302f95 add "which" command
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
45 if key == name then
6510de302f95 add "which" command
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
46 print(uri.." "..key)
6510de302f95 add "which" command
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
47 end
6510de302f95 add "which" command
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
48 end
6510de302f95 add "which" command
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
49 end
6510de302f95 add "which" command
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
50 end
6510de302f95 add "which" command
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
51 end
6510de302f95 add "which" command
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
52
6510de302f95 add "which" command
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
53 return M