nil_or 1.0.0 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/README.md +45 -21
- data/UNLICENSE +24 -0
- data/lib/nil_or.rb +9 -13
- data/nil_or.gemspec +3 -2
- metadata +10 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: eaa7d0cb1fee3219f241ee02cd8b0638e8eab3f7
|
4
|
+
data.tar.gz: 051b4177d3d83c908e1b25fb83c28720eacd8665
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bc9d01bd57a503ad0b2b11d8bc45645534b0c7dcbb06cc9e5336565b1a06b9ab45bdc28351e4a458f69c8de4ed6e091c5c6b9628cd2b486f03b6a24c7ddd1755
|
7
|
+
data.tar.gz: c2b2321e0c8d291edca1882838337ae049cb28cbd9a9544002969020c457c054f20863fe3bffa4dafede80f5b013ffa69615a340375d40fa352d107457c008e4
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -1,41 +1,65 @@
|
|
1
|
-
# nil_or
|
1
|
+
# nil_or [![Gem Version](https://badge.fury.io/rb/nil_or.svg)](http://badge.fury.io/rb/nil_or)
|
2
2
|
|
3
3
|
Delegates methods to the target unless nil.
|
4
4
|
|
5
|
-
##
|
5
|
+
## Installation
|
6
6
|
|
7
|
-
|
7
|
+
Add this line to your application's Gemfile:
|
8
|
+
|
9
|
+
```ruby
|
10
|
+
gem 'nil_or'
|
11
|
+
```
|
8
12
|
|
9
|
-
|
13
|
+
And then execute:
|
10
14
|
|
11
|
-
|
15
|
+
$ bundle
|
16
|
+
|
17
|
+
Or install it yourself as:
|
18
|
+
|
19
|
+
$ gem install nil_or
|
12
20
|
|
13
21
|
## Usage
|
14
22
|
|
15
23
|
When am I going to need it? Instead of writing:
|
16
24
|
|
17
|
-
|
25
|
+
```ruby
|
26
|
+
date_of_birth = params[:date_of_birth] ? params[:date_of_birth].to_date : nil
|
27
|
+
```
|
18
28
|
|
19
29
|
Write:
|
20
30
|
|
21
|
-
|
31
|
+
```ruby
|
32
|
+
date_of_birth = params[:date_of_birth].nil_or.to_date
|
33
|
+
```
|
22
34
|
|
23
35
|
When x is not nil:
|
24
36
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
37
|
+
```ruby
|
38
|
+
x = 5
|
39
|
+
x.nil_or.to_s
|
40
|
+
=> "5"
|
41
|
+
x.nil_or + 2
|
42
|
+
=> 7
|
43
|
+
x.nil_or.times { |i| puts i }
|
44
|
+
...
|
45
|
+
```
|
32
46
|
|
33
47
|
But when it is nil:
|
34
48
|
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
49
|
+
```ruby
|
50
|
+
x = nil
|
51
|
+
x.nil_or.to_s
|
52
|
+
=> nil
|
53
|
+
x.nil_or + 2
|
54
|
+
=> nil
|
55
|
+
x.nil_or.shakalaka(1, 2) { does_nothing }
|
56
|
+
=> nil
|
57
|
+
```
|
58
|
+
|
59
|
+
## Contributing
|
60
|
+
|
61
|
+
1. Fork it ( https://github.com/odedniv/nil_or/fork )
|
62
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
63
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
64
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
65
|
+
5. Create a new Pull Request
|
data/UNLICENSE
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
This is free and unencumbered software released into the public domain.
|
2
|
+
|
3
|
+
Anyone is free to copy, modify, publish, use, compile, sell, or
|
4
|
+
distribute this software, either in source code form or as a compiled
|
5
|
+
binary, for any purpose, commercial or non-commercial, and by any
|
6
|
+
means.
|
7
|
+
|
8
|
+
In jurisdictions that recognize copyright laws, the author or authors
|
9
|
+
of this software dedicate any and all copyright interest in the
|
10
|
+
software to the public domain. We make this dedication for the benefit
|
11
|
+
of the public at large and to the detriment of our heirs and
|
12
|
+
successors. We intend this dedication to be an overt act of
|
13
|
+
relinquishment in perpetuity of all present and future rights to this
|
14
|
+
software under copyright law.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
19
|
+
IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
20
|
+
OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
21
|
+
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
22
|
+
OTHER DEALINGS IN THE SOFTWARE.
|
23
|
+
|
24
|
+
For more information, please refer to <http://unlicense.org/>
|
data/lib/nil_or.rb
CHANGED
@@ -1,23 +1,19 @@
|
|
1
1
|
module NilOr
|
2
|
-
class
|
3
|
-
|
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)
|
2
|
+
class DSL < BasicObject
|
3
|
+
def method_missing(*)
|
4
|
+
nil
|
12
5
|
end
|
13
6
|
end
|
7
|
+
DSLObject = DSL.new
|
14
8
|
|
15
|
-
|
16
|
-
|
9
|
+
module Methods
|
10
|
+
def nil_or
|
11
|
+
nil? ? DSLObject : self
|
12
|
+
end
|
17
13
|
end
|
18
14
|
end
|
19
15
|
|
20
16
|
class Object
|
21
|
-
include NilOr
|
17
|
+
include NilOr::Methods
|
22
18
|
end
|
23
19
|
|
data/nil_or.gemspec
CHANGED
@@ -3,12 +3,13 @@ $:.push File.expand_path("../lib", __FILE__)
|
|
3
3
|
|
4
4
|
Gem::Specification.new do |s|
|
5
5
|
s.name = "nil_or"
|
6
|
-
s.version = "
|
6
|
+
s.version = "2.0.0"
|
7
7
|
s.authors = ["Oded Niv"]
|
8
8
|
s.email = ["oded.niv@gmail.com"]
|
9
|
-
s.homepage = "https://github.com/
|
9
|
+
s.homepage = "https://github.com/odedniv/nil_or"
|
10
10
|
s.summary = %q{Execute Unless Nil}
|
11
11
|
s.description = %q{Delegates methods to the object or returns nil.}
|
12
|
+
s.license = 'UNLICENSE'
|
12
13
|
|
13
14
|
s.rubyforge_project = "nil_or"
|
14
15
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nil_or
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Oded Niv
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2014-10-29 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Delegates methods to the object or returns nil.
|
14
14
|
email:
|
@@ -17,17 +17,19 @@ executables: []
|
|
17
17
|
extensions: []
|
18
18
|
extra_rdoc_files: []
|
19
19
|
files:
|
20
|
-
- .gitignore
|
20
|
+
- ".gitignore"
|
21
21
|
- Gemfile
|
22
22
|
- Gemfile.lock
|
23
23
|
- README.md
|
24
24
|
- Rakefile
|
25
|
+
- UNLICENSE
|
25
26
|
- lib/nil_or.rb
|
26
27
|
- nil_or.gemspec
|
27
28
|
- spec/lib/nil_or_spec.rb
|
28
29
|
- spec/spec_helper.rb
|
29
|
-
homepage: https://github.com/
|
30
|
-
licenses:
|
30
|
+
homepage: https://github.com/odedniv/nil_or
|
31
|
+
licenses:
|
32
|
+
- UNLICENSE
|
31
33
|
metadata: {}
|
32
34
|
post_install_message:
|
33
35
|
rdoc_options: []
|
@@ -35,17 +37,17 @@ require_paths:
|
|
35
37
|
- lib
|
36
38
|
required_ruby_version: !ruby/object:Gem::Requirement
|
37
39
|
requirements:
|
38
|
-
- -
|
40
|
+
- - ">="
|
39
41
|
- !ruby/object:Gem::Version
|
40
42
|
version: '0'
|
41
43
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
42
44
|
requirements:
|
43
|
-
- -
|
45
|
+
- - ">="
|
44
46
|
- !ruby/object:Gem::Version
|
45
47
|
version: '0'
|
46
48
|
requirements: []
|
47
49
|
rubyforge_project: nil_or
|
48
|
-
rubygems_version: 2.0
|
50
|
+
rubygems_version: 2.2.0
|
49
51
|
signing_key:
|
50
52
|
specification_version: 4
|
51
53
|
summary: Execute Unless Nil
|