naught 0.0.3 → 1.0.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.
- checksums.yaml +4 -4
- data/.rspec +2 -0
- data/.rubocop.yml +74 -0
- data/.travis.yml +20 -2
- data/Changelog.md +8 -2
- data/Gemfile +24 -2
- data/README.markdown +30 -7
- data/Rakefile +11 -2
- data/lib/naught.rb +1 -1
- data/lib/naught/basic_object.rb +17 -0
- data/lib/naught/conversions.rb +55 -0
- data/lib/naught/null_class_builder.rb +33 -21
- data/lib/naught/null_class_builder/command.rb +3 -3
- data/lib/naught/null_class_builder/commands/define_explicit_conversions.rb +3 -7
- data/lib/naught/null_class_builder/commands/define_implicit_conversions.rb +7 -2
- data/lib/naught/null_class_builder/commands/impersonate.rb +2 -3
- data/lib/naught/null_class_builder/commands/mimic.rb +4 -7
- data/lib/naught/null_class_builder/commands/pebble.rb +3 -5
- data/lib/naught/null_class_builder/commands/predicates_return.rb +1 -2
- data/lib/naught/null_class_builder/commands/singleton.rb +1 -1
- data/lib/naught/null_class_builder/commands/traceable.rb +3 -2
- data/lib/naught/version.rb +1 -1
- data/naught.gemspec +11 -16
- data/spec/base_object_spec.rb +2 -2
- data/spec/basic_null_object_spec.rb +3 -3
- data/spec/blackhole_spec.rb +4 -4
- data/spec/explicit_conversions_spec.rb +23 -0
- data/spec/functions/actual_spec.rb +4 -4
- data/spec/functions/just_spec.rb +7 -7
- data/spec/functions/maybe_spec.rb +7 -7
- data/spec/functions/null_spec.rb +6 -6
- data/spec/implicit_conversions_spec.rb +5 -5
- data/spec/mimic_spec.rb +30 -35
- data/spec/naught/null_object_builder/command_spec.rb +1 -1
- data/spec/naught/null_object_builder_spec.rb +5 -5
- data/spec/naught_spec.rb +29 -23
- data/spec/pebble_spec.rb +13 -11
- data/spec/predicate_spec.rb +18 -14
- data/spec/singleton_null_object_spec.rb +4 -4
- data/spec/spec_helper.rb +4 -4
- data/spec/support/convertable_null.rb +2 -2
- data/spec/support/jruby.rb +3 -0
- data/spec/support/rubinius.rb +3 -0
- data/spec/support/ruby_18.rb +3 -0
- metadata +21 -82
- data/lib/naught/null_class_builder/conversions_module.rb +0 -57
- data/spec/conversions_spec.rb +0 -20
@@ -1,57 +0,0 @@
|
|
1
|
-
module Naught
|
2
|
-
class ConversionsModule < Module
|
3
|
-
attr_reader :null_class
|
4
|
-
attr_reader :null_equivs
|
5
|
-
|
6
|
-
def initialize(null_class, null_equivs)
|
7
|
-
@null_class = null_class
|
8
|
-
@null_equivs = null_equivs
|
9
|
-
mod = self
|
10
|
-
super() do
|
11
|
-
%w[Null Maybe Just Actual].each do |method_name|
|
12
|
-
define_method(method_name, &mod.method(method_name))
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
def Null(object=:nothing_passed)
|
18
|
-
case object
|
19
|
-
when NullObjectTag then object
|
20
|
-
when :nothing_passed, *null_equivs
|
21
|
-
null_class.get(caller: caller(1))
|
22
|
-
else raise ArgumentError, "#{object.inspect} is not null!"
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
def Maybe(object=nil, &block)
|
27
|
-
object = block ? block.call : object
|
28
|
-
case object
|
29
|
-
when NullObjectTag then object
|
30
|
-
when *null_equivs
|
31
|
-
null_class.get(caller: caller(1))
|
32
|
-
else
|
33
|
-
object
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
def Just(object=nil, &block)
|
38
|
-
object = block ? block.call : object
|
39
|
-
case object
|
40
|
-
when NullObjectTag, *null_equivs
|
41
|
-
raise ArgumentError, "Null value: #{object.inspect}"
|
42
|
-
else
|
43
|
-
object
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
def Actual(object=nil, &block)
|
48
|
-
object = block ? block.call : object
|
49
|
-
case object
|
50
|
-
when NullObjectTag then nil
|
51
|
-
else
|
52
|
-
object
|
53
|
-
end
|
54
|
-
end
|
55
|
-
|
56
|
-
end
|
57
|
-
end
|
data/spec/conversions_spec.rb
DELETED
@@ -1,20 +0,0 @@
|
|
1
|
-
require 'spec_helper.rb'
|
2
|
-
|
3
|
-
describe 'explicitly convertable null object' do
|
4
|
-
let(:null_class) {
|
5
|
-
Naught.build do |b|
|
6
|
-
b.define_explicit_conversions
|
7
|
-
end
|
8
|
-
}
|
9
|
-
subject(:null) { null_class.new }
|
10
|
-
|
11
|
-
it "defines common explicit conversions to return zero values" do
|
12
|
-
expect(null.to_s).to eq("")
|
13
|
-
expect(null.to_a).to eq([])
|
14
|
-
expect(null.to_i).to eq(0)
|
15
|
-
expect(null.to_f).to eq(0.0)
|
16
|
-
expect(null.to_c).to eq(Complex(0))
|
17
|
-
expect(null.to_r).to eq(Rational(0))
|
18
|
-
expect(null.to_h).to eq({})
|
19
|
-
end
|
20
|
-
end
|