adt 0.0.4 → 0.0.5

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