devel-which 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/LICENSE/license_en.txt +58 -0
- data/LICENSE/license_ja.txt +53 -0
- data/README.md +99 -0
- data/Rakefile +33 -0
- data/devel-which.gemspec +32 -0
- data/lib/devel/which.rb +97 -0
- data/lib/devel/which/forclass.rb +9 -0
- data/lib/devel/which/formodule.rb +47 -0
- data/lib/devel/which/forobject.rb +72 -0
- data/lib/devel/which/libwhich.rb +14 -0
- metadata +57 -0
@@ -0,0 +1,58 @@
|
|
1
|
+
Ruby is copyrighted free software by Yukihiro Matsumoto <matz@netlab.co.jp>.
|
2
|
+
You can redistribute it and/or modify it under either the terms of the GPL
|
3
|
+
(see COPYING.txt file), or the conditions below:
|
4
|
+
|
5
|
+
1. You may make and give away verbatim copies of the source form of the
|
6
|
+
software without restriction, provided that you duplicate all of the
|
7
|
+
original copyright notices and associated disclaimers.
|
8
|
+
|
9
|
+
2. You may modify your copy of the software in any way, provided that
|
10
|
+
you do at least ONE of the following:
|
11
|
+
|
12
|
+
a) place your modifications in the Public Domain or otherwise
|
13
|
+
make them Freely Available, such as by posting said
|
14
|
+
modifications to Usenet or an equivalent medium, or by allowing
|
15
|
+
the author to include your modifications in the software.
|
16
|
+
|
17
|
+
b) use the modified software only within your corporation or
|
18
|
+
organization.
|
19
|
+
|
20
|
+
c) rename any non-standard executables so the names do not conflict
|
21
|
+
with standard executables, which must also be provided.
|
22
|
+
|
23
|
+
d) make other distribution arrangements with the author.
|
24
|
+
|
25
|
+
3. You may distribute the software in object code or executable
|
26
|
+
form, provided that you do at least ONE of the following:
|
27
|
+
|
28
|
+
a) distribute the executables and library files of the software,
|
29
|
+
together with instructions (in the manual page or equivalent)
|
30
|
+
on where to get the original distribution.
|
31
|
+
|
32
|
+
b) accompany the distribution with the machine-readable source of
|
33
|
+
the software.
|
34
|
+
|
35
|
+
c) give non-standard executables non-standard names, with
|
36
|
+
instructions on where to get the original software distribution.
|
37
|
+
|
38
|
+
d) make other distribution arrangements with the author.
|
39
|
+
|
40
|
+
4. You may modify and include the part of the software into any other
|
41
|
+
software (possibly commercial). But some files in the distribution
|
42
|
+
are not written by the author, so that they are not under this terms.
|
43
|
+
|
44
|
+
They are gc.c(partly), utils.c(partly), regex.[ch], st.[ch] and some
|
45
|
+
files under the ./missing directory. See each file for the copying
|
46
|
+
condition.
|
47
|
+
|
48
|
+
5. The scripts and library files supplied as input to or produced as
|
49
|
+
output from the software do not automatically fall under the
|
50
|
+
copyright of the software, but belong to whomever generated them,
|
51
|
+
and may be sold commercially, and may be aggregated with this
|
52
|
+
software.
|
53
|
+
|
54
|
+
6. THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
|
55
|
+
IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
|
56
|
+
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
57
|
+
PURPOSE.
|
58
|
+
|
@@ -0,0 +1,53 @@
|
|
1
|
+
$BK\%W%m%0%i%`$O%U%j!<%=%U%H%&%'%"$G$9!%(BGPL(the GNU General
|
2
|
+
Public License)$B$^$?$O0J2<$K<($9>r7o$GK\%W%m%0%i%`$r:FG[I[$G(B
|
3
|
+
$B$-$^$9!%(BGPL$B$K$D$$$F$O(BCOPYING.txt$B%U%!%$%k$r;2>H$7$F2<$5$$!%(B
|
4
|
+
|
5
|
+
1. $BJ#@=$O@)8B$J$/<+M3$G$9!%(B
|
6
|
+
|
7
|
+
2. $B0J2<$N>r7o$N$$$:$l$+$rK~$?$9;~$KK\%W%m%0%i%`$N%=!<%9$r(B
|
8
|
+
$B<+M3$KJQ99$G$-$^$9!%(B
|
9
|
+
|
10
|
+
(a) $B%M%C%H%K%e!<%:$K%]%9%H$7$?$j!$:n<T$KJQ99$rAwIU$9$k(B
|
11
|
+
$B$J$I$NJ}K!$G!$JQ99$r8x3+$9$k!%(B
|
12
|
+
|
13
|
+
(b) $BJQ99$7$?K\%W%m%0%i%`$r<+J,$N=jB0$9$kAH?%FbIt$@$1$G(B
|
14
|
+
$B;H$&!%(B
|
15
|
+
|
16
|
+
(c) $BJQ99E@$rL@<($7$?$&$(!$%=%U%H%&%'%"$NL>A0$rJQ99$9$k!%(B
|
17
|
+
$B$=$N%=%U%H%&%'%"$rG[I[$9$k;~$K$OJQ99A0$NK\%W%m%0%i(B
|
18
|
+
$B%`$bF1;~$KG[I[$9$k!%$^$?$OJQ99A0$NK\%W%m%0%i%`$N%=!<(B
|
19
|
+
$B%9$NF~<jK!$rL@<($9$k!%(B
|
20
|
+
|
21
|
+
(d) $B$=$NB>$NJQ99>r7o$r:n<T$H9g0U$9$k!%(B
|
22
|
+
|
23
|
+
3. $B0J2<$N>r7o$N$$$:$l$+$rK~$?$9;~$KK\%W%m%0%i%`$r%3%s%Q%$(B
|
24
|
+
$B%k$7$?%*%V%8%'%/%H%3!<%I$d<B9T7A<0$G$bG[I[$G$-$^$9!%(B
|
25
|
+
|
26
|
+
(a) $B%P%$%J%j$r<u$1<h$C$??M$,%=!<%9$rF~<j$G$-$k$h$&$K!$(B
|
27
|
+
$B%=!<%9$NF~<jK!$rL@<($9$k!%(B
|
28
|
+
|
29
|
+
(b) $B5!3#2DFI$J%=!<%9%3!<%I$rE:IU$9$k!%(B
|
30
|
+
|
31
|
+
(c) $BJQ99$r9T$C$?%P%$%J%j$OL>A0$rJQ99$7$?$&$(!$%*%j%8%J(B
|
32
|
+
$B%k$N%=!<%9%3!<%I$NF~<jK!$rL@<($9$k!%(B
|
33
|
+
|
34
|
+
(d) $B$=$NB>$NG[I[>r7o$r:n<T$H9g0U$9$k!%(B
|
35
|
+
|
36
|
+
4. $BB>$N%W%m%0%i%`$X$N0zMQ$O$$$+$J$kL\E*$G$"$l<+M3$G$9!%$?(B
|
37
|
+
$B$@$7!$K\%W%m%0%i%`$K4^$^$l$kB>$N:n<T$K$h$k%3!<%I$O!$$=(B
|
38
|
+
$B$l$>$l$N:n<T$N0U8~$K$h$k@)8B$,2C$($i$k>l9g$,$"$j$^$9!%(B
|
39
|
+
|
40
|
+
$B6qBNE*$K$O(Bgc.c($B0lIt(B)$B!$(Butil.c($B0lIt(B)$B!$(Bst.[ch]$B!$(Bregex.[ch]
|
41
|
+
$B$*$h$S(B ./missing$B%G%#%l%/%H%j2<$N%U%!%$%k72$,3:Ev$7$^$9!%(B
|
42
|
+
$B$=$l$>$l$NG[I[>r7o$J$I$KIU$$$F$O3F%U%!%$%k$r;2>H$7$F$/(B
|
43
|
+
$B$@$5$$!%(B
|
44
|
+
|
45
|
+
5. $BK\%W%m%0%i%`$X$NF~NO$H$J$k%9%/%j%W%H$*$h$S!$K\%W%m%0%i(B
|
46
|
+
$B%`$+$i$N=PNO$N8"Mx$OK\%W%m%0%i%`$N:n<T$G$O$J$/!$$=$l$>(B
|
47
|
+
$B$l$NF~=PNO$r@8@.$7$??M$KB0$7$^$9!%$^$?!$K\%W%m%0%i%`$K(B
|
48
|
+
$BAH$_9~$^$l$k$?$a$N3HD%%i%$%V%i%j$K$D$$$F$bF1MM$G$9!%(B
|
49
|
+
|
50
|
+
6. $BK\%W%m%0%i%`$OL5J]>Z$G$9!%:n<T$OK\%W%m%0%i%`$r%5%]!<%H(B
|
51
|
+
$B$9$k0U;V$O$"$j$^$9$,!$%W%m%0%i%`<+?H$N%P%0$"$k$$$OK\%W(B
|
52
|
+
$B%m%0%i%`$N<B9T$J$I$+$iH/@8$9$k$$$+$J$kB;32$KBP$7$F$b@U(B
|
53
|
+
$BG$$r;}$A$^$;$s!%(B
|
data/README.md
ADDED
@@ -0,0 +1,99 @@
|
|
1
|
+
|
2
|
+
# module Devel::Which
|
3
|
+
|
4
|
+
**Devel::Which - locate a symbol/library in the user's namespace/path**
|
5
|
+
|
6
|
+
Forked from http://raa.ruby-lang.org/project/devel-which/
|
7
|
+
|
8
|
+
## SYNOPSIS
|
9
|
+
|
10
|
+
require 'devel/which'
|
11
|
+
|
12
|
+
File.which_constant("TRUNC") #=> File::Constants
|
13
|
+
Fixnum.which_method("nonzero?") #=> Numeric
|
14
|
+
which_library("net/http") #=> (the path where the net/http exists)
|
15
|
+
whereis_library("forwardable") #=> [(path, ... )]
|
16
|
+
|
17
|
+
|
18
|
+
## DESCRIPTION
|
19
|
+
|
20
|
+
Devel::Which provides an effective definition finder, for example,
|
21
|
+
Fixnum#nonzero? is defined at Numeric and
|
22
|
+
Fixnum.which_method("nonzero?") returns Numeric.
|
23
|
+
|
24
|
+
## Constants
|
25
|
+
|
26
|
+
Devel::Which::VERSION
|
27
|
+
|
28
|
+
Stands for the version of Devel::Which.
|
29
|
+
|
30
|
+
## Methods
|
31
|
+
|
32
|
+
Module::which_constant(name)
|
33
|
+
|
34
|
+
Returns Devel::Which::ForModule::which_constant(self, name). This
|
35
|
+
method is defined in devel/which.
|
36
|
+
|
37
|
+
Module::which_method(name)
|
38
|
+
|
39
|
+
Returns Devel::Which::ForClass::which_method(self, name). This method
|
40
|
+
is defined in devel/which.
|
41
|
+
|
42
|
+
Object::which_library(name)
|
43
|
+
|
44
|
+
Returns Devel::Which::ForObject::which_library(name). This method is
|
45
|
+
defined in devel/which.
|
46
|
+
|
47
|
+
Returns Devel::Which::ForObject::whereis_library(name). This method is
|
48
|
+
defined in devel/which.
|
49
|
+
|
50
|
+
Devel::Which::ForModule::which_constant(mod, name)
|
51
|
+
|
52
|
+
Returns a Module where the constant name is defined. This method is
|
53
|
+
defined in devel/which/formodule.
|
54
|
+
|
55
|
+
Devel::Which::ForModule::which_method(mod, name)
|
56
|
+
|
57
|
+
Returns a Class where the method name is defined. This method is
|
58
|
+
defined in devel/which/formodule.
|
59
|
+
|
60
|
+
Devel::Which::ForObject::which_library(name)
|
61
|
+
|
62
|
+
Returns a file name where the library name exists. This method is
|
63
|
+
defined in devel/which/forobject.
|
64
|
+
|
65
|
+
Devel::Which::ForObject::whereis_library(name)
|
66
|
+
|
67
|
+
Returns an Array consists of file names where the library name exists.
|
68
|
+
This method is defined in devel/which/forobject.
|
69
|
+
|
70
|
+
## AUTHORS
|
71
|
+
|
72
|
+
### FORK
|
73
|
+
|
74
|
+
mori_dev <mori.dev.asdf at gmail dot com>
|
75
|
+
|
76
|
+
### ORIGINAL
|
77
|
+
|
78
|
+
GOTO Kentaro aka Gotoken <gotoken at notwork dot org>
|
79
|
+
|
80
|
+
## HISTORY
|
81
|
+
|
82
|
+
### FORK
|
83
|
+
|
84
|
+
2012-02-25: VERSION 0.3.0 - added gem, gemspec, Rakefile.
|
85
|
+
|
86
|
+
### ORIGINAL
|
87
|
+
|
88
|
+
2002-02-02: VERSION 0.2.0 - which_method moved to
|
89
|
+
Devel::Which::ForModule.
|
90
|
+
|
91
|
+
2002-01-15: VERSION 0.1.1 - added whereis_library (inspired by eban).
|
92
|
+
|
93
|
+
2002-01-13: VERSION 0.1.0
|
94
|
+
|
95
|
+
|
96
|
+
## LICENSE
|
97
|
+
|
98
|
+
Ruby's License
|
99
|
+
See LICENSE/* for details.
|
data/Rakefile
ADDED
@@ -0,0 +1,33 @@
|
|
1
|
+
require "rake"
|
2
|
+
require "rake/clean"
|
3
|
+
require "pathname"
|
4
|
+
|
5
|
+
|
6
|
+
task :default do
|
7
|
+
sh "rake -T"
|
8
|
+
end
|
9
|
+
|
10
|
+
CLEAN.include "devel-which-*.gem"
|
11
|
+
|
12
|
+
|
13
|
+
namespace :gem do
|
14
|
+
|
15
|
+
desc "build devel-which gem"
|
16
|
+
task :build do
|
17
|
+
sh "rake clean && gem build devel-which.gemspec"
|
18
|
+
end
|
19
|
+
|
20
|
+
desc "run gem install on the built gem"
|
21
|
+
task :install => :build do
|
22
|
+
sh "gem install devel-which*.gem"
|
23
|
+
end
|
24
|
+
|
25
|
+
desc "push devel-which.gem to RubyGems"
|
26
|
+
task :release do
|
27
|
+
if Pathname.new("~/.gem/credentials").expand_path.exist?
|
28
|
+
sh "gem push devel-which*.gem"
|
29
|
+
else
|
30
|
+
raise "Your rubygems.org credentials aren't set. Run `gem push` to set them."
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
data/devel-which.gemspec
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
$:.push File.expand_path("../lib", __FILE__)
|
2
|
+
require "devel/which"
|
3
|
+
|
4
|
+
Gem::Specification.new do |s|
|
5
|
+
s.name = "devel-which"
|
6
|
+
s.version = Devel::Which::VERSION
|
7
|
+
s.authors = ["GOTO Kentaro aka Gotoken, mori_dev"]
|
8
|
+
s.email = ["mori.dev.asdf@gmail.com"]
|
9
|
+
s.homepage = "https://github.com/wakaran/devel-which"
|
10
|
+
s.summary = %q{Devel::Which - locate a symbol/library in the users namespace/path}
|
11
|
+
s.description = <<-EOS
|
12
|
+
Devel::Which provides an effective definition finder, for example,
|
13
|
+
Fixnum#nonzero? is defined at Numeric and
|
14
|
+
Fixnum.which_method("nonzero?") returns Numeric.
|
15
|
+
EOS
|
16
|
+
s.files = [
|
17
|
+
"devel-which.gemspec",
|
18
|
+
"lib/devel/which",
|
19
|
+
"lib/devel/which/forclass.rb",
|
20
|
+
"lib/devel/which/forobject.rb",
|
21
|
+
"lib/devel/which/libwhich.rb",
|
22
|
+
"lib/devel/which/formodule.rb",
|
23
|
+
"lib/devel/which.rb",
|
24
|
+
"LICENSE/license_ja.txt",
|
25
|
+
"LICENSE/license_en.txt",
|
26
|
+
"README.md",
|
27
|
+
"Rakefile"
|
28
|
+
]
|
29
|
+
|
30
|
+
s.require_paths = ["lib"]
|
31
|
+
|
32
|
+
end
|
data/lib/devel/which.rb
ADDED
@@ -0,0 +1,97 @@
|
|
1
|
+
#! /usr/local/bin/ruby
|
2
|
+
# $kNotwork: which.rb,v 1.3 2002/02/08 19:52:57 gotoken Exp $
|
3
|
+
|
4
|
+
require "devel/which/forobject"
|
5
|
+
require "devel/which/formodule"
|
6
|
+
|
7
|
+
module Devel
|
8
|
+
module Which
|
9
|
+
VERSION = "0.3.0"
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
class Object
|
14
|
+
def which_library(name)
|
15
|
+
Devel::Which::ForObject::which_library(name)
|
16
|
+
end
|
17
|
+
|
18
|
+
def whereis_library(name)
|
19
|
+
Devel::Which::ForObject::whereis_library(name)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
class Module
|
24
|
+
def which_constant(name)
|
25
|
+
Devel::Which::ForModule::which_constant(self, name)
|
26
|
+
end
|
27
|
+
|
28
|
+
def which_method(name)
|
29
|
+
Devel::Which::ForModule::which_method(self, name)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
if __FILE__ == $0
|
34
|
+
def show(str = nil, hidden = nil)
|
35
|
+
if str
|
36
|
+
print("#{str.ljust(25)}")
|
37
|
+
val = eval(str)
|
38
|
+
puts(hidden ? "" : " #=> #{val.inspect}" )
|
39
|
+
else
|
40
|
+
puts("")
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
show %{Fixnum.which_method :nonzero?} #=> Numeric
|
45
|
+
show %{Fixnum.which_method :integer?} #=> Integer
|
46
|
+
show %{Fixnum.which_method :zero?} #=> Fixnum
|
47
|
+
show %{Array.which_method :sort} #=> Array
|
48
|
+
show %{Array.which_method :find} #=> Enumerable
|
49
|
+
show
|
50
|
+
show %{File::Constants.which_constant("IO")} #=> Object
|
51
|
+
show %{File::Constants.which_constant("Constants")} #=> File
|
52
|
+
show %{File::Constants.which_constant("TRUNC")} #=> File::Constants
|
53
|
+
show %{
|
54
|
+
module M0
|
55
|
+
X = 0
|
56
|
+
Z = 0
|
57
|
+
end
|
58
|
+
|
59
|
+
module M1
|
60
|
+
X = 1
|
61
|
+
Y = "1"
|
62
|
+
|
63
|
+
module C
|
64
|
+
Y = "1"
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
module M2
|
69
|
+
include M0
|
70
|
+
Z = 0
|
71
|
+
end
|
72
|
+
|
73
|
+
module A
|
74
|
+
X = nil
|
75
|
+
|
76
|
+
module B
|
77
|
+
include M1
|
78
|
+
|
79
|
+
module C
|
80
|
+
include M2
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end}, true
|
84
|
+
show
|
85
|
+
show %{A::B::C.which_constant("X")} #=> A
|
86
|
+
show %{A::B::C.which_constant("Y")} #=> nil
|
87
|
+
show %{A::B::C.which_constant("Z")} #=> M0
|
88
|
+
show
|
89
|
+
show %{which_library "xmp"}
|
90
|
+
show %{which_library "irb"}
|
91
|
+
show %{which_library "irb/xmp"}
|
92
|
+
show %{which_library "nkf"}
|
93
|
+
show %{which_library "which.rb"}
|
94
|
+
show
|
95
|
+
show %{whereis_library "uri"}
|
96
|
+
show %{whereis_library "tk"}
|
97
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
require "devel/which/libwhich"
|
2
|
+
|
3
|
+
module Devel
|
4
|
+
module Which
|
5
|
+
module ForModule
|
6
|
+
|
7
|
+
def which_constant(mod, name)
|
8
|
+
|
9
|
+
name = Devel::Which::name2string(name)
|
10
|
+
nest = []
|
11
|
+
pos = 0
|
12
|
+
space = mod.name
|
13
|
+
|
14
|
+
begin
|
15
|
+
pos -= 1
|
16
|
+
space = space[0..pos]
|
17
|
+
nest.push(space)
|
18
|
+
end while pos = space.rindex(/::/)
|
19
|
+
|
20
|
+
nest.map!{|i| eval "::#{i}"}
|
21
|
+
mod.ancestors.each{|i| nest.push i}
|
22
|
+
a = (class << self; self; end).ancestors.each{|i| nest.push i}
|
23
|
+
cand = nest.find_all{|m| m.const_defined? name}
|
24
|
+
last = cand.shift
|
25
|
+
return nil if not last
|
26
|
+
value = last.const_get(name)
|
27
|
+
|
28
|
+
while car = cand.shift
|
29
|
+
break if value != car.const_get(name)
|
30
|
+
last = car
|
31
|
+
end
|
32
|
+
|
33
|
+
last
|
34
|
+
end
|
35
|
+
module_function :which_constant
|
36
|
+
|
37
|
+
def which_method(mod, name)
|
38
|
+
name = Devel::Which::name2string(name)
|
39
|
+
mod.ancestors.find{|a|
|
40
|
+
a.instance_methods.include?(name)
|
41
|
+
}
|
42
|
+
end
|
43
|
+
module_function :which_method
|
44
|
+
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,72 @@
|
|
1
|
+
require "rbconfig"
|
2
|
+
|
3
|
+
module Devel
|
4
|
+
module Which
|
5
|
+
module ForObject
|
6
|
+
def which_library(lib)
|
7
|
+
unless lib.is_a? String
|
8
|
+
raise TypeError,
|
9
|
+
"wrong argument type #{lib.type} (expected String)"
|
10
|
+
end
|
11
|
+
ext = ["rb", Config::CONFIG["DLEXT"], Config::CONFIG["DLEXT2"]]
|
12
|
+
ext.map!{|i| i.length > 0 ? ".#{i}" : nil}
|
13
|
+
ext.compact!
|
14
|
+
ext.push("")
|
15
|
+
|
16
|
+
at = with = nil
|
17
|
+
at = $:.find{|path|
|
18
|
+
file = "#{File::expand_path(path)}/#{lib}"
|
19
|
+
|
20
|
+
begin
|
21
|
+
with = ext.find{|i|
|
22
|
+
test(?f, file+i) && test(?r, file+i)
|
23
|
+
}
|
24
|
+
rescue
|
25
|
+
next
|
26
|
+
end
|
27
|
+
}
|
28
|
+
|
29
|
+
"#{at}/#{lib}#{with}" if at
|
30
|
+
end
|
31
|
+
module_function :which_library
|
32
|
+
|
33
|
+
def whereis_library(lib, opt = {})
|
34
|
+
unless lib.is_a? String
|
35
|
+
raise TypeError,
|
36
|
+
"wrong argument type #{lib.type} (expected String)"
|
37
|
+
end
|
38
|
+
unless opt.is_a? Hash
|
39
|
+
raise TypeError,
|
40
|
+
"wrong argument type #{lib.type} (expected Hash)"
|
41
|
+
end
|
42
|
+
optpath = opt[:path] || opt[:p] || []
|
43
|
+
optext = opt[:ext] || opt[:e] || ""
|
44
|
+
ext = ["rb", Config::CONFIG["DLEXT"], Config::CONFIG["DLEXT2"], optext]
|
45
|
+
ext.map!{|i| i.length > 0 ? ".#{i}" : nil}
|
46
|
+
ext.compact!
|
47
|
+
ext.push("")
|
48
|
+
|
49
|
+
at = []
|
50
|
+
|
51
|
+
($: + optpath).each{|path|
|
52
|
+
with = nil
|
53
|
+
file = "#{File::expand_path(path)}/#{lib}"
|
54
|
+
|
55
|
+
begin
|
56
|
+
ext.each{|with|
|
57
|
+
if (test(?f, file+with) && test(?r, file+with) rescue false)
|
58
|
+
at << "#{path}/#{lib}#{with}"
|
59
|
+
end
|
60
|
+
}
|
61
|
+
rescue
|
62
|
+
next
|
63
|
+
end
|
64
|
+
}
|
65
|
+
|
66
|
+
at
|
67
|
+
end
|
68
|
+
module_function :whereis_library
|
69
|
+
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module Devel
|
2
|
+
module Which
|
3
|
+
def name2string(name)
|
4
|
+
name = name.id2name if name.is_a? Symbol
|
5
|
+
unless name.is_a? String
|
6
|
+
raise TypeError,
|
7
|
+
"wrong argument type #{name.type} (expected String or Symbol)"
|
8
|
+
else
|
9
|
+
name
|
10
|
+
end
|
11
|
+
end
|
12
|
+
module_function :name2string
|
13
|
+
end
|
14
|
+
end
|
metadata
ADDED
@@ -0,0 +1,57 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: devel-which
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.3.0
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- GOTO Kentaro aka Gotoken, mori_dev
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-03-10 00:00:00.000000000Z
|
13
|
+
dependencies: []
|
14
|
+
description: ! " Devel::Which provides an effective definition finder, for example,\n
|
15
|
+
\ Fixnum#nonzero? is defined at Numeric and\n Fixnum.which_method(\"nonzero?\")
|
16
|
+
returns Numeric.\n"
|
17
|
+
email:
|
18
|
+
- mori.dev.asdf@gmail.com
|
19
|
+
executables: []
|
20
|
+
extensions: []
|
21
|
+
extra_rdoc_files: []
|
22
|
+
files:
|
23
|
+
- devel-which.gemspec
|
24
|
+
- lib/devel/which/forclass.rb
|
25
|
+
- lib/devel/which/forobject.rb
|
26
|
+
- lib/devel/which/libwhich.rb
|
27
|
+
- lib/devel/which/formodule.rb
|
28
|
+
- lib/devel/which.rb
|
29
|
+
- LICENSE/license_ja.txt
|
30
|
+
- LICENSE/license_en.txt
|
31
|
+
- README.md
|
32
|
+
- Rakefile
|
33
|
+
homepage: https://github.com/wakaran/devel-which
|
34
|
+
licenses: []
|
35
|
+
post_install_message:
|
36
|
+
rdoc_options: []
|
37
|
+
require_paths:
|
38
|
+
- lib
|
39
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
40
|
+
none: false
|
41
|
+
requirements:
|
42
|
+
- - ! '>='
|
43
|
+
- !ruby/object:Gem::Version
|
44
|
+
version: '0'
|
45
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
46
|
+
none: false
|
47
|
+
requirements:
|
48
|
+
- - ! '>='
|
49
|
+
- !ruby/object:Gem::Version
|
50
|
+
version: '0'
|
51
|
+
requirements: []
|
52
|
+
rubyforge_project:
|
53
|
+
rubygems_version: 1.8.13
|
54
|
+
signing_key:
|
55
|
+
specification_version: 3
|
56
|
+
summary: Devel::Which - locate a symbol/library in the users namespace/path
|
57
|
+
test_files: []
|