rstructural 0.3.0 → 0.3.1

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
  SHA256:
3
- metadata.gz: 4a7909862f6c8e1218224beba82ea52bb2ca8ccd2d489d8f988c3c2e4c760537
4
- data.tar.gz: 407a43807cbdd57c068b533398b54737f1160c95fc0c02d64237b8def7f3221d
3
+ metadata.gz: 68d3611d22597d67e3a4d481d07cce3e029544f1852d05c32dd84c7fea4f2426
4
+ data.tar.gz: '06693abe983552f132d9874780e8d1c1be0a33d4e41b3a1078a214f888796034'
5
5
  SHA512:
6
- metadata.gz: e66a4919105969c110c63701cf6dcc866e4b52317c96c13dcd5d2878677a5377b428e73d81c553288c7287eb3aca04713df345523a5de3935457837e3c7248c9
7
- data.tar.gz: 91e03c79a6d525cab6e5ced41c08078b813aeaaccf8eb8173aeb92a363f47895623d7ffdb8aadc6fe9a7b8896b0e4afa280a5986d8ec711c2223442fa60a3034
6
+ metadata.gz: 8d8ed0bf31f77f652bc6392e161560e4fd410fa148d84acd39b3ae558347d9d0c43e98555534815121ef2c9d641a6f49373199a0aafefd11b8ebd97ddeeabe37
7
+ data.tar.gz: 36a15de7dad8594103c8e2e0dd9ed0e3b7b9dbea72aa227e13c3824caf2340bff534d40c8ab55abf0d357f69a3c8a6fc51f3c20099e6426bb292aedb21f53e6a
data/README.md CHANGED
@@ -11,6 +11,13 @@
11
11
  - A set of objects
12
12
  - A object is a constant or a set of objects
13
13
 
14
+ ### Applied Types
15
+
16
+ - Option
17
+ - Some or None
18
+ - Either
19
+ - Left or Right
20
+
14
21
  ## Installation
15
22
 
16
23
  Add this line to your application's Gemfile:
@@ -157,6 +164,41 @@ module AdtSample
157
164
  end
158
165
  ```
159
166
 
167
+ ### Rstructural::Option
168
+
169
+ ```ruby
170
+ puts Option.of(100).map { |v| v * 2 } #=> Option::Some(value: 200)
171
+ puts Option.of(nil).map { |v| v * 2 } #=> Option::None
172
+ puts Option.of(100).flat_map { |v| Option.of(v * 2) } #=> Option::Some(value: 200)
173
+ puts Option.of(100).flat_map { |v| v * 2 } #=> 200
174
+ puts Option.of(nil).flat_map { |v| Option.of(v * 2) } #=> Option::None
175
+ puts Option.of(100).get_or_else { 0 } #=> 100
176
+ puts Option.of(nil).get_or_else(0) #=> 0
177
+ puts Option.of(nil).get_or_else { 0 } #=> 0
178
+ puts Option.of(nil).is_a?(Option) #=> true
179
+ ```
180
+
181
+ ### Rstructural::Either
182
+
183
+ ```ruby
184
+ puts Either.try { 100 } #=> Either::Right(value: 100)
185
+ puts Either.try { raise "this is error" } #=> Either::Left(value: this is error)
186
+ puts Either.try { raise "this is error" }.value.inspect #=> #<RuntimeError: this is error>
187
+ puts Either.right(100).map { |v| v * 2 } #=> Either::Right(value: 200)
188
+ puts Either.left(100).map { |v| v * 2 } #=> Either::Left(value: 100)
189
+ puts Either.left(100).map_left { |v| v * 2 } #=> Either::Left(value: 200)
190
+ puts Either.right(100).flat_map { |v| Either.right(v * 2) } #=> Either::Right(value: 200)
191
+ puts Either.right(100).flat_map { |v| Either.left(v * 2) } #=> Either::Left(value: 200)
192
+ puts Either.left(100).flat_map { |v| Either.right(v * 2) } #=> Either::Left(value: 100)
193
+ puts Either.left(100).flat_map_left { |v| Either.right(v * 2) } #=> Either::Right(value: 200)
194
+ puts Either.right(100).right_or_else { 0 } #=> 100
195
+ puts Either.left(100).right_or_else { 0 } #=> 0
196
+ puts Either.right(100).left_or_else { 0 } #=> 0
197
+ puts Either.left(100).left_or_else { 0 } #=> 100
198
+ puts Either.right(100).right? #=> true
199
+ puts Either.right(100).left? #=> false
200
+ ```
201
+
160
202
  ## Development
161
203
 
162
204
  After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake test` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
@@ -30,6 +30,11 @@ module Rstructural
30
30
  "#{class_name}"
31
31
  end
32
32
 
33
+ def [](key)
34
+ _key = ("@" + key.to_s).to_sym
35
+ self.instance_variable_get(_key)
36
+ end
37
+
33
38
  def ==(other)
34
39
  return false if other.class != self.class
35
40
  #{attributes.empty? ? true : attributes.map { |attr| "other.#{attr} == self.#{attr}" }.join(" && ")}
data/rstructural.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |spec|
2
2
  spec.name = "rstructural"
3
- spec.version = "0.3.0"
3
+ spec.version = "0.3.1"
4
4
  spec.authors = ["petitviolet"]
5
5
  spec.email = ["violethero0820@gmail.com"]
6
6
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rstructural
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - petitviolet
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-01-29 00:00:00.000000000 Z
11
+ date: 2020-01-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: byebug
@@ -35,7 +35,6 @@ files:
35
35
  - ".travis.yml"
36
36
  - CODE_OF_CONDUCT.md
37
37
  - Gemfile
38
- - Gemfile.lock
39
38
  - LICENSE.txt
40
39
  - README.md
41
40
  - Rakefile
data/Gemfile.lock DELETED
@@ -1,23 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- rstructural (0.2.0)
5
-
6
- GEM
7
- remote: https://rubygems.org/
8
- specs:
9
- byebug (11.0.1)
10
- minitest (5.13.0)
11
- rake (12.3.3)
12
-
13
- PLATFORMS
14
- ruby
15
-
16
- DEPENDENCIES
17
- byebug
18
- minitest (~> 5.0)
19
- rake (~> 12.0)
20
- rstructural!
21
-
22
- BUNDLED WITH
23
- 2.1.2