yopt 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.
Files changed (5) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +8 -3
  3. data/lib/yopt.rb +3 -1
  4. data/lib/yopt/version.rb +1 -1
  5. metadata +3 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c229455d1c89285665fc049eba0ba28e3ccb476e
4
- data.tar.gz: ce0b59c5d06a0860ab05e23b5ec66e0fd98fae8c
3
+ metadata.gz: fbb2a7c8b5105d52caa71a2b3bd9225e0f1b685d
4
+ data.tar.gz: 8223c2848bbe37d5bcce860e2b041bd3d920f3e2
5
5
  SHA512:
6
- metadata.gz: 08b12da1909c7357a303e6d1f467e439561d02a5dc81d34a014d02af574d3b441c64c3be52fc5babe208a85c27ea20ef47fe83555bdb7435453e7ec497aaf084
7
- data.tar.gz: a4935ac26dbf235085138e6adcbad5d6a3f172f744d239c53c6988d7f2606c7e3853dca3581dcbc9e5b0d9eb4180f3ef3e6f9e9087a01b1a0bf201e4f70dfdce
6
+ metadata.gz: 72212175296a542de531f527a84212cb87476620be6e9f8beb01d12d32667329202db342f22bf7831d766702242628bb5f8bf3df0cf0be97b161baa40547a484
7
+ data.tar.gz: 92d97d04a184624b6c9f490db9a3175da963b5b2e9ce3d030d04a1110d53d6e0e1e336a1b47df05687af15fbcae87f68cded80de5b8de9808e5c17e7228a32b5
data/README.md CHANGED
@@ -1,3 +1,4 @@
1
+ [![Gem Version](https://badge.fury.io/rb/yopt.svg)](https://badge.fury.io/rb/yopt)
1
2
  [![Build Status](https://travis-ci.org/lbarasti/yopt.svg?branch=master)](https://travis-ci.org/lbarasti/yopt) [![Coverage Status](https://coveralls.io/repos/github/lbarasti/yopt/badge.svg?branch=master)](https://coveralls.io/github/lbarasti/yopt?branch=master)
2
3
 
3
4
  # Yopt
@@ -43,10 +44,12 @@ none.map {|value| value + 2} # returns None
43
44
  When we are not interested in the result of a computation on the optional value, it is a good practice to use `Option#each` rather than `Option#map`. That will make our intention clearer.
44
45
 
45
46
  ```ruby
46
- some.each {|value| puts value} # prints 42
47
- none.each {|value| puts value} # does not print anything
47
+ some.each {|value| puts value} # prints 42 and returns `some`
48
+ none.each {|value| puts value} # does not print anything and returns `none`
48
49
  ```
49
50
 
51
+ Notice that `#each` returns the calling option thus supporting method chaining.
52
+
50
53
  We can safely retrieve the optional value by passing a default value to `Option#get_or_else`
51
54
 
52
55
  ```ruby
@@ -59,7 +62,9 @@ Notice how we are passing a block rather than an argument. This makes the evalua
59
62
  This gives us the possibility to react in a special way to a None value without breaking the API fluency, e.g.
60
63
 
61
64
  ```ruby
62
- opt.each {|v| do_something_with(v)}.get_or_else {log_failure}
65
+
66
+
67
+ opt.each {|v| function_with_side_effects(v)}.get_or_else {log_failure}
63
68
  ```
64
69
 
65
70
  We can also filter the optional value depending on how it evaluates against a block via `Option#select`
@@ -17,7 +17,9 @@ module Yopt
17
17
  end
18
18
  singleton_class.send(:alias_method, :[], :call)
19
19
  def each &block
20
- to_ary.each &block
20
+ return enum_for(__method__) unless block_given?
21
+ yield self.get unless empty?
22
+ return self
21
23
  end
22
24
  %i(map flat_map select reject collect collect_concat).each do |method|
23
25
  define_method method, ->(&block) {
@@ -1,3 +1,3 @@
1
1
  module Yopt
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: yopt
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
  - lorenzo.barasti
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-02-14 00:00:00.000000000 Z
11
+ date: 2016-07-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -98,7 +98,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
98
98
  version: '0'
99
99
  requirements: []
100
100
  rubyforge_project:
101
- rubygems_version: 2.4.5
101
+ rubygems_version: 2.5.1
102
102
  signing_key:
103
103
  specification_version: 4
104
104
  summary: Scala-inspired Options for the idiomatic Rubyist