wrapped 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 873be12f072d8e7e8a013579ab7e24abbfca1df4
4
+ data.tar.gz: 00b05e0b222ebe45887f5ed05ce3d2fa19d17edf
5
+ SHA512:
6
+ metadata.gz: 16409b545b1897b69f748e239f432509aa95a13a927713a7c86d6219b6411afcf96406b973cc38c4e6941a322da01d23a42728ecc3730ee26aafd1536c229d74
7
+ data.tar.gz: 303cd24a0f03dc9ba83d94c7725a2990c8598b797e3ab1ca9341f45e852a078c2c98f8a3a596459d37407382423f9937187f5033d2caa18ae1cf3c9ca3d4312e
data/README.md CHANGED
@@ -104,9 +104,9 @@ For example:
104
104
  irb(main):055:0> nil.wrapped.inject(0) {|_, n| n+1}
105
105
  => 0
106
106
 
107
- And then we have `try`, which you can use to produce another wrapped object:
107
+ And then we have `flat_map`, which you can use to produce another wrapped object:
108
108
 
109
- irb> 1.wrapped.try {|n| (n + 1).wrapped}.try {|n| (n*2).wrapped}.unwrap
109
+ irb> 1.wrapped.flat_map {|n| (n + 1).wrapped}.flat_map {|n| (n*2).wrapped}.unwrap
110
110
  => 4
111
111
 
112
112
  Those same people who will exclaim things about functors will, at this point,
@@ -166,4 +166,4 @@ functor or the option class for more.
166
166
 
167
167
  Copyright
168
168
  ---------
169
- Copyright 2011 Mike Burns
169
+ Copyright 2011 - 2014 Mike Burns, Joe Ferris
@@ -0,0 +1,16 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # This file was generated by Bundler.
4
+ #
5
+ # The application 'rake' is installed as part of a gem, and
6
+ # this file is here to facilitate running it.
7
+ #
8
+
9
+ require 'pathname'
10
+ ENV['BUNDLE_GEMFILE'] ||= File.expand_path("../../Gemfile",
11
+ Pathname.new(__FILE__).realpath)
12
+
13
+ require 'rubygems'
14
+ require 'bundler/setup'
15
+
16
+ load Gem.bin_path('rake', 'rake')
@@ -0,0 +1,16 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # This file was generated by Bundler.
4
+ #
5
+ # The application 'rspec' is installed as part of a gem, and
6
+ # this file is here to facilitate running it.
7
+ #
8
+
9
+ require 'pathname'
10
+ ENV['BUNDLE_GEMFILE'] ||= File.expand_path("../../Gemfile",
11
+ Pathname.new(__FILE__).realpath)
12
+
13
+ require 'rubygems'
14
+ require 'bundler/setup'
15
+
16
+ load Gem.bin_path('rspec-core', 'rspec')
@@ -52,8 +52,8 @@ class Blank
52
52
 
53
53
  # Do nothing, returning itself.
54
54
  #
55
- # > w.try {|n| n+1 }
56
- def try
55
+ # > w.flat_map {|n| n+1 }
56
+ def flat_map
57
57
  self
58
58
  end
59
59
 
@@ -1,13 +1,13 @@
1
1
  require 'wrapped/present'
2
2
  require 'wrapped/blank'
3
3
 
4
- class Object
4
+ class BasicObject
5
5
  # Wrap the object, forcing the user to be aware of the potential for a nil
6
6
  # value by unwrapping it.
7
7
  #
8
8
  # See the Present class for details on how to unwrap it.
9
9
  def wrapped
10
- Present.new(self)
10
+ ::Present.new(self)
11
11
  end
12
12
  end
13
13
 
@@ -68,13 +68,13 @@ class Present
68
68
 
69
69
  # Run a block against the unwrapped value, producing the result of the block.
70
70
  #
71
- # > w.try {|n| n+1 }
71
+ # > w.flat_map {|n| n+1 }
72
72
  #
73
73
  # Also, you can use this like you would use >>= in Haskell. This and wrapped
74
74
  # make it a monad.
75
75
  #
76
- # > w.try {|n| (n+1).wrapped }
77
- def try
76
+ # > w.flat_map {|n| (n+1).wrapped }
77
+ def flat_map
78
78
  yield unwrap
79
79
  end
80
80
 
@@ -1,3 +1,3 @@
1
1
  module Wrapped
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
@@ -1,9 +1,11 @@
1
1
  require 'spec_helper'
2
+ require 'delegate'
2
3
 
3
4
  describe Wrapped, 'conversion' do
4
- let(:value) { 1 }
5
- let(:just) { 1.wrapped }
6
- let(:nothing) { nil.wrapped }
5
+ let(:value) { 1 }
6
+ let(:just) { 1.wrapped }
7
+ let(:nothing) { nil.wrapped }
8
+ let(:delegator) { SimpleDelegator.new(value).wrapped }
7
9
 
8
10
  it "converts the value to a Present" do
9
11
  just.should be_instance_of(Present)
@@ -12,6 +14,11 @@ describe Wrapped, 'conversion' do
12
14
  it "converts the nil to a Blank" do
13
15
  nothing.should be_instance_of(Blank)
14
16
  end
17
+
18
+ it "converts a simple delegator to a Present" do
19
+ delegator.should be_instance_of(Present)
20
+ delegator.unwrap.should be_instance_of(SimpleDelegator)
21
+ end
15
22
  end
16
23
 
