adt 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. data/CHANGELOG.md +6 -0
  2. data/lib/adt.rb +1 -1
  3. data/lib/data/maybe.rb +33 -0
  4. metadata +3 -2
@@ -1,3 +1,9 @@
1
+ 0.0.5
2
+ =====
3
+
4
+ * NEW: Started working on data. First up - Maybe. require 'data/maybe'
5
+ * BUG: Arguments to a case were not being shown using #inspect inside a #inspect.
6
+
1
7
  0.0.4
2
8
  =====
3
9
 
data/lib/adt.rb CHANGED
@@ -145,7 +145,7 @@ module ADT
145
145
  index = 0
146
146
  bit = case_args.map { |ca|
147
147
  index += 1
148
- " #{ca}:#\{a#{index}\}"
148
+ " #{ca}:#\{a#{index}\.inspect}"
149
149
  }.join('')
150
150
  eval(proc_create[case_args.count, "a", " \" #{cn}#{bit}\""])
151
151
  }) + ">"
@@ -0,0 +1,33 @@
1
+ require 'adt'
2
+
3
+ class Maybe
4
+ extend ADT
5
+ cases do
6
+ nothing
7
+ just(:value)
8
+ end
9
+
10
+ def map
11
+ fold(proc { self }, proc { |v| yield v })
12
+ end
13
+
14
+ def filter
15
+ fold(proc { self }, proc { |v| yield(v) ? self : Maybe.nothing })
16
+ end
17
+
18
+ def or_else(other = nil)
19
+ fold(proc { other || yield }, proc { |v| self })
20
+ end
21
+
22
+ def or_value(v = nil)
23
+ fold(proc { v || yield }, proc { |v| v })
24
+ end
25
+
26
+ def or_nil
27
+ fold(proc { nil }, proc { |v| v })
28
+ end
29
+
30
+ def self.from_nil(v)
31
+ v.nil? ? nothing : just(v)
32
+ end
33
+ end
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 0
8
- - 4
9
- version: 0.0.4
8
+ - 5
9
+ version: 0.0.5
10
10
  platform: ruby
11
11
  authors:
12
12
  - Nick Partridge
@@ -29,6 +29,7 @@ extra_rdoc_files: []
29
29
  files:
30
30
  - lib/adt/case_recorder.rb
31
31
  - lib/adt.rb
32
+ - lib/data/maybe.rb
32
33
  - CHANGELOG.md
33
34
  - README.md
34
35
  has_rdoc: true