rstructural 0.3.0 → 0.3.1

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
  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