cdt-utilities 0.3.0 → 0.4.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b4e8878b78d5eabb0daa6cffde78960045a0d1ce
4
- data.tar.gz: 82254c3b751bb6545821b59124ee857ba4c586a3
3
+ metadata.gz: d31994b7b265eb116aae1d4bb165fbc81056f1a6
4
+ data.tar.gz: 480eae88438f78f20db84371671102a6a0d0526b
5
5
  SHA512:
6
- metadata.gz: f691ee2fcf6446639552826ddf11d4ba6ef41fa61489c6a7678ca75fbcc077ea663c01a2a8ac854652fec08330f2e4d2c2fb2324b7bbea9768043acb4ed65c8f
7
- data.tar.gz: 3ceca0564c007c4d01c3eb65625d685a22f64eb42b69e8ee6b498dad01c947e33e6087fb6001336281bef7887a9cc64f4a6a51171f29c5145b6a79a3ef629152
6
+ metadata.gz: df92b157c9a0aa4c33efc85ddc239b943fc31466fb1507f093cc63b74dcf9d232d7b964d3328182c98664960738abf3291ff4dff48f8faade7d15a87d05e4a9b
7
+ data.tar.gz: 4f9222d811c11f1d3daac3c0657606ebb20c74791db427c93d185cf5641a838c743c1ba4f28e65eb2a307f610d736b028cf148d91a9bd1138d5e8626df0122db
data/README.md CHANGED
@@ -13,7 +13,7 @@ Some Ruby utilities.
13
13
  Add this line to your application's Gemfile:
14
14
 
15
15
  ```ruby
16
- gem 'cdt-utilities', "~> 0.3"
16
+ gem 'cdt-utilities', "~> 0.4"
17
17
  ```
18
18
 
19
19
  And then execute:
@@ -81,24 +81,24 @@ require 'cdt/utilities'
81
81
  # or if you just want this utility
82
82
  require 'cdt/utilities/if-not-nil'
83
83
 
84
- CdT.if_nil(nil) {7} # Evaluates to 7
85
- CdT.if_nil(42) {7} # Evaluates to 42
84
+ CdT.if_nil(nil) { 7 } # Evaluates to 7
85
+ CdT.if_nil(42) { 7 } # Evaluates to 42
86
86
 
87
87
 
88
- CdT.if_not_nil(42) { |object| object + 1} # Evaluates to 43
89
- CdT.if_not_nil(nil) { |object| object + 1} # Evaluates to nil
88
+ CdT.if_not_nil(42) { |object| object + 1 } # Evaluates to 43
89
+ CdT.if_not_nil(nil) { |object| object + 1 } # Evaluates to nil
90
90
 
91
91
  # Evaluates to 43
92
92
  CdT.object 42,
93
- if_not_nil: proc { |object| object + 1},
93
+ if_not_nil: proc { |object| object + 1 },
94
94
  if_nil: proc { 7 }
95
95
 
96
96
  CdT.object 42,
97
- if_not_nil: proc { |object| object + 1},
97
+ if_not_nil: proc { |object| object + 1 },
98
98
 
99
99
  # Evaluates to 7
100
100
  CdT.object nil,
101
- if_not_nil: proc { |object| object + 1},
101
+ if_not_nil: proc { |object| object + 1 },
102
102
  if_nil: proc { 7 }
103
103
 
104
104
  # Evaluates to 42
@@ -116,6 +116,38 @@ def customer_name(customer_id)
116
116
  end
117
117
  ```
118
118
 
119
+ ### CdT.undefined
120
+
121
+ A singleton object that is identically different from all the other objects.
122
+
123
+ Usually `nil` is used as an undefined value. However, sometimes `nil` is a valid value in some contexts, so a different object must be used as an undefined value.
124
+
125
+ Examples:
126
+
127
+ ```ruby
128
+ require 'cdt/utilities'
129
+ # or if you just want this utility
130
+ require 'cdt/utilities/undefined'
131
+
132
+ def do_something(value = CdT.undefined)
133
+ if value == CdT.undefined
134
+ # ...
135
+ else
136
+ # ...
137
+ end
138
+ end
139
+
140
+ # you can also test the undefined value using
141
+
142
+ def do_something(value = CdT.undefined)
143
+ if value.kind_of?(CdT::Undefined)
144
+ # ...
145
+ else
146
+ # ...
147
+ end
148
+ end
149
+ ```
150
+
119
151
  ## Running the tests
120
152
 
121
153
  ```bash
@@ -1,4 +1,5 @@
1
1
  require_relative 'version'
2
2
  require_relative 'utilities/bind'
3
3
  require_relative 'utilities/subclass-responsibility'
4
- require_relative 'utilities/if-not-nil'
4
+ require_relative 'utilities/if-not-nil'
5
+ require_relative 'utilities/undefined'
@@ -0,0 +1,15 @@
1
+ module CdT
2
+ class Undefined
3
+ end
4
+
5
+ # Do not use lazy initialization with ||= to avoid race conditions
6
+ def self.undefined()
7
+ @undefined
8
+ end
9
+
10
+ def self.set_undefined(object)
11
+ @undefined = object
12
+ end
13
+
14
+ set_undefined(CdT::Undefined.new)
15
+ end
@@ -1,3 +1,3 @@
1
1
  module CdT
2
- VERSION = "0.3.0"
2
+ VERSION = "0.4.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cdt-utilities
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Martin Rubi
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-12-23 00:00:00.000000000 Z
11
+ date: 2016-04-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -58,6 +58,7 @@ files:
58
58
  - lib/cdt/utilities/bind.rb
59
59
  - lib/cdt/utilities/if-not-nil.rb
60
60
  - lib/cdt/utilities/subclass-responsibility.rb
61
+ - lib/cdt/utilities/undefined.rb
61
62
  - lib/cdt/version.rb
62
63
  homepage: https://github.com/cabeza-de-termo/ruby-utilities
63
64
  licenses:
@@ -79,7 +80,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
79
80
  version: '0'
80
81
  requirements: []
81
82
  rubyforge_project:
82
- rubygems_version: 2.4.5.1
83
+ rubygems_version: 2.6.3
83
84
  signing_key:
84
85
  specification_version: 4
85
86
  summary: Ruby utilities. No monkey patching if possible.