method_info 0.1.9 → 0.1.10
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/VERSION +1 -1
- data/lib/method_info/ancestor_method_structure.rb +29 -19
- data/spec/method_info/ancestor_method_structure_spec.rb +25 -1
- metadata +13 -26
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.10
|
@@ -23,28 +23,13 @@ module MethodInfo
|
|
23
23
|
# :suppress_slowness_warning Does not print out the warning about slowness on older ruby versions (default: false)
|
24
24
|
# :match Shows only those methods that match this option. It's value can be either a string or a regexp (default: nil)
|
25
25
|
def self.build(object, options)
|
26
|
-
if
|
27
|
-
|
26
|
+
# print warning message if a Method does not support the :owner method
|
27
|
+
if !options[:suppress_slowness_warning] && ! Method.instance_methods.include?("owner")
|
28
|
+
STDERR.puts "You are using a Ruby version (#{RUBY_VERSION}) that does not support the owner method of a Method - this may take a while. It will be faster for >=1.8.7."
|
28
29
|
end
|
29
30
|
|
30
|
-
methods = []
|
31
|
-
methods += object.methods if options[:public_methods]
|
32
|
-
methods += object.protected_methods if options[:protected_methods]
|
33
|
-
methods += object.private_methods if options[:private_methods]
|
34
|
-
methods -= object.singleton_methods unless options[:singleton_methods]
|
35
|
-
|
36
31
|
ancestor_method_structure = AncestorMethodStructure.new(object, options)
|
37
|
-
|
38
|
-
if(match = options[:match])
|
39
|
-
unless match.is_a?(Regexp)
|
40
|
-
match = Regexp.new(match)
|
41
|
-
end
|
42
|
-
methods = methods.select { |m| m =~ match }
|
43
|
-
end
|
44
|
-
|
45
|
-
methods.each do |method|
|
46
|
-
ancestor_method_structure.add_method_to_ancestor(method)
|
47
|
-
end
|
32
|
+
ancestor_method_structure.add_selected_methods_to_structure
|
48
33
|
ancestor_method_structure
|
49
34
|
end
|
50
35
|
|
@@ -130,8 +115,33 @@ module MethodInfo
|
|
130
115
|
s
|
131
116
|
end
|
132
117
|
|
118
|
+
def add_selected_methods_to_structure
|
119
|
+
select_methods
|
120
|
+
apply_match_filter_to_methods
|
121
|
+
@methods.each do |method|
|
122
|
+
add_method_to_ancestor(method)
|
123
|
+
end
|
124
|
+
end
|
125
|
+
|
133
126
|
private
|
134
127
|
|
128
|
+
def select_methods
|
129
|
+
@methods = []
|
130
|
+
@methods += @object.methods if @options[:public_methods]
|
131
|
+
@methods += @object.protected_methods if @options[:protected_methods]
|
132
|
+
@methods += @object.private_methods if @options[:private_methods]
|
133
|
+
@methods -= @object.singleton_methods unless @options[:singleton_methods]
|
134
|
+
end
|
135
|
+
|
136
|
+
def apply_match_filter_to_methods
|
137
|
+
if(match = @options[:match])
|
138
|
+
unless match.is_a?(Regexp)
|
139
|
+
match = Regexp.new(match)
|
140
|
+
end
|
141
|
+
@methods = @methods.select { |m| m =~ match }
|
142
|
+
end
|
143
|
+
end
|
144
|
+
|
135
145
|
def methodless_ancestors
|
136
146
|
@ancestor_filter.picked.select { |ancestor| @ancestor_methods[ancestor].empty? }
|
137
147
|
end
|
@@ -8,7 +8,31 @@ module MethodInfo
|
|
8
8
|
end
|
9
9
|
|
10
10
|
describe "AncestorMethodStructure::build" do
|
11
|
-
|
11
|
+
describe "if a Method does not support the :owner method" do
|
12
|
+
before do
|
13
|
+
Method.stub!(:instance_methods).and_return ["foo"]
|
14
|
+
end
|
15
|
+
|
16
|
+
it "should print a warning message" do
|
17
|
+
STDERR.should_receive :puts
|
18
|
+
AncestorMethodStructure.build(:foo, {})
|
19
|
+
end
|
20
|
+
|
21
|
+
it "should not print a warning message if :suppress_slowness_warning is set" do
|
22
|
+
STDERR.should_not_receive :puts
|
23
|
+
AncestorMethodStructure.build(:foo, :suppress_slowness_warning => true)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
describe "if a Method supports the :owner method" do
|
28
|
+
before do
|
29
|
+
Method.stub!(:instance_methods).and_return ["foo", "owner"]
|
30
|
+
end
|
31
|
+
|
32
|
+
it "should not print a warning message" do
|
33
|
+
STDERR.should_not_receive :puts
|
34
|
+
AncestorMethodStructure.build(:foo, {})
|
35
|
+
end
|
12
36
|
end
|
13
37
|
end
|
14
38
|
|
metadata
CHANGED
@@ -1,12 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: method_info
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
segments:
|
6
|
-
- 0
|
7
|
-
- 1
|
8
|
-
- 9
|
9
|
-
version: 0.1.9
|
4
|
+
version: 0.1.10
|
10
5
|
platform: ruby
|
11
6
|
authors:
|
12
7
|
- Tom ten Thij
|
@@ -14,35 +9,29 @@ autorequire:
|
|
14
9
|
bindir: bin
|
15
10
|
cert_chain: []
|
16
11
|
|
17
|
-
date: 2010-
|
12
|
+
date: 2010-03-18 00:00:00 +00:00
|
18
13
|
default_executable:
|
19
14
|
dependencies:
|
20
15
|
- !ruby/object:Gem::Dependency
|
21
16
|
name: rspec
|
22
|
-
|
23
|
-
|
17
|
+
type: :development
|
18
|
+
version_requirement:
|
19
|
+
version_requirements: !ruby/object:Gem::Requirement
|
24
20
|
requirements:
|
25
21
|
- - ">="
|
26
22
|
- !ruby/object:Gem::Version
|
27
|
-
segments:
|
28
|
-
- 1
|
29
|
-
- 2
|
30
|
-
- 9
|
31
23
|
version: 1.2.9
|
32
|
-
|
33
|
-
version_requirements: *id001
|
24
|
+
version:
|
34
25
|
- !ruby/object:Gem::Dependency
|
35
26
|
name: cucumber
|
36
|
-
|
37
|
-
|
27
|
+
type: :development
|
28
|
+
version_requirement:
|
29
|
+
version_requirements: !ruby/object:Gem::Requirement
|
38
30
|
requirements:
|
39
31
|
- - ">="
|
40
32
|
- !ruby/object:Gem::Version
|
41
|
-
segments:
|
42
|
-
- 0
|
43
33
|
version: "0"
|
44
|
-
|
45
|
-
version_requirements: *id002
|
34
|
+
version:
|
46
35
|
description: Defines a method_info method on every Object instance which provides information about methods that are defined on the object and the location where they were defined
|
47
36
|
email: method_info@tomtenthij.nl
|
48
37
|
executables: []
|
@@ -87,20 +76,18 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
87
76
|
requirements:
|
88
77
|
- - ">="
|
89
78
|
- !ruby/object:Gem::Version
|
90
|
-
segments:
|
91
|
-
- 0
|
92
79
|
version: "0"
|
80
|
+
version:
|
93
81
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
94
82
|
requirements:
|
95
83
|
- - ">="
|
96
84
|
- !ruby/object:Gem::Version
|
97
|
-
segments:
|
98
|
-
- 0
|
99
85
|
version: "0"
|
86
|
+
version:
|
100
87
|
requirements: []
|
101
88
|
|
102
89
|
rubyforge_project:
|
103
|
-
rubygems_version: 1.3.
|
90
|
+
rubygems_version: 1.3.5
|
104
91
|
signing_key:
|
105
92
|
specification_version: 3
|
106
93
|
summary: Get info about an object's methods
|