algebrick 0.3.1 → 0.3.2
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.
- checksums.yaml +4 -4
- data/VERSION +1 -1
- data/lib/algebrick.rb +34 -2
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9166938f13bced97656434796a7d426cf19a7396
|
4
|
+
data.tar.gz: eea50d70bef296d2d9f7ad18554ddae07d771eb8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7a6f6620de67a7c6dc50d28874996e2a1596fdf590bcfa71158e42fc648a2f0c70ae7e39c81b84281b0a2abe7262e33fcb88997ed78ca04321d3f66201d8f71a
|
7
|
+
data.tar.gz: 466e978ff88c63b24378c42b633def34e90cd60cc6ac79938b46e705f2d4ed5ddb2b9edd6fcdd2dc3c3dabe62afdc8270fa9c78e10f15a63b00c2d69c7d5040a
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.3.
|
1
|
+
0.3.2
|
data/lib/algebrick.rb
CHANGED
@@ -58,6 +58,7 @@ module Algebrick
|
|
58
58
|
end
|
59
59
|
|
60
60
|
module TypeCheck
|
61
|
+
# FIND: type checking of collections?
|
61
62
|
def Type?(value, *types)
|
62
63
|
types.any? { |t| value.is_a? t }
|
63
64
|
end
|
@@ -321,10 +322,41 @@ module Algebrick
|
|
321
322
|
if type.field_names?
|
322
323
|
type.field_names.map { |name| "#{name}: #{self[name].to_s}" }.join(', ')
|
323
324
|
else
|
324
|
-
fields.map(&:to_s).join(',')
|
325
|
+
fields.map(&:to_s).join(', ')
|
325
326
|
end + ']'
|
326
327
|
end
|
327
328
|
|
329
|
+
def pretty_print(q)
|
330
|
+
q.group(1, "#{self.class.type.name}[", ']') do
|
331
|
+
if type.field_names?
|
332
|
+
type.field_names.each_with_index do |name, i|
|
333
|
+
if i == 0
|
334
|
+
q.breakable ''
|
335
|
+
else
|
336
|
+
q.text ','
|
337
|
+
q.breakable ' '
|
338
|
+
end
|
339
|
+
q.text name.to_s
|
340
|
+
q.text ':'
|
341
|
+
q.group(1) do
|
342
|
+
q.breakable ' '
|
343
|
+
q.pp self[name]
|
344
|
+
end
|
345
|
+
end
|
346
|
+
else
|
347
|
+
fields.each_with_index do |value, i|
|
348
|
+
if i == 0
|
349
|
+
q.breakable ''
|
350
|
+
else
|
351
|
+
q.text ','
|
352
|
+
q.breakable ' '
|
353
|
+
end
|
354
|
+
q.pp value
|
355
|
+
end
|
356
|
+
end
|
357
|
+
end
|
358
|
+
end
|
359
|
+
|
328
360
|
def to_ary
|
329
361
|
@fields
|
330
362
|
end
|
@@ -1107,7 +1139,7 @@ module Algebrick
|
|
1107
1139
|
raise ArgumentError, "no #{dif} fields in #{algebraic_type}"
|
1108
1140
|
end
|
1109
1141
|
algebraic_type.field_names.map do |field|
|
1110
|
-
field_matchers[field]
|
1142
|
+
field_matchers.key?(field) ? field_matchers[field] : Algebrick.any
|
1111
1143
|
end
|
1112
1144
|
|
1113
1145
|
# AProduct.(:field_name)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: algebrick
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Petr Chalupa
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-11-
|
11
|
+
date: 2013-11-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: minitest
|
@@ -157,7 +157,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
157
157
|
version: '0'
|
158
158
|
requirements: []
|
159
159
|
rubyforge_project:
|
160
|
-
rubygems_version: 2.0.
|
160
|
+
rubygems_version: 2.0.3
|
161
161
|
signing_key:
|
162
162
|
specification_version: 4
|
163
163
|
summary: Algebraic types and pattern matching for Ruby
|