much-not-given 0.0.1 → 0.1.3
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/Gemfile +4 -2
- data/README.md +25 -2
- data/lib/much-not-given/version.rb +3 -1
- data/lib/much-not-given.rb +49 -0
- data/much-not-given.gemspec +9 -3
- data/test/helper.rb +2 -0
- data/test/support/factory.rb +2 -0
- data/test/unit/much-not-given_tests.rb +57 -0
- metadata +39 -11
- data/test/unit/.keep +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 24237e22126fd91569e93c9fd01dee60219eb037b33ed21a8dc88ba2e5ff40fe
|
4
|
+
data.tar.gz: f9b5bbdf08003852b3b2b753180ab9ae25f59143f2922dca4bf8f06f7b3325d3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cdf3b636f3e06a76c5fee1008e4b01eecd388271a6972f9d0955727c157ca067ea2d4375ce3724e703208e7139909591f352b4a51017ab7f8df27ad7246f789d
|
7
|
+
data.tar.gz: d250aa63a62be14d8c51babc540719d3af5db776127c69b049a0fa15d28f148945e72477dfd5667ad060f10cf205d47eb181c4e7a0d705c2a94b697d30810345
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -1,10 +1,33 @@
|
|
1
1
|
# MuchNotGiven
|
2
2
|
|
3
|
-
Add "not given" default values to your objects.
|
3
|
+
Add "not given" default values to your objects. This allows you to safely detect whether a method has been given argument values or not.
|
4
4
|
|
5
5
|
## Usage
|
6
6
|
|
7
|
-
|
7
|
+
```ruby
|
8
|
+
module MyNamespace
|
9
|
+
include MuchNotGiven
|
10
|
+
end
|
11
|
+
|
12
|
+
MyNamespace.not_given # => MyNamespace.not_given
|
13
|
+
"some value" == MyNamespace.not_given # => false
|
14
|
+
MyNamespace.not_given?("some value") # => false
|
15
|
+
MyNamespace.not_given?(MyNamespace.not_given?) # => true
|
16
|
+
MyNamespace.given?("some value") # => true
|
17
|
+
MyNamespace.given?(MyNamespace.not_given?) # => false
|
18
|
+
|
19
|
+
def my_method(value = MyNamespace.not_given)
|
20
|
+
if MyNamespace.given?(value)
|
21
|
+
# do something with the given value
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def my_method(arg_value = MyNamespace.not_given)
|
26
|
+
value = MyNamespace.given?(value) ? value : "some default value"
|
27
|
+
|
28
|
+
# do something with the optionally defaulted value
|
29
|
+
end
|
30
|
+
```
|
8
31
|
|
9
32
|
## Installation
|
10
33
|
|
data/lib/much-not-given.rb
CHANGED
@@ -1,4 +1,53 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require "much-not-given/version"
|
4
|
+
require "much-mixin"
|
2
5
|
|
3
6
|
module MuchNotGiven
|
7
|
+
include MuchMixin
|
8
|
+
|
9
|
+
mixin_class_methods do
|
10
|
+
def not_given
|
11
|
+
@not_given ||=
|
12
|
+
begin
|
13
|
+
Class.new{
|
14
|
+
def initialize(receiver_name)
|
15
|
+
@receiver_name = receiver_name
|
16
|
+
end
|
17
|
+
|
18
|
+
def blank?
|
19
|
+
true
|
20
|
+
end
|
21
|
+
|
22
|
+
def present?
|
23
|
+
false
|
24
|
+
end
|
25
|
+
|
26
|
+
def to_s
|
27
|
+
"#{@receiver_name}.not_given"
|
28
|
+
end
|
29
|
+
|
30
|
+
def inspect
|
31
|
+
to_s
|
32
|
+
end
|
33
|
+
|
34
|
+
def ==(other)
|
35
|
+
if other.is_a?(self.class)
|
36
|
+
true
|
37
|
+
else
|
38
|
+
super
|
39
|
+
end
|
40
|
+
end
|
41
|
+
}.new(inspect)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
def not_given?(value)
|
46
|
+
value == not_given
|
47
|
+
end
|
48
|
+
|
49
|
+
def given?(value)
|
50
|
+
value != not_given
|
51
|
+
end
|
52
|
+
end
|
4
53
|
end
|
data/much-not-given.gemspec
CHANGED
@@ -1,4 +1,6 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
2
4
|
lib = File.expand_path("../lib", __FILE__)
|
3
5
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
6
|
require "much-not-given/version"
|
@@ -13,12 +15,16 @@ Gem::Specification.new do |gem|
|
|
13
15
|
gem.homepage = "https://github.com/redding/much-not-given"
|
14
16
|
gem.license = "MIT"
|
15
17
|
|
16
|
-
gem.files
|
18
|
+
gem.files = `git ls-files | grep "^[^.]"`.split($INPUT_RECORD_SEPARATOR)
|
19
|
+
|
17
20
|
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
18
21
|
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
19
22
|
gem.require_paths = ["lib"]
|
20
23
|
|
21
|
-
gem.required_ruby_version = "
|
24
|
+
gem.required_ruby_version = ">= 2.5"
|
25
|
+
|
26
|
+
gem.add_development_dependency("assert", ["~> 2.19.2"])
|
27
|
+
gem.add_development_dependency("much-style-guide", ["~> 0.6.0"])
|
22
28
|
|
23
|
-
gem.
|
29
|
+
gem.add_dependency("much-mixin", ["~> 0.2.4"])
|
24
30
|
end
|
data/test/helper.rb
CHANGED
data/test/support/factory.rb
CHANGED
@@ -0,0 +1,57 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "assert"
|
4
|
+
require "much-not-given"
|
5
|
+
|
6
|
+
module MuchNotGiven
|
7
|
+
class UnitTests < Assert::Context
|
8
|
+
desc "MuchNotGiven"
|
9
|
+
subject{ unit_module }
|
10
|
+
|
11
|
+
let(:unit_module){ MuchNotGiven }
|
12
|
+
|
13
|
+
should "inlcude MuchMixin" do
|
14
|
+
assert_that(unit_module).includes(MuchMixin)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
class ReceiverTests < UnitTests
|
19
|
+
desc "reciver"
|
20
|
+
subject{ receiver_class }
|
21
|
+
|
22
|
+
let(:receiver_class) do
|
23
|
+
Class.new do
|
24
|
+
include MuchNotGiven
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
let(:value1) do
|
29
|
+
Factory.public_send(
|
30
|
+
[:integer, :string, :float, :time, :path, :boolean].sample,
|
31
|
+
)
|
32
|
+
end
|
33
|
+
|
34
|
+
should have_imeths :not_given, :not_given?, :given?
|
35
|
+
|
36
|
+
should "have a not_given singleton value" do
|
37
|
+
not_given = subject.not_given
|
38
|
+
|
39
|
+
assert_that(not_given.blank?).is_true
|
40
|
+
assert_that(not_given.present?).is_false
|
41
|
+
assert_that(not_given.to_s).equals("#{subject.inspect}.not_given")
|
42
|
+
assert_that(not_given.inspect).equals(not_given.to_s)
|
43
|
+
|
44
|
+
assert_that(subject.not_given).is_the_same_as(not_given)
|
45
|
+
assert_that(subject.not_given == not_given).is_true
|
46
|
+
assert_that(value1 == not_given).is_false
|
47
|
+
end
|
48
|
+
|
49
|
+
should "know if values are given or not" do
|
50
|
+
assert_that(subject.given?(value1)).is_true
|
51
|
+
assert_that(subject.given?(subject.not_given)).is_false
|
52
|
+
|
53
|
+
assert_that(subject.not_given?(value1)).is_false
|
54
|
+
assert_that(subject.not_given?(subject.not_given)).is_true
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
metadata
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: much-not-given
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kelly Redding
|
8
8
|
- Collin Redding
|
9
|
-
autorequire:
|
9
|
+
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2021-10-29 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: assert
|
@@ -17,14 +17,42 @@ dependencies:
|
|
17
17
|
requirements:
|
18
18
|
- - "~>"
|
19
19
|
- !ruby/object:Gem::Version
|
20
|
-
version: 2.
|
20
|
+
version: 2.19.2
|
21
21
|
type: :development
|
22
22
|
prerelease: false
|
23
23
|
version_requirements: !ruby/object:Gem::Requirement
|
24
24
|
requirements:
|
25
25
|
- - "~>"
|
26
26
|
- !ruby/object:Gem::Version
|
27
|
-
version: 2.
|
27
|
+
version: 2.19.2
|
28
|
+
- !ruby/object:Gem::Dependency
|
29
|
+
name: much-style-guide
|
30
|
+
requirement: !ruby/object:Gem::Requirement
|
31
|
+
requirements:
|
32
|
+
- - "~>"
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: 0.6.0
|
35
|
+
type: :development
|
36
|
+
prerelease: false
|
37
|
+
version_requirements: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - "~>"
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: 0.6.0
|
42
|
+
- !ruby/object:Gem::Dependency
|
43
|
+
name: much-mixin
|
44
|
+
requirement: !ruby/object:Gem::Requirement
|
45
|
+
requirements:
|
46
|
+
- - "~>"
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: 0.2.4
|
49
|
+
type: :runtime
|
50
|
+
prerelease: false
|
51
|
+
version_requirements: !ruby/object:Gem::Requirement
|
52
|
+
requirements:
|
53
|
+
- - "~>"
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: 0.2.4
|
28
56
|
description: Add "not given" default values to your objects.
|
29
57
|
email:
|
30
58
|
- kelly@kellyredding.com
|
@@ -43,19 +71,19 @@ files:
|
|
43
71
|
- test/helper.rb
|
44
72
|
- test/support/factory.rb
|
45
73
|
- test/system/.keep
|
46
|
-
- test/unit
|
74
|
+
- test/unit/much-not-given_tests.rb
|
47
75
|
- tmp/.keep
|
48
76
|
homepage: https://github.com/redding/much-not-given
|
49
77
|
licenses:
|
50
78
|
- MIT
|
51
79
|
metadata: {}
|
52
|
-
post_install_message:
|
80
|
+
post_install_message:
|
53
81
|
rdoc_options: []
|
54
82
|
require_paths:
|
55
83
|
- lib
|
56
84
|
required_ruby_version: !ruby/object:Gem::Requirement
|
57
85
|
requirements:
|
58
|
-
- - "
|
86
|
+
- - ">="
|
59
87
|
- !ruby/object:Gem::Version
|
60
88
|
version: '2.5'
|
61
89
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
@@ -64,12 +92,12 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
64
92
|
- !ruby/object:Gem::Version
|
65
93
|
version: '0'
|
66
94
|
requirements: []
|
67
|
-
rubygems_version: 3.
|
68
|
-
signing_key:
|
95
|
+
rubygems_version: 3.2.29
|
96
|
+
signing_key:
|
69
97
|
specification_version: 4
|
70
98
|
summary: Add "not given" default values to your objects.
|
71
99
|
test_files:
|
72
100
|
- test/helper.rb
|
73
101
|
- test/support/factory.rb
|
74
102
|
- test/system/.keep
|
75
|
-
- test/unit
|
103
|
+
- test/unit/much-not-given_tests.rb
|
data/test/unit/.keep
DELETED
File without changes
|