nullobject 0.0.5 → 0.0.6
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/.rubocop.yml +43 -0
- data/.travis.yml +9 -3
- data/Gemfile +1 -1
- data/LICENSE +2 -0
- data/README.md +6 -3
- data/Rakefile +4 -4
- data/lib/nullobject.rb +26 -11
- data/lib/nullobject/version.rb +1 -1
- data/nullobject.gemspec +9 -10
- data/spec/lib/nullobject_spec.rb +1 -5
- data/spec/spec_helper.rb +7 -9
- metadata +25 -37
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 4c8b143cba5bf793cf65e43bb65924fe7d71ae62
|
4
|
+
data.tar.gz: 3e258489537fae4e9d3af3b26c640a2d326d3b85
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: d195c6061b75bb1d26d5b78190f88919b592ee81bbf6af7c04f185f6390e0f50181ccd3979a4c732bad2542ef34f413feda0455d2ba8d6d77335f85d8aa6612d
|
7
|
+
data.tar.gz: 5ba4b97f662133752ab01d7dfea91dde9a670478c8aee0b9037d78e97a6662dc13692a3438b13b8c1ec500e8b5c51a9f9dd998f0fedb3adc3ba8f938a23b6e88
|
data/.rubocop.yml
ADDED
@@ -0,0 +1,43 @@
|
|
1
|
+
Metrics/AbcSize:
|
2
|
+
Max: 18
|
3
|
+
Exclude:
|
4
|
+
- "test/**/*_test.rb"
|
5
|
+
|
6
|
+
Metrics/LineLength:
|
7
|
+
Max: 120
|
8
|
+
|
9
|
+
Metrics/MethodLength:
|
10
|
+
Max: 11
|
11
|
+
Exclude:
|
12
|
+
- "test/**/*_test.rb"
|
13
|
+
|
14
|
+
Style/Documentation:
|
15
|
+
Enabled: false
|
16
|
+
|
17
|
+
Style/NumericLiterals:
|
18
|
+
Enabled: false
|
19
|
+
|
20
|
+
Style/StringLiterals:
|
21
|
+
EnforcedStyle: double_quotes
|
22
|
+
|
23
|
+
Style/StringLiteralsInInterpolation:
|
24
|
+
EnforcedStyle: double_quotes
|
25
|
+
|
26
|
+
Style/TrivialAccessors:
|
27
|
+
AllowDSLWriters: true
|
28
|
+
|
29
|
+
Style/MethodCalledOnDoEndBlock:
|
30
|
+
Enabled: true
|
31
|
+
|
32
|
+
Style/Send:
|
33
|
+
Enabled: true
|
34
|
+
|
35
|
+
Style/CollectionMethods:
|
36
|
+
Enabled: true
|
37
|
+
|
38
|
+
Style/FileName:
|
39
|
+
Enabled: false
|
40
|
+
|
41
|
+
Style/Send:
|
42
|
+
Enabled: false
|
43
|
+
|
data/.travis.yml
CHANGED
data/Gemfile
CHANGED
data/LICENSE
CHANGED
data/README.md
CHANGED
@@ -6,9 +6,12 @@
|
|
6
6
|
The intent of a Null Object is to encapsulate the absence of an object by providing a substitutable alternative that offers suitable default do nothing behavior. In short, a design where “nothing will come of nothing”
|
7
7
|
|
8
8
|
More about Null Object Pattern you can find here:
|
9
|
-
|
10
|
-
[http://
|
11
|
-
[http://
|
9
|
+
|
10
|
+
* [http://en.wikipedia.org/wiki/Null_Object_pattern](http://en.wikipedia.org/wiki/Null_Object_pattern)
|
11
|
+
* [http://sourcemaking.com/design_patterns/null_object](http://sourcemaking.com/design_patterns/null_object)
|
12
|
+
* [http://avdi.org/devblog/2011/05/30/null-objects-and-falsiness](http://avdi.org/devblog/2011/05/30/null-objects-and-falsiness/)
|
13
|
+
|
14
|
+
See also the [avdi/naught](https://github.com/avdi/naught) gem for extended variations of the null object pattern for Ruby 1.9.
|
12
15
|
|
13
16
|
## Usage
|
14
17
|
|
data/Rakefile
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
#!/usr/bin/env rake
|
2
|
-
require
|
3
|
-
require
|
2
|
+
require "rake/testtask"
|
3
|
+
require "bundler/gem_tasks"
|
4
4
|
Bundler.setup(:default, :test)
|
5
5
|
|
6
6
|
Rake::TestTask.new do |t|
|
7
7
|
t.libs << "spec"
|
8
|
-
t.test_files = FileList[
|
8
|
+
t.test_files = FileList["spec/**/*_spec.rb"]
|
9
9
|
t.verbose = true
|
10
10
|
end
|
11
11
|
|
12
|
-
task :
|
12
|
+
task default: :test
|
data/lib/nullobject.rb
CHANGED
@@ -1,32 +1,47 @@
|
|
1
1
|
require "singleton"
|
2
2
|
|
3
3
|
module Null
|
4
|
-
|
5
4
|
def self.included(base)
|
6
5
|
base.send(:include, Singleton)
|
7
6
|
end
|
8
7
|
|
9
|
-
def to_a
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
def
|
14
|
-
|
8
|
+
def to_a
|
9
|
+
[]
|
10
|
+
end
|
11
|
+
|
12
|
+
def to_ary
|
13
|
+
[]
|
14
|
+
end
|
15
|
+
|
16
|
+
def to_s
|
17
|
+
""
|
18
|
+
end
|
19
|
+
|
20
|
+
def to_f
|
21
|
+
0.0
|
22
|
+
end
|
23
|
+
|
24
|
+
def to_i
|
25
|
+
0
|
26
|
+
end
|
27
|
+
|
28
|
+
def nil?
|
29
|
+
true
|
30
|
+
end
|
15
31
|
|
16
32
|
def inspect
|
17
|
-
"#<%s:0x%x>"
|
33
|
+
format("#<%s:0x%x>", self.class, object_id)
|
18
34
|
end
|
19
35
|
|
20
|
-
def method_missing(*
|
36
|
+
def method_missing(*_args, &_block)
|
21
37
|
self
|
22
38
|
end
|
23
39
|
|
24
|
-
def respond_to?(
|
40
|
+
def respond_to?(_message, _include_private = false)
|
25
41
|
true
|
26
42
|
end
|
27
43
|
|
28
44
|
class Object
|
29
45
|
include Null
|
30
46
|
end
|
31
|
-
|
32
47
|
end
|
data/lib/nullobject/version.rb
CHANGED
data/nullobject.gemspec
CHANGED
@@ -1,23 +1,22 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
-
require File.expand_path(
|
2
|
+
require File.expand_path("../lib/nullobject/version", __FILE__)
|
3
3
|
|
4
4
|
Gem::Specification.new do |gem|
|
5
5
|
gem.authors = ["Marcin Ciunelis"]
|
6
6
|
gem.email = ["marcin.ciunelis@gmail.com"]
|
7
|
-
gem.description =
|
8
|
-
gem.summary =
|
9
|
-
gem.homepage = ""
|
7
|
+
gem.description = "Null Object Design Pattern Ruby implementation"
|
8
|
+
gem.summary = ""
|
9
|
+
gem.homepage = "https://github.com/martinciu/nullobject"
|
10
|
+
gem.license = "MIT"
|
10
11
|
|
11
|
-
gem.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
12
|
+
gem.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
|
12
13
|
gem.files = `git ls-files`.split("\n")
|
13
14
|
gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
14
15
|
gem.name = "nullobject"
|
15
16
|
gem.require_paths = ["lib"]
|
16
17
|
gem.version = Nullobject::VERSION
|
17
18
|
|
18
|
-
|
19
|
-
gem.add_development_dependency "
|
20
|
-
gem.add_development_dependency "
|
21
|
-
gem.add_development_dependency "turn", "~> 0.8.3"
|
22
|
-
|
19
|
+
gem.add_development_dependency "rake", "~> 10.4.2"
|
20
|
+
gem.add_development_dependency "minitest", "~> 4.7.5"
|
21
|
+
gem.add_development_dependency "turn", "~> 0.9.7"
|
23
22
|
end
|
data/spec/lib/nullobject_spec.rb
CHANGED
@@ -1,7 +1,6 @@
|
|
1
|
-
require
|
1
|
+
require "spec_helper"
|
2
2
|
|
3
3
|
describe "Null::Object" do
|
4
|
-
|
5
4
|
describe "instance methods" do
|
6
5
|
before do
|
7
6
|
@it = Null::Object.instance
|
@@ -80,8 +79,5 @@ describe "Null::Object" do
|
|
80
79
|
it "#to_bar returns 'nothing_here'" do
|
81
80
|
@it.to_bar.must_equal "nothing here"
|
82
81
|
end
|
83
|
-
|
84
82
|
end
|
85
|
-
|
86
83
|
end
|
87
|
-
|
data/spec/spec_helper.rb
CHANGED
@@ -1,14 +1,12 @@
|
|
1
|
-
require
|
2
|
-
require
|
1
|
+
require "rubygems"
|
2
|
+
require "bundler"
|
3
3
|
Bundler.setup(:default, :test)
|
4
4
|
Bundler.require(:default, :test)
|
5
5
|
|
6
6
|
dir = File.dirname(File.expand_path(__FILE__))
|
7
|
-
$LOAD_PATH.unshift dir +
|
8
|
-
|
9
|
-
require
|
10
|
-
require
|
11
|
-
require 'turn'
|
12
|
-
|
13
|
-
require 'nullobject'
|
7
|
+
$LOAD_PATH.unshift dir + "/../lib"
|
8
|
+
require "minitest/spec"
|
9
|
+
require "minitest/autorun"
|
10
|
+
require "turn"
|
14
11
|
|
12
|
+
require "nullobject"
|
metadata
CHANGED
@@ -1,64 +1,57 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nullobject
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.0.6
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Marcin Ciunelis
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2017-03-09 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: rake
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- - ~>
|
17
|
+
- - "~>"
|
20
18
|
- !ruby/object:Gem::Version
|
21
|
-
version:
|
19
|
+
version: 10.4.2
|
22
20
|
type: :development
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- - ~>
|
24
|
+
- - "~>"
|
28
25
|
- !ruby/object:Gem::Version
|
29
|
-
version:
|
26
|
+
version: 10.4.2
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: minitest
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- - ~>
|
31
|
+
- - "~>"
|
36
32
|
- !ruby/object:Gem::Version
|
37
|
-
version:
|
33
|
+
version: 4.7.5
|
38
34
|
type: :development
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
|
-
- - ~>
|
38
|
+
- - "~>"
|
44
39
|
- !ruby/object:Gem::Version
|
45
|
-
version:
|
40
|
+
version: 4.7.5
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: turn
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
|
-
- - ~>
|
45
|
+
- - "~>"
|
52
46
|
- !ruby/object:Gem::Version
|
53
|
-
version: 0.
|
47
|
+
version: 0.9.7
|
54
48
|
type: :development
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
|
-
- - ~>
|
52
|
+
- - "~>"
|
60
53
|
- !ruby/object:Gem::Version
|
61
|
-
version: 0.
|
54
|
+
version: 0.9.7
|
62
55
|
description: Null Object Design Pattern Ruby implementation
|
63
56
|
email:
|
64
57
|
- marcin.ciunelis@gmail.com
|
@@ -66,8 +59,9 @@ executables: []
|
|
66
59
|
extensions: []
|
67
60
|
extra_rdoc_files: []
|
68
61
|
files:
|
69
|
-
- .gitignore
|
70
|
-
- .
|
62
|
+
- ".gitignore"
|
63
|
+
- ".rubocop.yml"
|
64
|
+
- ".travis.yml"
|
71
65
|
- Gemfile
|
72
66
|
- LICENSE
|
73
67
|
- README.md
|
@@ -77,35 +71,29 @@ files:
|
|
77
71
|
- nullobject.gemspec
|
78
72
|
- spec/lib/nullobject_spec.rb
|
79
73
|
- spec/spec_helper.rb
|
80
|
-
homepage:
|
81
|
-
licenses:
|
74
|
+
homepage: https://github.com/martinciu/nullobject
|
75
|
+
licenses:
|
76
|
+
- MIT
|
77
|
+
metadata: {}
|
82
78
|
post_install_message:
|
83
79
|
rdoc_options: []
|
84
80
|
require_paths:
|
85
81
|
- lib
|
86
82
|
required_ruby_version: !ruby/object:Gem::Requirement
|
87
|
-
none: false
|
88
83
|
requirements:
|
89
|
-
- -
|
84
|
+
- - ">="
|
90
85
|
- !ruby/object:Gem::Version
|
91
86
|
version: '0'
|
92
|
-
segments:
|
93
|
-
- 0
|
94
|
-
hash: 4565374374475709443
|
95
87
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
96
|
-
none: false
|
97
88
|
requirements:
|
98
|
-
- -
|
89
|
+
- - ">="
|
99
90
|
- !ruby/object:Gem::Version
|
100
91
|
version: '0'
|
101
|
-
segments:
|
102
|
-
- 0
|
103
|
-
hash: 4565374374475709443
|
104
92
|
requirements: []
|
105
93
|
rubyforge_project:
|
106
|
-
rubygems_version:
|
94
|
+
rubygems_version: 2.6.8
|
107
95
|
signing_key:
|
108
|
-
specification_version:
|
96
|
+
specification_version: 4
|
109
97
|
summary: ''
|
110
98
|
test_files:
|
111
99
|
- spec/lib/nullobject_spec.rb
|