egison 0.1.0 → 0.2.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.
- checksums.yaml +4 -4
- data/Makefile +3 -0
- data/README.md +38 -21
- data/egison.gemspec +2 -0
- data/lib/egison/core.rb +12 -9
- data/lib/egison/version.rb +1 -1
- data/spec/lib/egison/core_spec.rb +3 -0
- data/spec/lib/egison/matcher_spec.rb +4 -0
- data/spec/lib/egison_spec.rb +3 -0
- data/spec/sample/combination_spec.rb +16 -0
- data/spec/sample/join_spec.rb +20 -0
- data/spec/sample/poker_hands_spec.rb +52 -0
- data/spec/sample/set_spec.rb +12 -0
- data/spec/spec_helper.rb +8 -0
- metadata +38 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 93830b57e70db21c121811db9cdb6dc290c8f1d4
|
|
4
|
+
data.tar.gz: f03a022950af1034baa7f5f05ec8c46bbcdfd27e
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 6dc21dd3b11e12c3db43dfec0631f922eb9da0e6873dbcc055777801746ba0d97a49d2fba8da89965044eaadda57aa3487930a2880834dc65b8f559b76638522
|
|
7
|
+
data.tar.gz: 39c8fc34bfb2533991fa7b896a660523107a1a58fb51015d4b98b92228c90cbdffce909136e3ae9d5ca3e9c30b47d49bd90b8208425f392ac07f121f791968e4
|
data/Makefile
CHANGED
data/README.md
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
# The Gem for Egison Pattern Matching
|
|
1
|
+
# The Gem for Egison Pattern Matching
|
|
2
2
|
|
|
3
|
-
This Gem provides a way to access
|
|
4
|
-
Egison is the world's first programming language that can represent non-linear pattern-match against unfree data types.
|
|
3
|
+
This Gem provides a way to access non-linear pattern-matching against unfree data types from Ruby.
|
|
5
4
|
We can directly express pattern-matching against lists, multisets, and sets using this gem.
|
|
6
5
|
|
|
7
6
|
## Installation
|
|
@@ -15,8 +14,7 @@ or
|
|
|
15
14
|
```
|
|
16
15
|
$ git clone https://github.com/egison/egison-ruby.git
|
|
17
16
|
$ cd egison-ruby
|
|
18
|
-
$
|
|
19
|
-
$ gem install egison-*.gem
|
|
17
|
+
$ make
|
|
20
18
|
```
|
|
21
19
|
|
|
22
20
|
or
|
|
@@ -24,7 +22,7 @@ or
|
|
|
24
22
|
```
|
|
25
23
|
$ gem install bundler (if you need)
|
|
26
24
|
$ echo "gem 'egison', :git => 'https://github.com/egison/egison-ruby.git'" > Gemfile
|
|
27
|
-
$ bundle install
|
|
25
|
+
$ bundle install
|
|
28
26
|
```
|
|
29
27
|
|
|
30
28
|
## Basic Usage
|
|
@@ -87,24 +85,26 @@ We can write pattern-matching against lists, multisets, and sets.
|
|
|
87
85
|
When we regard an array as a multiset, the order of elements is ignored.
|
|
88
86
|
When we regard an array as a set, the duplicates and order of elements are ignored.
|
|
89
87
|
|
|
90
|
-
`
|
|
88
|
+
`_` is a <i>wildcard</i>.
|
|
91
89
|
It matches with any object.
|
|
90
|
+
Note that `__` and `___` are also interpreted as a wildcard.
|
|
91
|
+
This is because `_` and `__` are system variables and sometimes have its own meaning.
|
|
92
92
|
|
|
93
93
|
```
|
|
94
94
|
match_all([1, 2, 3]) do
|
|
95
|
-
with(List.(_a, _b, *
|
|
95
|
+
with(List.(_a, _b, *_)) do
|
|
96
96
|
[a, b]
|
|
97
97
|
end
|
|
98
98
|
end #=> [[1, 2]]
|
|
99
99
|
|
|
100
100
|
match_all([1, 2, 3]) do
|
|
101
|
-
with(Multiset.(_a, _b, *
|
|
101
|
+
with(Multiset.(_a, _b, *_)) do
|
|
102
102
|
[a, b]
|
|
103
103
|
end
|
|
104
104
|
end #=> [[1, 2], [1, 3], [2, 1], [2, 3], [3, 1], [3, 2]]
|
|
105
105
|
|
|
106
106
|
match_all([1, 2, 3]) do
|
|
107
|
-
with(Set.(_a, _b, *
|
|
107
|
+
with(Set.(_a, _b, *_)) do
|
|
108
108
|
[a, b]
|
|
109
109
|
end
|
|
110
110
|
end #=> [[1, 1],[1, 2],[1, 3],[2, 1],[2, 2],[2, 3],[3, 1],[3, 2],[3, 3]]
|
|
@@ -114,7 +114,7 @@ Note that `_[]` is provided as syntactic sugar for `List.()`.
|
|
|
114
114
|
|
|
115
115
|
```
|
|
116
116
|
match_all([1, 2, 3]) do
|
|
117
|
-
with(_[_a, _b, *
|
|
117
|
+
with(_[_a, _b, *_]) do
|
|
118
118
|
[a, b]
|
|
119
119
|
end
|
|
120
120
|
end #=> [[1, 2]]
|
|
@@ -130,7 +130,7 @@ It matches the target when the target is equal with the value that `...` evaluat
|
|
|
130
130
|
|
|
131
131
|
```
|
|
132
132
|
match_all([5, 3, 4, 1, 2]) do
|
|
133
|
-
with(Multiset.(_a, __("a + 1"), __("a + 2"), *
|
|
133
|
+
with(Multiset.(_a, __("a + 1"), __("a + 2"), *_)) do
|
|
134
134
|
a
|
|
135
135
|
end
|
|
136
136
|
end #=> [1,2,3]
|
|
@@ -140,13 +140,30 @@ When, the expression in the place of `...` is a single variable, we can omit `("
|
|
|
140
140
|
|
|
141
141
|
```
|
|
142
142
|
match_all([1, 2, 3, 2, 5]) do
|
|
143
|
-
with(Multiset.(_a, __a, *
|
|
143
|
+
with(Multiset.(_a, __a, *_)) do
|
|
144
144
|
a
|
|
145
145
|
end
|
|
146
146
|
end #=> [2,2]
|
|
147
147
|
```
|
|
148
148
|
|
|
149
|
-
##
|
|
149
|
+
## Demonstrations
|
|
150
|
+
|
|
151
|
+
### Combinations
|
|
152
|
+
|
|
153
|
+
We can enumerates all combinations of the elements of a collection with pattern-matching.
|
|
154
|
+
|
|
155
|
+
```
|
|
156
|
+
require 'egison'
|
|
157
|
+
|
|
158
|
+
p(match_all([1,2,3,4,5]) do with(List.(*_, _x, *_, _y, *_)) { [x, y] } end)
|
|
159
|
+
#=> [[1, 2], [1, 3], [1, 4], [1, 5], [2, 3], [2, 4], [2, 5], [3, 4], [3, 5], [4, 5]]
|
|
160
|
+
|
|
161
|
+
p(match_all([1,2,3,4,5]) do with(List.(*_, _x, *_, _y, *_, _z, *_)) { [x, y, z] } end)
|
|
162
|
+
#=> [[1, 2, 3], [1, 2, 4], [1, 2, 5], [1, 3, 4], [1, 3, 5], [1, 4, 5], [2, 3, 4], [2, 3, 5], [2, 4, 5], [3, 4, 5]]
|
|
163
|
+
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
### Poker Hands
|
|
150
167
|
|
|
151
168
|
We can write patterns for all poker-hands in one single pattern.
|
|
152
169
|
It is as follow.
|
|
@@ -160,28 +177,28 @@ def poker_hands cs
|
|
|
160
177
|
with(Multiset.(_[_s, _n], _[__s, __("n+1")], _[__s, __("n+2")], _[__s, __("n+3")], _[__s, __("n+4")])) do
|
|
161
178
|
"Straight flush"
|
|
162
179
|
end
|
|
163
|
-
with(Multiset.(_[
|
|
180
|
+
with(Multiset.(_[_, _n], _[_, __n], _[_, __n], _[_, __n], _)) do
|
|
164
181
|
"Four of kind"
|
|
165
182
|
end
|
|
166
|
-
with(Multiset.(_[
|
|
183
|
+
with(Multiset.(_[_, _m], _[_, __m], _[_, __m], _[_, _n], _[_, __n])) do
|
|
167
184
|
"Full house"
|
|
168
185
|
end
|
|
169
186
|
with(Multiset.(_[_s, _], _[__s, _], _[__s, _], _[__s, _], _[__s, _])) do
|
|
170
187
|
"Flush"
|
|
171
188
|
end
|
|
172
|
-
with(Multiset.(_[
|
|
189
|
+
with(Multiset.(_[_, _n], _[_, __("n+1")], _[_, __("n+2")], _[_, __("n+3")], _[_, __("n+4")])) do
|
|
173
190
|
"Straight"
|
|
174
191
|
end
|
|
175
|
-
with(Multiset.(_[
|
|
192
|
+
with(Multiset.(_[_, _n], _[_, __n], _[_, __n], _, _)) do
|
|
176
193
|
"Three of kind"
|
|
177
194
|
end
|
|
178
|
-
with(Multiset.(_[
|
|
195
|
+
with(Multiset.(_[_, _m], _[_, __m], _[_, _n], _[_, __n], _)) do
|
|
179
196
|
"Two pairs"
|
|
180
197
|
end
|
|
181
|
-
with(Multiset.(_[
|
|
198
|
+
with(Multiset.(_[_, _n], _[_, __n], _, _, _)) do
|
|
182
199
|
"One pair"
|
|
183
200
|
end
|
|
184
|
-
with(Multiset.(
|
|
201
|
+
with(Multiset.(_, _, _, _, _)) do
|
|
185
202
|
"Nothing"
|
|
186
203
|
end
|
|
187
204
|
end
|
data/egison.gemspec
CHANGED
|
@@ -17,5 +17,7 @@ Gem::Specification.new do |s|
|
|
|
17
17
|
s.executables = `git ls-files -- bin/*`.split("\n").map{|f| File.basename(f) }
|
|
18
18
|
s.require_paths = ['lib']
|
|
19
19
|
s.add_development_dependency 'rake'
|
|
20
|
+
s.add_development_dependency 'rspec'
|
|
21
|
+
s.add_development_dependency 'simplecov'
|
|
20
22
|
s.rdoc_options = ['--main', 'README.rdoc']
|
|
21
23
|
end
|
data/lib/egison/core.rb
CHANGED
|
@@ -257,8 +257,6 @@ module PatternMatch
|
|
|
257
257
|
end
|
|
258
258
|
end
|
|
259
259
|
uscore
|
|
260
|
-
when 1
|
|
261
|
-
ValuePattern.new(@ctx, vals[0])
|
|
262
260
|
else
|
|
263
261
|
undefined
|
|
264
262
|
end
|
|
@@ -267,13 +265,7 @@ module PatternMatch
|
|
|
267
265
|
def __(*vals)
|
|
268
266
|
case vals.length
|
|
269
267
|
when 0
|
|
270
|
-
|
|
271
|
-
class << uscore
|
|
272
|
-
def [](*args)
|
|
273
|
-
List.call(*args)
|
|
274
|
-
end
|
|
275
|
-
end
|
|
276
|
-
uscore
|
|
268
|
+
Wildcard.new()
|
|
277
269
|
when 1
|
|
278
270
|
ValuePattern.new(@ctx, vals[0])
|
|
279
271
|
else
|
|
@@ -281,6 +273,15 @@ module PatternMatch
|
|
|
281
273
|
end
|
|
282
274
|
end
|
|
283
275
|
|
|
276
|
+
def ___(*vals)
|
|
277
|
+
case vals.length
|
|
278
|
+
when 0
|
|
279
|
+
Wildcard.new()
|
|
280
|
+
else
|
|
281
|
+
undefined
|
|
282
|
+
end
|
|
283
|
+
end
|
|
284
|
+
|
|
284
285
|
class BindingModule < ::Module
|
|
285
286
|
end
|
|
286
287
|
|
|
@@ -364,6 +365,8 @@ module Kernel
|
|
|
364
365
|
env.instance_eval(&block)
|
|
365
366
|
end
|
|
366
367
|
end
|
|
368
|
+
|
|
369
|
+
alias match_single match
|
|
367
370
|
|
|
368
371
|
end
|
|
369
372
|
|
data/lib/egison/version.rb
CHANGED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
require 'egison'
|
|
3
|
+
|
|
4
|
+
describe "sample" do
|
|
5
|
+
describe "combination.rb" do
|
|
6
|
+
it %q{match_all([1,2,3,4,5]) do with(List.(*_, _x, *_, _y, *_)) { [x, y] } end} do
|
|
7
|
+
expect(match_all([1,2,3,4,5]) do with(List.(*_, _x, *_, _y, *_)) { [x, y] } end).to eq \
|
|
8
|
+
[[1, 2], [1, 3], [1, 4], [1, 5], [2, 3], [2, 4], [2, 5], [3, 4], [3, 5], [4, 5]]
|
|
9
|
+
end
|
|
10
|
+
it %q{match_all([1,2,3,4,5]) do with(List.(*_, _x, *_, _y, *_, _z, *_)) { [x, y, z] } end} do
|
|
11
|
+
expect(match_all([1,2,3,4,5]) do with(List.(*_, _x, *_, _y, *_, _z, *_)) { [x, y, z] } end).to eq \
|
|
12
|
+
[[1, 2, 3], [1, 2, 4], [1, 2, 5], [1, 3, 4], [1, 3, 5], [1, 4, 5], [2, 3, 4], [2, 3, 5], [2, 4, 5], [3, 4, 5]]
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
require 'egison'
|
|
3
|
+
|
|
4
|
+
describe "sample" do
|
|
5
|
+
describe "join.rb" do
|
|
6
|
+
it %q{match_all([1,2,3,4,5]) do with(List.(*_hs, *_ts)) { [hs, ts] } end} do
|
|
7
|
+
expect(match_all([1,2,3,4,5]) do with(List.(*_hs, *_ts)) { [hs, ts] } end).to eq \
|
|
8
|
+
[[[], [1, 2, 3, 4, 5]], [[1], [2, 3, 4, 5]], [[1, 2], [3, 4, 5]], [[1, 2, 3], [4, 5]], [[1, 2, 3, 4], [5]], [[1, 2, 3, 4, 5], []]]
|
|
9
|
+
end
|
|
10
|
+
it %q{match_all([1,2,3,4,5]) do with(Multiset.(*_hs, *_ts)) { [hs, ts] } end} do
|
|
11
|
+
expect(match_all([1,2,3,4,5]) do with(Multiset.(*_hs, *_ts)) { [hs, ts] } end).to eq \
|
|
12
|
+
[[[], [1, 2, 3, 4, 5]], [[5], [1, 2, 3, 4]], [[4], [1, 2, 3, 5]], [[4, 5], [1, 2, 3]], [[3], [1, 2, 4, 5]], [[3, 5], [1, 2, 4]], [[3, 4], [1, 2, 5]], [[3, 4, 5], [1, 2]], [[2], [1, 3, 4, 5]], [[2, 5], [1, 3, 4]], [[2, 4], [1, 3, 5]], [[2, 4, 5], [1, 3]], [[2, 3], [1, 4, 5]], [[2, 3, 5], [1, 4]], [[2, 3, 4], [1, 5]], [[2, 3, 4, 5], [1]], [[1], [2, 3, 4, 5]], [[1, 5], [2, 3, 4]], [[1, 4], [2, 3, 5]], [[1, 4, 5], [2, 3]], [[1, 3], [2, 4, 5]], [[1, 3, 5], [2, 4]], [[1, 3, 4], [2, 5]], [[1, 3, 4, 5], [2]], [[1, 2], [3, 4, 5]], [[1, 2, 5], [3, 4]], [[1, 2, 4], [3, 5]], [[1, 2, 4, 5], [3]], [[1, 2, 3], [4, 5]], [[1, 2, 3, 5], [4]], [[1, 2, 3, 4], [5]], [[1, 2, 3, 4, 5], []]]
|
|
13
|
+
end
|
|
14
|
+
it %q{match_all([1,2,3,4,5]) do with(Set.(*_hs, *_ts)) { [hs, ts] } end} do
|
|
15
|
+
expect(match_all([1,2,3,4,5]) do with(Set.(*_hs, *_ts)) { [hs, ts] } end).to eq \
|
|
16
|
+
[[[], [1, 2, 3, 4, 5]], [[5], [1, 2, 3, 4, 5]], [[4], [1, 2, 3, 4, 5]], [[4, 5], [1, 2, 3, 4, 5]], [[3], [1, 2, 3, 4, 5]], [[3, 5], [1, 2, 3, 4, 5]], [[3, 4], [1, 2, 3, 4, 5]], [[3, 4, 5], [1, 2, 3, 4, 5]], [[2], [1, 2, 3, 4, 5]], [[2, 5],[1, 2, 3, 4, 5]], [[2, 4], [1, 2, 3, 4, 5]], [[2, 4, 5], [1, 2, 3, 4, 5]], [[2,3], [1, 2, 3, 4, 5]], [[2, 3, 5], [1, 2, 3, 4, 5]], [[2, 3, 4], [1, 2, 3, 4, 5]], [[2, 3, 4, 5], [1, 2, 3, 4, 5]], [[1], [1, 2, 3, 4, 5]], [[1, 5], [1, 2, 3, 4, 5]], [[1, 4], [1, 2, 3, 4, 5]], [[1, 4, 5], [1, 2, 3, 4, 5]], [[1, 3], [1, 2, 3, 4, 5]], [[1, 3, 5], [1, 2, 3, 4, 5]], [[1, 3, 4], [1, 2, 3, 4, 5]], [[1, 3, 4, 5], [1, 2, 3, 4, 5]], [[1, 2], [1, 2, 3, 4, 5]], [[1, 2, 5], [1, 2, 3, 4, 5]],[[1, 2, 4], [1, 2, 3, 4, 5]], [[1, 2, 4, 5], [1, 2, 3, 4, 5]], [[1, 2, 3], [1, 2, 3, 4, 5]], [[1, 2, 3, 5], [1, 2, 3, 4, 5]], [[1, 2, 3, 4], [1, 2, 3, 4, 5]], [[1, 2, 3, 4, 5], [1, 2, 3, 4, 5]]]
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
require 'egison'
|
|
3
|
+
|
|
4
|
+
def poker_hands cs
|
|
5
|
+
match_single(cs) do
|
|
6
|
+
with(Multiset.(_[_s, _n], _[__s, __("n+1")], _[__s, __("n+2")], _[__s, __("n+3")], _[__s, __("n+4")])) do
|
|
7
|
+
"Straight flush"
|
|
8
|
+
end
|
|
9
|
+
with(Multiset.(_[_, _n], _[_, __n], _[_, __n], _[_, __n], _)) do
|
|
10
|
+
"Four of kind"
|
|
11
|
+
end
|
|
12
|
+
with(Multiset.(_[_, _m], _[_, __m], _[_, __m], _[_, _n], _[_, __n])) do
|
|
13
|
+
"Full house"
|
|
14
|
+
end
|
|
15
|
+
with(Multiset.(_[_s, _], _[__s, _], _[__s, _], _[__s, _], _[__s, _])) do
|
|
16
|
+
"Flush"
|
|
17
|
+
end
|
|
18
|
+
with(Multiset.(_[_, _n], _[_, __("n+1")], _[_, __("n+2")], _[_, __("n+3")], _[_, __("n+4")])) do
|
|
19
|
+
"Straight"
|
|
20
|
+
end
|
|
21
|
+
with(Multiset.(_[_, _n], _[_, __n], _[_, __n], _, _)) do
|
|
22
|
+
"Three of kind"
|
|
23
|
+
end
|
|
24
|
+
with(Multiset.(_[_, _m], _[_, __m], _[_, _n], _[_, __n], _)) do
|
|
25
|
+
"Two pairs"
|
|
26
|
+
end
|
|
27
|
+
with(Multiset.(_[_, _n], _[_, __n], _, _, _)) do
|
|
28
|
+
"One pair"
|
|
29
|
+
end
|
|
30
|
+
with(Multiset.(_, _, _, _, _)) do
|
|
31
|
+
"Nothing"
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
describe "sample" do
|
|
37
|
+
describe "poker.rb" do
|
|
38
|
+
it "Straight flush" do
|
|
39
|
+
expect(poker_hands([["diamond", 1], ["diamond", 3], ["diamond", 5], ["diamond", 4], ["diamond", 2]])).to eq "Straight flush"
|
|
40
|
+
end
|
|
41
|
+
it "Full house" do
|
|
42
|
+
expect(poker_hands([["diamond", 1], ["club", 2], ["club", 1], ["heart", 1], ["diamond", 2]])).to eq "Full house"
|
|
43
|
+
end
|
|
44
|
+
it "Straight" do
|
|
45
|
+
expect(poker_hands([["diamond", 4], ["club", 2], ["club", 5], ["heart", 1], ["diamond", 3]])).to eq "Straight"
|
|
46
|
+
end
|
|
47
|
+
it "Nothing" do
|
|
48
|
+
expect(poker_hands([["diamond", 4], ["club", 10], ["club", 5], ["heart", 1], ["diamond", 3]])).to eq "Nothing"
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
require 'egison'
|
|
3
|
+
|
|
4
|
+
describe "sample" do
|
|
5
|
+
describe "set.rb" do
|
|
6
|
+
it %q{match_all([1,2,3,4,5]) do with(Set.(_x,_y, *_)) { [x, y] } end} do
|
|
7
|
+
expect(match_all([1,2,3,4,5]) do with(Set.(_x,_y, *_)) { [x, y] } end).to eq \
|
|
8
|
+
[[1, 1], [1, 2], [1, 3], [1, 4], [1, 5], [2, 1], [2, 2], [2, 3], [2, 4], [2, 5], [3, 1], [3, 2], [3, 3], [3, 4], [3, 5], [4, 1], [4, 2], [4, 3], [4, 4], [4, 5], [5, 1], [5, 2], [5, 3], [5, 4], [5, 5]]
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
|
data/spec/spec_helper.rb
ADDED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: egison
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.2.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Satoshi Egi
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2014-05-
|
|
11
|
+
date: 2014-05-28 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rake
|
|
@@ -24,6 +24,34 @@ dependencies:
|
|
|
24
24
|
- - ">="
|
|
25
25
|
- !ruby/object:Gem::Version
|
|
26
26
|
version: '0'
|
|
27
|
+
- !ruby/object:Gem::Dependency
|
|
28
|
+
name: rspec
|
|
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
|
+
- !ruby/object:Gem::Dependency
|
|
42
|
+
name: simplecov
|
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
|
44
|
+
requirements:
|
|
45
|
+
- - ">="
|
|
46
|
+
- !ruby/object:Gem::Version
|
|
47
|
+
version: '0'
|
|
48
|
+
type: :development
|
|
49
|
+
prerelease: false
|
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
51
|
+
requirements:
|
|
52
|
+
- - ">="
|
|
53
|
+
- !ruby/object:Gem::Version
|
|
54
|
+
version: '0'
|
|
27
55
|
description: The library to access Egison pattern-matching from Ruby.
|
|
28
56
|
email:
|
|
29
57
|
- egi@egison.org
|
|
@@ -47,6 +75,14 @@ files:
|
|
|
47
75
|
- sample/join.rb
|
|
48
76
|
- sample/poker_hands.rb
|
|
49
77
|
- sample/set.rb
|
|
78
|
+
- spec/lib/egison/core_spec.rb
|
|
79
|
+
- spec/lib/egison/matcher_spec.rb
|
|
80
|
+
- spec/lib/egison_spec.rb
|
|
81
|
+
- spec/sample/combination_spec.rb
|
|
82
|
+
- spec/sample/join_spec.rb
|
|
83
|
+
- spec/sample/poker_hands_spec.rb
|
|
84
|
+
- spec/sample/set_spec.rb
|
|
85
|
+
- spec/spec_helper.rb
|
|
50
86
|
homepage: https://github.com/egisatoshi/egison-ruby
|
|
51
87
|
licenses: []
|
|
52
88
|
metadata: {}
|