included-in 0.2.0 → 0.2.1
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.tar.gz.sig +0 -0
- data/CHANGELOG +6 -1
- data/Manifest +3 -0
- data/Rakefile +1 -1
- data/included-in.gemspec +3 -3
- data/lib/included_in/object/inclusion.rb +10 -3
- data/spec/included_in/object/inclusion_spec.rb +68 -0
- data/spec/spec_helper.rb +1 -0
- metadata +7 -5
- metadata.gz.sig +0 -0
data.tar.gz.sig
CHANGED
Binary file
|
data/CHANGELOG
CHANGED
@@ -1,3 +1,8 @@
|
|
1
|
+
* v 0.2.1
|
2
|
+
|
3
|
+
Changed the way it checks for error to reduce the upfront cost of checking #respond_to? and now just catching NoMethodError (no additional cost)
|
4
|
+
|
1
5
|
* v 0.2.0
|
2
6
|
|
3
|
-
Mimics the way ActiveSupport 3.1 calls the method and organizes the code. Object#included_in? => Object#in?
|
7
|
+
Mimics the way ActiveSupport 3.1 calls the method and organizes the code. Object#included_in? => Object#in?
|
8
|
+
|
data/Manifest
CHANGED
data/Rakefile
CHANGED
@@ -2,7 +2,7 @@ require 'rubygems'
|
|
2
2
|
require 'rake'
|
3
3
|
require 'echoe'
|
4
4
|
|
5
|
-
Echoe.new('included-in', '0.2.
|
5
|
+
Echoe.new('included-in', '0.2.1') do |p|
|
6
6
|
p.description = "Adds an included_in? method to Object for a more readable syntax of include?"
|
7
7
|
p.url = "https://github.com/jaredonline/included-in"
|
8
8
|
p.author = "Jared McFarland"
|
data/included-in.gemspec
CHANGED
@@ -2,16 +2,16 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = %q{included-in}
|
5
|
-
s.version = "0.2.
|
5
|
+
s.version = "0.2.1"
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = ["Jared McFarland"]
|
9
9
|
s.cert_chain = ["/Users/jared/gems/keys/gem-public_cert.pem"]
|
10
|
-
s.date = %q{2011-04-
|
10
|
+
s.date = %q{2011-04-14}
|
11
11
|
s.description = %q{Adds an included_in? method to Object for a more readable syntax of include?}
|
12
12
|
s.email = %q{jared.online@gmail.com}
|
13
13
|
s.extra_rdoc_files = ["CHANGELOG", "README.rdoc", "lib/included_in.rb", "lib/included_in/object.rb", "lib/included_in/object/inclusion.rb"]
|
14
|
-
s.files = ["CHANGELOG", "README.rdoc", "Rakefile", "init.rb", "lib/included_in.rb", "lib/included_in/object.rb", "lib/included_in/object/inclusion.rb", "
|
14
|
+
s.files = ["CHANGELOG", "README.rdoc", "Rakefile", "included-in.gemspec", "init.rb", "lib/included_in.rb", "lib/included_in/object.rb", "lib/included_in/object/inclusion.rb", "spec/included_in/object/inclusion_spec.rb", "spec/spec_helper.rb", "Manifest"]
|
15
15
|
s.homepage = %q{https://github.com/jaredonline/included-in}
|
16
16
|
s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Included-in", "--main", "README.rdoc"]
|
17
17
|
s.require_paths = ["lib"]
|
@@ -1,9 +1,16 @@
|
|
1
1
|
class Object
|
2
|
-
|
2
|
+
# Returns true if this object is included in the argument. Argument must be
|
3
|
+
# any object which respond to +#include?+. Usage:
|
4
|
+
#
|
5
|
+
# characters = ["Konata", "Kagami", "Tsukasa"]
|
6
|
+
# "Konata".in?(characters) # => true
|
7
|
+
#
|
8
|
+
# This will throw an ArgumentError if the supplied argument doesnt not respond
|
9
|
+
# to +#include?+.
|
3
10
|
def in?(object)
|
4
|
-
raise ArgumentError.new("You must supply an argument that responds to include?") unless object.respond_to?(:include?)
|
5
|
-
|
6
11
|
object.include?(self)
|
12
|
+
rescue NoMethodError
|
13
|
+
raise ArgumentError.new("The parameter passed to #in? must respond to #include?")
|
7
14
|
end
|
8
15
|
|
9
16
|
def included_in?(object)
|
@@ -0,0 +1,68 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Object do
|
4
|
+
# test modules for later
|
5
|
+
module A
|
6
|
+
end
|
7
|
+
class B
|
8
|
+
include A
|
9
|
+
end
|
10
|
+
class C < B
|
11
|
+
end
|
12
|
+
|
13
|
+
it "should respond to in?" do
|
14
|
+
object = Object.new
|
15
|
+
object.respond_to?(:in?).should == true
|
16
|
+
end
|
17
|
+
|
18
|
+
context 'it is included in another object' do
|
19
|
+
it "should return true for an array" do
|
20
|
+
1.in?([1, 2]).should == true
|
21
|
+
end
|
22
|
+
|
23
|
+
it "should return true for a hash" do
|
24
|
+
"a".in?({"a" => 100, "b" => 200}).should == true
|
25
|
+
end
|
26
|
+
|
27
|
+
it "should return true for a string" do
|
28
|
+
"lo".in?("Hello").should == true
|
29
|
+
end
|
30
|
+
|
31
|
+
it "should return true for a set" do
|
32
|
+
4.in?(1..10).should == true
|
33
|
+
end
|
34
|
+
|
35
|
+
it "should return true for a module" do
|
36
|
+
A.in?(B).should == true
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
context 'it is not included in another object' do
|
41
|
+
it "should return false for an array" do
|
42
|
+
1.in?([3, 4]).should == false
|
43
|
+
end
|
44
|
+
|
45
|
+
it "should return false for a hash" do
|
46
|
+
"a".in?({"c" => 300, "d" => 400}).should == false
|
47
|
+
end
|
48
|
+
|
49
|
+
it "should return false for a string" do
|
50
|
+
"World".in?("Hello").should == false
|
51
|
+
end
|
52
|
+
|
53
|
+
it "should return false for a set" do
|
54
|
+
1.in?(5..10).should == false
|
55
|
+
end
|
56
|
+
|
57
|
+
it "should return false for a module" do
|
58
|
+
A.in?(A).should == false
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
context 'supplied object does not respond to #include?' do
|
63
|
+
it 'should raise an argument error' do
|
64
|
+
lambda { 1.in?(1) }.should raise_error ArgumentError
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require 'included_in'
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: included-in
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 21
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 2
|
9
|
-
-
|
10
|
-
version: 0.2.
|
9
|
+
- 1
|
10
|
+
version: 0.2.1
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Jared McFarland
|
@@ -36,7 +36,7 @@ cert_chain:
|
|
36
36
|
ncO2Ggxc146uqG0Yz4o=
|
37
37
|
-----END CERTIFICATE-----
|
38
38
|
|
39
|
-
date: 2011-04-
|
39
|
+
date: 2011-04-14 00:00:00 -07:00
|
40
40
|
default_executable:
|
41
41
|
dependencies: []
|
42
42
|
|
@@ -56,12 +56,14 @@ files:
|
|
56
56
|
- CHANGELOG
|
57
57
|
- README.rdoc
|
58
58
|
- Rakefile
|
59
|
+
- included-in.gemspec
|
59
60
|
- init.rb
|
60
61
|
- lib/included_in.rb
|
61
62
|
- lib/included_in/object.rb
|
62
63
|
- lib/included_in/object/inclusion.rb
|
64
|
+
- spec/included_in/object/inclusion_spec.rb
|
65
|
+
- spec/spec_helper.rb
|
63
66
|
- Manifest
|
64
|
-
- included-in.gemspec
|
65
67
|
has_rdoc: true
|
66
68
|
homepage: https://github.com/jaredonline/included-in
|
67
69
|
licenses: []
|
metadata.gz.sig
CHANGED
Binary file
|