dry-monads 0.1.1 → 0.2.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: 0cbccce7fff8fe6eef0763ab6aebf542d4e0a3c0
4
- data.tar.gz: 422441bace15b40867ce402b3f855328e8470511
3
+ metadata.gz: d8b7637e82c392e9033203131fc8a142dbb3c70d
4
+ data.tar.gz: accbe167e84adc328b782f52db264317396f0692
5
5
  SHA512:
6
- metadata.gz: 2242fafb2e2b4cab7bca157df41237dee7b919e68363003591b0cd50344932cb094a1625291b071dec150c7af8459e5f4070980ff512474f97ba53ec7732903d
7
- data.tar.gz: 453147bd4233ded8376195b701a7e40b6e091417566941a7085b3a2becc00a1ddc1d0f4dc0537371ffda00141262279b507c66f92e1c5bfcc5e614b414f02b6c
6
+ metadata.gz: 2cba273461666107f402c9ef8ce31ad1c9924e6258b8cf4b16fc22439131084b31369fbce2c9c0c65339cb5d8bcf1e2c6b3076ca033e2e58bbe0bb8f3643d109
7
+ data.tar.gz: 601ca3bc9b87390cfe54e8698142cf8ffed94019bb0ce7f5be29c39bcbb23142a475ea977591fc2d8849ac2e405e0570d1b8ade01dc599171da3635264709202
data/dry-monads.gemspec CHANGED
@@ -25,6 +25,7 @@ Gem::Specification.new do |spec|
25
25
  spec.bindir = 'exe'
26
26
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
27
27
  spec.require_paths = ['lib']
28
+ spec.required_ruby_version = ">= 2.1.0"
28
29
  spec.add_dependency 'dry-equalizer'
29
30
 
30
31
  spec.add_development_dependency 'bundler'
@@ -92,6 +92,13 @@ module Dry
92
92
  self
93
93
  end
94
94
 
95
+ # Returns value. It exists to keep the interface identical to that of {Maybe::None}.
96
+ #
97
+ # @return [Object]
98
+ def value_or(_val)
99
+ value
100
+ end
101
+
95
102
  # @return [String]
96
103
  def to_s
97
104
  "Some(#{value.inspect})"
@@ -144,6 +151,17 @@ module Dry
144
151
  end
145
152
  end
146
153
 
154
+ # Returns the passed value
155
+ #
156
+ # @returns [Object]
157
+ def value_or(val = nil)
158
+ if block_given?
159
+ yield
160
+ else
161
+ val
162
+ end
163
+ end
164
+
147
165
  # @return [String]
148
166
  def to_s
149
167
  'None'
@@ -1,5 +1,5 @@
1
1
  module Dry
2
2
  module Monads
3
- VERSION = '0.1.1'.freeze
3
+ VERSION = '0.2.0'.freeze
4
4
  end
5
5
  end
@@ -0,0 +1,33 @@
1
+ # frozen_string_literal: false
2
+ require 'json' unless defined?(::JSON::JSON_LOADED) && ::JSON::JSON_LOADED
3
+
4
+ require 'dry/monads'
5
+
6
+ # Inspired by standard library implementation
7
+ # for Time serialization/deserialization see (json/lib/json/add/time.rb)
8
+ #
9
+ module Dry
10
+ module Monads
11
+ class Maybe
12
+ # Deserializes JSON string by using Dry::Monads::Maybe#lift method
13
+ def self.json_create(serialized)
14
+ lift(serialized.fetch('value'))
15
+ end
16
+
17
+ # Returns a hash, that will be turned into a JSON object and represent this
18
+ # object.
19
+ def as_json(*)
20
+ {
21
+ JSON.create_id => self.class.name,
22
+ value: value
23
+ }
24
+ end
25
+
26
+ # Stores class name (Dry::Monads::Maybe::Some or Dry::Monads::Maybe::None)
27
+ # with the monad value as JSON string
28
+ def to_json(*args)
29
+ as_json.to_json(*args)
30
+ end
31
+ end
32
+ end
33
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dry-monads
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nikita Shilnikov
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-08-25 00:00:00.000000000 Z
11
+ date: 2016-09-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: dry-equalizer
@@ -92,6 +92,7 @@ files:
92
92
  - lib/dry/monads/maybe.rb
93
93
  - lib/dry/monads/try.rb
94
94
  - lib/dry/monads/version.rb
95
+ - lib/json/add/dry/monads/maybe.rb
95
96
  homepage: https://github.com/dry-rb/dry-monads
96
97
  licenses:
97
98
  - MIT
@@ -105,7 +106,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
105
106
  requirements:
106
107
  - - ">="
107
108
  - !ruby/object:Gem::Version
108
- version: '0'
109
+ version: 2.1.0
109
110
  required_rubygems_version: !ruby/object:Gem::Requirement
110
111
  requirements:
111
112
  - - ">="