method_info 0.1.10 → 0.1.11
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION +1 -1
- data/lib/method_info/ancestor_method_structure.rb +10 -1
- data/spec/method_info/ancestor_filter_spec.rb +1 -1
- data/spec/method_info/ancestor_method_structure_spec.rb +19 -4
- data/spec/method_info/object_method_spec.rb +2 -2
- data/spec/method_info/option_handler_spec.rb +2 -2
- data/spec/spec_helper.rb +1 -1
- metadata +25 -12
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.11
|
@@ -22,9 +22,12 @@ module MethodInfo
|
|
22
22
|
# :punctuation_color Set colour for punctuation (only used when :enable_colors is true)
|
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
|
+
|
26
|
+
@@ruby_version_supports_owner_method = nil
|
27
|
+
|
25
28
|
def self.build(object, options)
|
26
29
|
# print warning message if a Method does not support the :owner method
|
27
|
-
if !options[:suppress_slowness_warning] && !
|
30
|
+
if !options[:suppress_slowness_warning] && !ruby_version_supports_owner_method
|
28
31
|
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."
|
29
32
|
end
|
30
33
|
|
@@ -125,6 +128,12 @@ module MethodInfo
|
|
125
128
|
|
126
129
|
private
|
127
130
|
|
131
|
+
def self.ruby_version_supports_owner_method
|
132
|
+
return @@ruby_version_supports_owner_method unless @@ruby_version_supports_owner_method.nil?
|
133
|
+
@@ruby_version_supports_owner_method =
|
134
|
+
Method.instance_methods.any? { |m| m.to_sym == :owner }
|
135
|
+
end
|
136
|
+
|
128
137
|
def select_methods
|
129
138
|
@methods = []
|
130
139
|
@methods += @object.methods if @options[:public_methods]
|
@@ -50,7 +50,7 @@ module MethodInfo
|
|
50
50
|
|
51
51
|
describe "with class hierarchy" do
|
52
52
|
it "excludes the modules of a class that is excluded" do
|
53
|
-
AncestorFilter.new([Fixnum, Integer,
|
53
|
+
AncestorFilter.new([Fixnum, Integer, Numeric, Comparable, Object, Kernel],
|
54
54
|
:exclude => [Integer, Object]).picked.should ==
|
55
55
|
[Fixnum, Numeric, Comparable]
|
56
56
|
end
|
@@ -26,13 +26,27 @@ module MethodInfo
|
|
26
26
|
|
27
27
|
describe "if a Method supports the :owner method" do
|
28
28
|
before do
|
29
|
-
|
29
|
+
AncestorMethodStructure.send(:class_variable_set,
|
30
|
+
'@@ruby_version_supports_owner_method',
|
31
|
+
nil)
|
30
32
|
end
|
31
33
|
|
32
|
-
it "should not print a warning message" do
|
34
|
+
it "should not print a warning message when instance methods are returned as strings" do
|
35
|
+
Method.stub!(:instance_methods).and_return ["foo", "owner"]
|
36
|
+
STDERR.should_not_receive :puts
|
37
|
+
AncestorMethodStructure.build(:foo, {})
|
38
|
+
end
|
39
|
+
it "should not print a warning message when instance methods are returned as symbols" do
|
40
|
+
Method.stub!(:instance_methods).and_return [:foo, :owner]
|
33
41
|
STDERR.should_not_receive :puts
|
34
42
|
AncestorMethodStructure.build(:foo, {})
|
35
43
|
end
|
44
|
+
it "should not check for version more than once" do
|
45
|
+
Method.stub!(:instance_methods).and_return [:foo, :owner]
|
46
|
+
AncestorMethodStructure.build(:foo, {})
|
47
|
+
Method.should_not_receive(:instance_methods)
|
48
|
+
AncestorMethodStructure.build(:foo, {})
|
49
|
+
end
|
36
50
|
end
|
37
51
|
end
|
38
52
|
|
@@ -96,7 +110,7 @@ module MethodInfo
|
|
96
110
|
describe "poor_mans_method_owner" do
|
97
111
|
it "finds the owner if it is the base clas" do
|
98
112
|
ams = AncestorMethodStructure.new(37, {})
|
99
|
-
ams.send(:poor_mans_method_owner, 37.method(:
|
113
|
+
ams.send(:poor_mans_method_owner, 37.method(:abs), "abs").should == Fixnum
|
100
114
|
end
|
101
115
|
|
102
116
|
it "finds the owner if it is a super clas" do
|
@@ -106,7 +120,7 @@ module MethodInfo
|
|
106
120
|
|
107
121
|
it "finds the owner if it is a module" do
|
108
122
|
ams = AncestorMethodStructure.new(37, {})
|
109
|
-
ams.send(:poor_mans_method_owner, 37.method(:
|
123
|
+
ams.send(:poor_mans_method_owner, 37.method(:is_a?), "is_a?").should == Kernel
|
110
124
|
end
|
111
125
|
|
112
126
|
it "finds the owner if it is the eigenclass" do
|
@@ -119,6 +133,7 @@ module MethodInfo
|
|
119
133
|
end
|
120
134
|
|
121
135
|
it "finds the owner if it is nested" do
|
136
|
+
pending "Spec needs to be fixed to work with 1.9.1" if RUBY_VERSION >= "1.9.1"
|
122
137
|
module TestNestOne
|
123
138
|
module TestNestTwo
|
124
139
|
def nest
|
@@ -6,12 +6,12 @@ module MethodInfo
|
|
6
6
|
describe "method_info" do
|
7
7
|
it "passes the object it was called on to the option handler" do
|
8
8
|
@obj = Object.new
|
9
|
-
OptionHandler.should_receive(:handle).with(@obj, anything)
|
9
|
+
MethodInfo::OptionHandler.should_receive(:handle).with(@obj, anything)
|
10
10
|
@obj.method_info
|
11
11
|
end
|
12
12
|
|
13
13
|
it "passes its options to the option handler" do
|
14
|
-
OptionHandler.should_receive(:handle).with(anything, { :a => :one, :b => :two })
|
14
|
+
MethodInfo::OptionHandler.should_receive(:handle).with(anything, { :a => :one, :b => :two })
|
15
15
|
Object.method_info(:a => :one, :b => :two)
|
16
16
|
end
|
17
17
|
end
|
@@ -28,12 +28,12 @@ module MethodInfo
|
|
28
28
|
end
|
29
29
|
|
30
30
|
it "uses a value from the default profile if an option was not passed" do
|
31
|
-
MethodInfo::OptionHandler.stub!(:default_profile).and_return({ :mock_option
|
31
|
+
MethodInfo::OptionHandler.stub!(:default_profile).and_return({ :mock_option => :mock_value })
|
32
32
|
AncestorMethodStructure.should_receive(:build).with(anything, hash_including(:mock_option => :mock_value))
|
33
33
|
MethodInfo::OptionHandler.handle(:object)
|
34
34
|
end
|
35
35
|
it "uses a value for an option if it was passed in" do
|
36
|
-
MethodInfo::OptionHandler.stub!(:default_profile).and_return({ :mock_option
|
36
|
+
MethodInfo::OptionHandler.stub!(:default_profile).and_return({ :mock_option => :mock_value })
|
37
37
|
AncestorMethodStructure.should_receive(:build).with(anything, hash_including(:mock_option => :passed_value))
|
38
38
|
MethodInfo::OptionHandler.handle(:object, :mock_option => :passed_value)
|
39
39
|
end
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: method_info
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 0
|
7
|
+
- 1
|
8
|
+
- 11
|
9
|
+
version: 0.1.11
|
5
10
|
platform: ruby
|
6
11
|
authors:
|
7
12
|
- Tom ten Thij
|
@@ -14,24 +19,30 @@ default_executable:
|
|
14
19
|
dependencies:
|
15
20
|
- !ruby/object:Gem::Dependency
|
16
21
|
name: rspec
|
17
|
-
|
18
|
-
|
19
|
-
version_requirements: !ruby/object:Gem::Requirement
|
22
|
+
prerelease: false
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
20
24
|
requirements:
|
21
25
|
- - ">="
|
22
26
|
- !ruby/object:Gem::Version
|
27
|
+
segments:
|
28
|
+
- 1
|
29
|
+
- 2
|
30
|
+
- 9
|
23
31
|
version: 1.2.9
|
24
|
-
|
32
|
+
type: :development
|
33
|
+
version_requirements: *id001
|
25
34
|
- !ruby/object:Gem::Dependency
|
26
35
|
name: cucumber
|
27
|
-
|
28
|
-
|
29
|
-
version_requirements: !ruby/object:Gem::Requirement
|
36
|
+
prerelease: false
|
37
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
30
38
|
requirements:
|
31
39
|
- - ">="
|
32
40
|
- !ruby/object:Gem::Version
|
41
|
+
segments:
|
42
|
+
- 0
|
33
43
|
version: "0"
|
34
|
-
|
44
|
+
type: :development
|
45
|
+
version_requirements: *id002
|
35
46
|
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
|
36
47
|
email: method_info@tomtenthij.nl
|
37
48
|
executables: []
|
@@ -76,18 +87,20 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
76
87
|
requirements:
|
77
88
|
- - ">="
|
78
89
|
- !ruby/object:Gem::Version
|
90
|
+
segments:
|
91
|
+
- 0
|
79
92
|
version: "0"
|
80
|
-
version:
|
81
93
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
82
94
|
requirements:
|
83
95
|
- - ">="
|
84
96
|
- !ruby/object:Gem::Version
|
97
|
+
segments:
|
98
|
+
- 0
|
85
99
|
version: "0"
|
86
|
-
version:
|
87
100
|
requirements: []
|
88
101
|
|
89
102
|
rubyforge_project:
|
90
|
-
rubygems_version: 1.3.
|
103
|
+
rubygems_version: 1.3.6
|
91
104
|
signing_key:
|
92
105
|
specification_version: 3
|
93
106
|
summary: Get info about an object's methods
|