17
24
  describe Wrapped, 'accessing' do
@@ -151,12 +158,12 @@ describe Wrapped, 'monadic' do
151
158
  let(:just) { 1.wrapped }
152
159
  let(:nothing) { nil.wrapped }
153
160
 
154
- it 'produces the value from #try for a wrapped value' do
155
- just.try {|n| (n+1).wrapped }.unwrap.should == value+1
161
+ it 'produces the value from #flat_map for a wrapped value' do
162
+ just.flat_map {|n| (n+1).wrapped }.unwrap.should == value+1
156
163
  end
157
164
 
158
- it 'produces blank from #try for a wrapped nil' do
159
- nothing.try {|n| (n+1).wrapped}.should be_blank
165
+ it 'produces blank from #flat_map for a wrapped nil' do
166
+ nothing.flat_map {|n| (n+1).wrapped}.should be_blank
160
167
  end
161
168
  end
162
169
 
@@ -14,9 +14,8 @@ Gem::Specification.new do |s|
14
14
 
15
15
  s.files = `git ls-files`.split("\n")
16
16
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
17
- s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
18
17
  s.require_paths = ["lib"]
19
18
 
20
- s.add_development_dependency('rspec')
19
+ s.add_development_dependency('rspec', '~> 2.3')
21
20
  s.add_development_dependency('rake')
22
21
  end
metadata CHANGED
@@ -1,65 +1,60 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: wrapped
3
- version: !ruby/object:Gem::Version
4
- hash: 27
5
- prerelease:
6
- segments:
7
- - 0
8
- - 0
9
- - 2
10
- version: 0.0.2
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.3
11
5
  platform: ruby
12
- authors:
6
+ authors:
13
7
  - Mike Burns
14
8
  autorequire:
15
9
  bindir: bin
16
10
  cert_chain: []
17
-
18
- date: 2011-12-14 00:00:00 Z
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
21
- type: :development
22
- requirement: &id001 !ruby/object:Gem::Requirement
23
- none: false
24
- requirements:
25
- - - ">="
26
- - !ruby/object:Gem::Version
27
- hash: 3
28
- segments:
29
- - 0
30
- version: "0"
31
- prerelease: false
11
+ date: 2014-10-29 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
32
14
  name: rspec
33
- version_requirements: *id001
34
- - !ruby/object:Gem::Dependency
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '2.3'
35
20
  type: :development
36
- requirement: &id002 !ruby/object:Gem::Requirement
37
- none: false
38
- requirements:
39
- - - ">="
40
- - !ruby/object:Gem::Version
41
- hash: 3
42
- segments:
43
- - 0
44
- version: "0"
45
21
  prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '2.3'
27
+ - !ruby/object:Gem::Dependency
46
28
  name: rake
47
- version_requirements: *id002
48
- description: The unchecked nil is a dangerous concept leading to NoMethodErrors at runtime. It would be better if you were forced to explictly unwrap potentially nil values. This library provides mechanisms and convenience methods for making this more possible.
49
- email:
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ description: The unchecked nil is a dangerous concept leading to NoMethodErrors at
42
+ runtime. It would be better if you were forced to explictly unwrap potentially nil
43
+ values. This library provides mechanisms and convenience methods for making this
44
+ more possible.
45
+ email:
50
46
  - mike@mike-burns.com
51
47
  executables: []
52
-
53
48
  extensions: []
54
-
55
49
  extra_rdoc_files: []
56
-
57
- files:
58
- - .gitignore
50
+ files:
51
+ - ".gitignore"
59
52
  - Gemfile
60
53
  - LICENSE
61
54
  - README.md
62
55
  - Rakefile
56
+ - bin/rake
57
+ - bin/rspec
63
58
  - lib/wrapped.rb
64
59
  - lib/wrapped/blank.rb
65
60
  - lib/wrapped/injection.rb
@@ -69,37 +64,27 @@ files:
69
64
  - spec/wrapped_spec.rb
70
65
  - wrapped.gemspec
71
66
  homepage: http://github.com/mike-burns/wrapped
72
- licenses:
67
+ licenses:
73
68
  - BSD
69
+ metadata: {}
74
70
  post_install_message:
75
71
  rdoc_options: []
76
-
77
- require_paths:
72
+ require_paths:
78
73
  - lib
79
- required_ruby_version: !ruby/object:Gem::Requirement
80
- none: false
81
- requirements:
74
+ required_ruby_version: !ruby/object:Gem::Requirement
75
+ requirements:
82
76
  - - ">="
83
- - !ruby/object:Gem::Version
84
- hash: 3
85
- segments:
86
- - 0
87
- version: "0"
88
- required_rubygems_version: !ruby/object:Gem::Requirement
89
- none: false
90
- requirements:
77
+ - !ruby/object:Gem::Version
78
+ version: '0'
79
+ required_rubygems_version: !ruby/object:Gem::Requirement
80
+ requirements:
91
81
  - - ">="
92
- - !ruby/object:Gem::Version
93
- hash: 3
94
- segments:
95
- - 0
96
- version: "0"
82
+ - !ruby/object:Gem::Version
83
+ version: '0'
97
84
  requirements: []
98
-
99
85
  rubyforge_project:
100
- rubygems_version: 1.8.11
86
+ rubygems_version: 2.2.2
101
87
  signing_key:
102
- specification_version: 3
88
+ specification_version: 4
103
89
  summary: The maybe functor for Ruby
104
90
  test_files: []
105
-