nil_or 0.0.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.
- checksums.yaml +7 -0
- data/.gitignore +17 -0
- data/Gemfile +5 -0
- data/Gemfile.lock +24 -0
- data/README.md +1 -0
- data/Rakefile +1 -0
- data/lib/nil_or.rb +23 -0
- data/nil_or.gemspec +19 -0
- data/spec/lib/nil_or_spec.rb +77 -0
- data/spec/spec_helper.rb +7 -0
- metadata +54 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 1a5c9ed505c1f36bbfaf2e040c111ccba5ea4b5b
|
4
|
+
data.tar.gz: f5867290848fd7759065c00fbf0a87392d380953
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: f4c5b30013697364e79de1b24e4fed4849f2aaa1f17d2966875cbdd7861f753dcac2fb9944079dc799d34ab72f85e8dcb061150d1bc398d84ec557483dc5edb3
|
7
|
+
data.tar.gz: 50a939a9bc87ff0e8c77edf63a394ac31f08f520e24cdfd247623717c01164ac4b8a5622a51ef0d5a671308348a6605d289616800816db680a52a36a487ec67a
|
data/.gitignore
ADDED
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
nil_or (0.0.1)
|
5
|
+
|
6
|
+
GEM
|
7
|
+
remote: http://rubygems.org/
|
8
|
+
specs:
|
9
|
+
diff-lcs (1.1.3)
|
10
|
+
rspec (2.12.0)
|
11
|
+
rspec-core (~> 2.12.0)
|
12
|
+
rspec-expectations (~> 2.12.0)
|
13
|
+
rspec-mocks (~> 2.12.0)
|
14
|
+
rspec-core (2.12.1)
|
15
|
+
rspec-expectations (2.12.0)
|
16
|
+
diff-lcs (~> 1.1.3)
|
17
|
+
rspec-mocks (2.12.0)
|
18
|
+
|
19
|
+
PLATFORMS
|
20
|
+
ruby
|
21
|
+
|
22
|
+
DEPENDENCIES
|
23
|
+
nil_or!
|
24
|
+
rspec
|
data/README.md
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
# nil_or
|
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require 'bundler/gem_tasks'
|
data/lib/nil_or.rb
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
module NilOr
|
2
|
+
class NilOrDelegate < BasicObject
|
3
|
+
attr_accessor :delegation_target
|
4
|
+
|
5
|
+
def initialize(delegation_target)
|
6
|
+
@delegation_target = delegation_target
|
7
|
+
end
|
8
|
+
|
9
|
+
def method_missing(method, *attributes, &block)
|
10
|
+
@delegation_target.nil? ? nil :
|
11
|
+
@delegation_target.__send__(method, *attributes, &block)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def nil_or
|
16
|
+
NilOrDelegate.new(self)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
class BasicObject
|
21
|
+
include ::NilOr
|
22
|
+
end
|
23
|
+
|
data/nil_or.gemspec
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
|
4
|
+
Gem::Specification.new do |s|
|
5
|
+
s.name = "nil_or"
|
6
|
+
s.version = "0.0.1"
|
7
|
+
s.authors = ["Oded Niv"]
|
8
|
+
s.email = ["oded.niv@gmail.com"]
|
9
|
+
s.homepage = "https://github.com/toplex/nil_or"
|
10
|
+
s.summary = %q{Execute Unless Nil}
|
11
|
+
s.description = %q{Delegates methods to the object or returns nil.}
|
12
|
+
|
13
|
+
s.rubyforge_project = "nil_or"
|
14
|
+
|
15
|
+
s.files = `git ls-files`.split("\n")
|
16
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
17
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
18
|
+
s.require_paths = ["lib"]
|
19
|
+
end
|
@@ -0,0 +1,77 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
class HistoryMock
|
4
|
+
attr_reader :calls
|
5
|
+
def initialize
|
6
|
+
@calls = []
|
7
|
+
end
|
8
|
+
|
9
|
+
def method_missing(method, *args, &block)
|
10
|
+
calls << [method, args, block]
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
describe NilOr do
|
15
|
+
let(:delegate) { target.nil_or }
|
16
|
+
|
17
|
+
context "nil" do
|
18
|
+
let(:target) { nil }
|
19
|
+
|
20
|
+
context "no arguments" do
|
21
|
+
context "no block" do
|
22
|
+
subject { delegate.some_attribute }
|
23
|
+
it { should be_nil }
|
24
|
+
end
|
25
|
+
|
26
|
+
context "with block" do
|
27
|
+
let(:block) { lambda { do_nothing } }
|
28
|
+
subject { delegate.some_iterator(&block) }
|
29
|
+
it { should be_nil }
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
context "with arguments" do
|
34
|
+
context "no block" do
|
35
|
+
subject { delegate.some_method(1, 2) }
|
36
|
+
it { should be_nil }
|
37
|
+
end
|
38
|
+
|
39
|
+
context "with block" do
|
40
|
+
let(:block) { lambda { do_nothing } }
|
41
|
+
subject { delegate.some_method(1, 2, &block) }
|
42
|
+
it { should be_nil }
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
context "not nil" do
|
48
|
+
let(:target) { HistoryMock.new }
|
49
|
+
subject { target.calls }
|
50
|
+
|
51
|
+
context "no arguments" do
|
52
|
+
context "no block" do
|
53
|
+
before { delegate.some_attribute }
|
54
|
+
it { should include([:some_attribute, [], nil]) }
|
55
|
+
end
|
56
|
+
|
57
|
+
context "with block" do
|
58
|
+
let(:block) { lambda { do_nothing } }
|
59
|
+
before { delegate.some_iterator(&block) }
|
60
|
+
it { should include([:some_iterator, [], block]) }
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
context "with arguments" do
|
65
|
+
context "no block" do
|
66
|
+
before { delegate.some_method(1, 2) }
|
67
|
+
it { should include([:some_method, [1, 2], nil]) }
|
68
|
+
end
|
69
|
+
|
70
|
+
context "with block" do
|
71
|
+
let(:block) { lambda { do_nothing } }
|
72
|
+
before { delegate.some_method(1, 2, &block) }
|
73
|
+
it { should include([:some_method, [1, 2], block]) }
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
data/spec/spec_helper.rb
ADDED
metadata
ADDED
@@ -0,0 +1,54 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: nil_or
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Oded Niv
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2013-04-28 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
13
|
+
description: Delegates methods to the object or returns nil.
|
14
|
+
email:
|
15
|
+
- oded.niv@gmail.com
|
16
|
+
executables: []
|
17
|
+
extensions: []
|
18
|
+
extra_rdoc_files: []
|
19
|
+
files:
|
20
|
+
- .gitignore
|
21
|
+
- Gemfile
|
22
|
+
- Gemfile.lock
|
23
|
+
- README.md
|
24
|
+
- Rakefile
|
25
|
+
- lib/nil_or.rb
|
26
|
+
- nil_or.gemspec
|
27
|
+
- spec/lib/nil_or_spec.rb
|
28
|
+
- spec/spec_helper.rb
|
29
|
+
homepage: https://github.com/toplex/nil_or
|
30
|
+
licenses: []
|
31
|
+
metadata: {}
|
32
|
+
post_install_message:
|
33
|
+
rdoc_options: []
|
34
|
+
require_paths:
|
35
|
+
- lib
|
36
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
42
|
+
requirements:
|
43
|
+
- - '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
46
|
+
requirements: []
|
47
|
+
rubyforge_project: nil_or
|
48
|
+
rubygems_version: 2.0.3
|
49
|
+
signing_key:
|
50
|
+
specification_version: 4
|
51
|
+
summary: Execute Unless Nil
|
52
|
+
test_files:
|
53
|
+
- spec/lib/nil_or_spec.rb
|
54
|
+
- spec/spec_helper.rb
|