reflectorr 0.1.0 → 0.2.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/README.rdoc +4 -0
- data/VERSION +1 -1
- data/lib/reflectorr.rb +22 -14
- data/reflectorr.gemspec +2 -2
- data/test/fixtures/first_class.rb +37 -14
- data/test/test_show_methods.rb +30 -46
- metadata +3 -3
data/README.rdoc
CHANGED
@@ -106,6 +106,10 @@ available yet. So keep this in mind also.
|
|
106
106
|
|
107
107
|
So have fun, I hope you'll learn from it, and find it useful. If not, just discard this :).
|
108
108
|
|
109
|
+
== History
|
110
|
+
|
111
|
+
0.2.0: Total rewrite in order to include more ways of extending/excluding your class in the result.
|
112
|
+
|
109
113
|
== Note on Patches/Pull Requests
|
110
114
|
|
111
115
|
* Fork the project.
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.2.0
|
data/lib/reflectorr.rb
CHANGED
@@ -1,21 +1,29 @@
|
|
1
|
-
#module ShowMethods
|
2
1
|
class Object
|
3
2
|
def show_methods
|
4
3
|
result = {}
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
4
|
+
self.class.ancestors.each do |a|
|
5
|
+
result[a.name]=[]
|
6
|
+
a.instance_methods(false).sort.each do |m|
|
7
|
+
result[a.name].push m
|
8
|
+
end
|
9
|
+
end
|
10
|
+
result
|
11
|
+
end
|
12
|
+
def self.show_methods
|
13
|
+
result = {}
|
14
|
+
metaclass = class << self; self; end
|
15
|
+
self.ancestors.each do |a|
|
16
|
+
result[a.name] ||= []
|
17
|
+
a.singleton_methods(false).sort.each do |m|
|
18
|
+
result[a.name].push m
|
19
|
+
end
|
20
|
+
end
|
21
|
+
metaclass.ancestors.each do |a|
|
22
|
+
result[a.name] ||= []
|
23
|
+
a.instance_methods(false).sort.each do |m|
|
24
|
+
result[a.name].push m
|
25
|
+
end
|
17
26
|
end
|
18
27
|
result
|
19
28
|
end
|
20
29
|
end
|
21
|
-
#end
|
data/reflectorr.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{reflectorr}
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.2.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Christiaan Van den Poel"]
|
12
|
-
s.date = %q{2010-
|
12
|
+
s.date = %q{2010-03-16}
|
13
13
|
s.description = %q{This simple gem will show you all the methods you can use at the place where you call the method 'show_methods'}
|
14
14
|
s.email = %q{christiaan@oneye.be}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -1,24 +1,47 @@
|
|
1
|
+
module Helpers
|
2
|
+
def first_helper
|
3
|
+
|
4
|
+
end
|
5
|
+
def self.second_helper
|
6
|
+
end
|
7
|
+
end
|
8
|
+
|
9
|
+
module ClassMethods
|
10
|
+
def class_method
|
11
|
+
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
module HelpersViaInclude
|
16
|
+
def self.included(klass)
|
17
|
+
klass.send(:extend ,ClassMethods)
|
18
|
+
end
|
19
|
+
module ClassMethods
|
20
|
+
def included_class_method
|
21
|
+
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
1
26
|
module ShowMethods
|
2
27
|
module Fixtures
|
3
|
-
class
|
4
|
-
|
5
|
-
|
28
|
+
class ClassWithSomeMethods
|
29
|
+
include ::Helpers
|
30
|
+
extend ::ClassMethods
|
31
|
+
include ::HelpersViaInclude
|
32
|
+
def one
|
33
|
+
|
6
34
|
end
|
7
|
-
|
8
|
-
|
9
|
-
def second_simple_method
|
10
|
-
""
|
35
|
+
def two
|
36
|
+
|
11
37
|
end
|
12
|
-
|
13
|
-
|
14
|
-
def self.third_method
|
15
|
-
""
|
38
|
+
def self.three
|
39
|
+
|
16
40
|
end
|
17
|
-
|
18
|
-
class FourthClass < ThirdClass
|
19
|
-
def self.fourth_method
|
41
|
+
def self.four
|
20
42
|
|
21
43
|
end
|
22
44
|
end
|
23
45
|
end
|
24
46
|
end
|
47
|
+
|
data/test/test_show_methods.rb
CHANGED
@@ -1,55 +1,39 @@
|
|
1
1
|
require 'helper'
|
2
|
+
require 'json'
|
2
3
|
|
3
4
|
class TestShowMethods < Test::Unit::TestCase
|
4
|
-
context "instance methods" do
|
5
|
-
|
6
|
-
|
7
|
-
result = ShowMethods::Fixtures::FirstClass.new.send(:show_methods)
|
8
|
-
assert result.is_a?(Hash), "Result should be an Hash"
|
9
|
-
"ShowMethods::Fixtures::FirstClass".tap do |m|
|
10
|
-
assert result.has_key?(m), "the module ShowMethods should be a key in the result hash"
|
11
|
-
assert_contains result[m], "simple_method", "the method 'simple_method' should be in the result"
|
12
|
-
end
|
13
|
-
end
|
5
|
+
context "Class With some instance methods" do
|
6
|
+
setup do
|
7
|
+
@result = ShowMethods::Fixtures::ClassWithSomeMethods.new.show_methods
|
14
8
|
end
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
assert_contains result[m], "second_simple_method"
|
23
|
-
end
|
24
|
-
"ShowMethods::Fixtures::FirstClass".tap do |m|
|
25
|
-
assert result.has_key?(m), "the module ShowMethods should be a key in the result hash"
|
26
|
-
assert_contains result[m], "simple_method", "the method 'simple_method' should be in the result"
|
27
|
-
end
|
28
|
-
end
|
9
|
+
should "show the instance methods from its own class" do
|
10
|
+
assert @result.has_key?("ShowMethods::Fixtures::ClassWithSomeMethods")
|
11
|
+
assert_same_elements @result["ShowMethods::Fixtures::ClassWithSomeMethods"], ["one", "two"]
|
12
|
+
end
|
13
|
+
should "show the methods from the included Helpers module" do
|
14
|
+
assert @result.has_key?("Helpers")
|
15
|
+
assert_same_elements @result["Helpers"], ["first_helper"]
|
29
16
|
end
|
30
17
|
end
|
31
|
-
context "class methods" do
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
assert_contains result[m], "third_method"
|
51
|
-
end
|
52
|
-
end
|
18
|
+
context "class with some class methods" do
|
19
|
+
setup do
|
20
|
+
@result = ShowMethods::Fixtures::ClassWithSomeMethods.show_methods
|
21
|
+
end
|
22
|
+
should "show the class methods" do
|
23
|
+
assert @result.has_key?("ShowMethods::Fixtures::ClassWithSomeMethods")
|
24
|
+
assert_same_elements @result["ShowMethods::Fixtures::ClassWithSomeMethods"], ["three", "four"]
|
25
|
+
end
|
26
|
+
should "show the class methods defined in another module" do
|
27
|
+
assert @result.has_key?("Helpers")
|
28
|
+
assert_same_elements @result["Helpers"], ["second_helper"]
|
29
|
+
end
|
30
|
+
should "show the class methods from the module via extend" do
|
31
|
+
assert @result.has_key?("ClassMethods")
|
32
|
+
assert_same_elements @result["ClassMethods"], ["class_method"]
|
33
|
+
end
|
34
|
+
should "show the class methods from the HelpersViaInclude module" do
|
35
|
+
assert @result.has_key?("HelpersViaInclude::ClassMethods")
|
36
|
+
assert_same_elements @result["HelpersViaInclude::ClassMethods"], ["included_class_method"]
|
53
37
|
end
|
54
38
|
end
|
55
39
|
end
|
metadata
CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
|
|
4
4
|
prerelease: false
|
5
5
|
segments:
|
6
6
|
- 0
|
7
|
-
-
|
7
|
+
- 2
|
8
8
|
- 0
|
9
|
-
version: 0.
|
9
|
+
version: 0.2.0
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Christiaan Van den Poel
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-
|
17
|
+
date: 2010-03-16 00:00:00 +01:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|