cdt-utilities 0.3.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
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.