scaruby 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
data/.travis.yml ADDED
@@ -0,0 +1,11 @@
1
+ language: ruby
2
+ rvm:
3
+ # - 1.8.7
4
+ - 1.9.2
5
+ - 1.9.3
6
+ # - jruby-18mode # JRuby in 1.8 mode
7
+ # - jruby-19mode # JRuby in 1.9 mode
8
+ # - rbx-18mode
9
+ # - rbx-19mode
10
+ script: bundle exec rspec spec
11
+
@@ -8,4 +8,3 @@ module Scaruby
8
8
  end
9
9
  end
10
10
 
11
-
data/lib/scaruby/map.rb CHANGED
@@ -7,6 +7,7 @@ module Scaruby
7
7
  @hash.each do |k,v|
8
8
  yield k, v
9
9
  end
10
+ nil
10
11
  end
11
12
 
12
13
  def self.empty
@@ -30,24 +31,11 @@ module Scaruby
30
31
  end
31
32
 
32
33
  def count(&predicate)
33
- count = 0
34
- @hash.each do |k,v|
35
- if yield k, v then
36
- count += 1
37
- end
38
- end
39
- count
34
+ @hash.count(&predicate)
40
35
  end
41
36
 
42
37
  def exists(&predicate)
43
- @hash.to_a.inject(false) {|found,kv|
44
- if found then
45
- true
46
- else
47
- k, v = kv[0], kv[1]
48
- yield k, v
49
- end
50
- }
38
+ @hash.any?(&predicate)
51
39
  end
52
40
 
53
41
  def filter(&predicate)
@@ -63,31 +51,18 @@ module Scaruby
63
51
  end
64
52
 
65
53
  def find(&predicate)
66
- Option.new(@hash.inject([false,[]]) {|z,kv|
67
- found, matched_kv = z[0], z[1]
68
- if found then
69
- z
70
- elsif yield kv[0], kv[1] then
71
- [true,kv]
72
- else
73
- [false,[]]
74
- end
75
- }[1])
54
+ Option.new(@hash.find(&predicate))
76
55
  end
77
56
 
78
57
  def forall(&predicate)
79
- @hash.inject(true) {|still_matched,kv|
80
- if !still_matched then
81
- false
82
- else
83
- k, v = kv[0], kv[1]
84
- yield k, v
85
- end
86
- }
58
+ @hash.all?(&predicate)
87
59
  end
88
60
 
89
61
  def foreach(&block)
90
- @hash.each do |k,v| yield k, v end
62
+ @hash.each do |k,v|
63
+ yield k, v
64
+ end
65
+ nil
91
66
  end
92
67
 
93
68
  def get_or_else(key, default_value)
data/lib/scaruby/seq.rb CHANGED
@@ -8,6 +8,7 @@ module Scaruby
8
8
  @array.each do |e|
9
9
  yield e
10
10
  end
11
+ nil
11
12
  end
12
13
 
13
14
  def self.apply(enumerable)
@@ -146,6 +147,7 @@ module Scaruby
146
147
  @array.each do |e|
147
148
  yield e
148
149
  end
150
+ nil
149
151
  end
150
152
 
151
153
  def group_by(&block)
@@ -244,10 +246,9 @@ module Scaruby
244
246
  end
245
247
 
246
248
  def patch(from, patch, replaced)
247
- Seq.new(
248
- @array.take(from)
249
- .concat(patch)
250
- .concat(@array.drop(from).drop(replaced)))
249
+ # -- compatible with Ruby 1.8.7
250
+ #Seq.new(@array.take(from).concat(patch).concat(@array.drop(from).drop(replaced)))
251
+ Seq.new(@array.take(from) + patch + @array.drop(from).drop(replaced))
251
252
  end
252
253
 
253
254
  def reverse
@@ -1,6 +1,6 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
 
3
3
  module Scaruby
4
- VERSION = "0.0.3"
4
+ VERSION = "0.0.4"
5
5
  end
6
6
 
data/readme.md CHANGED
@@ -1,9 +1,17 @@
1
1
  # Scala API in Ruby
2
2
 
3
+ https://rubygems.org/gems/scaruby
4
+
3
5
  Surely it works fine.
4
6
 
5
7
  But it mainly serves as a Ruby reference for Scala programmers.
6
8
 
9
+
10
+ ## Supported Ruby versions
11
+
12
+ Scaruby runs on Ruby 1.9.2, 1.9.3.
13
+
14
+
7
15
  ## Gemfile
8
16
 
9
17
  ```
@@ -12,10 +20,12 @@ source "http://rubygems.org/"
12
20
  gem 'scaruby'
13
21
  ```
14
22
 
23
+
15
24
  ## Usage
16
25
 
17
26
  See specs.
18
27
 
28
+
19
29
  ## Trying on irb
20
30
 
21
31
  ```sh
@@ -23,7 +33,7 @@ bundle console
23
33
  ```
24
34
 
25
35
  ```ruby
26
- irb(main):008:0> require 'scaruby'
36
+ irb(main):008:0> require 'scaruby'
27
37
  => false
28
38
 
29
39
  irb(main):009:0> Option.new(nil).is_defined
@@ -73,9 +83,9 @@ In this case, the methods already defined (i.e. flat_map, find and so on) are ne
73
83
  ```ruby
74
84
  irb(main):015:0> require 'scaruby/core_ext'
75
85
  => true
76
- irb(main):016:0> 1.upto(5).filter {|i| i < 3 }
86
+ irb(main):016:0> 1.upto(5).filter {|i| i < 3 }
77
87
  => [1, 2]
78
- irb(main):020:0> 1.upto(5).filter {|i| i < 3 }.foreach do |i|
88
+ irb(main):020:0> 1.upto(5).filter {|i| i < 3 }.foreach do |i|
79
89
  irb(main):021:1* puts i
80
90
  irb(main):022:1> end
81
91
  1
@@ -86,6 +96,12 @@ irb(main):027:0> {123=>'abc',23=>'bc',345=>'cde'}.filter {|k,v| k.to_s.size == 3
86
96
  => {123=>"abc", 345=>"cde"}
87
97
  ```
88
98
 
99
+
100
+ ## Build Status
101
+
102
+ [![Build Status](https://secure.travis-ci.org/seratch/scaruby.png)](http://travis-ci.org/seratch/scaruby)
103
+
104
+
89
105
  ## License
90
106
 
91
107
  MIT License
data/scaruby.gemspec CHANGED
@@ -18,7 +18,6 @@ Gem::Specification.new do |s|
18
18
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
19
19
  s.require_paths = ["lib"]
20
20
 
21
- # specify any dependencies here; for example:
22
- # s.add_development_dependency "rspec"
23
- # s.add_runtime_dependency "rest-client"
21
+ s.required_ruby_version = '>= 1.9.2'
22
+
24
23
  end
@@ -8,64 +8,64 @@ describe Enumerable do
8
8
  one_to_five_shuffled = one_to_five.sort_by {rand}
9
9
 
10
10
  it 'has #to_a' do
11
- (one_to_five).to_a.should eq([1,2,3,4,5])
11
+ one_to_five.to_a.should eq([1,2,3,4,5])
12
12
  end
13
13
  it 'has #corresponds' do
14
- ([1,2,3]).corresponds([1,2,3]) {|a,b| a == b }.should eq(true)
15
- ([1,2,3]).corresponds([3,1,2]) {|a,b| a == b }.should eq(false)
14
+ [1,2,3].corresponds([1,2,3]) {|a,b| a == b }.should eq(true)
15
+ [1,2,3].corresponds([3,1,2]) {|a,b| a == b }.should eq(false)
16
16
  end
17
17
  it 'has #count' do
18
- (one_to_five).count {|i| i > 2 }.should eq(3)
18
+ one_to_five.count {|i| i > 2 }.should eq(3)
19
19
  end
20
20
  it 'has #diff' do
21
- ([1,2,3]).diff([2,3,4]).to_a.should eq([1])
21
+ [1,2,3].diff([2,3,4]).to_a.should eq([1])
22
22
  end
23
23
  it 'has #distinct' do
24
- ([1,2,4,1,3,3,3,2,4,1]).distinct.to_a.should eq([1,2,4,3])
24
+ [1,2,4,1,3,3,3,2,4,1].distinct.to_a.should eq([1,2,4,3])
25
25
  end
26
26
  it 'has #drop' do
27
- (one_to_five).drop(3).to_a.should eq([4,5])
28
- (one_to_five).drop(7).to_a.should eq([])
27
+ one_to_five.drop(3).to_a.should eq([4,5])
28
+ one_to_five.drop(7).to_a.should eq([])
29
29
  end
30
30
  it 'has #drop_right' do
31
- (one_to_five).drop_right(3).to_a.should eq([1,2])
32
- (one_to_five).drop_right(7).to_a.should eq([])
31
+ one_to_five.drop_right(3).to_a.should eq([1,2])
32
+ one_to_five.drop_right(7).to_a.should eq([])
33
33
  end
34
34
  it 'has #drop_while' do
35
- ([5,3,2,4,1]).drop_while {|e| e > 2 }.to_a.should eq([2,4,1])
35
+ [5,3,2,4,1].drop_while {|e| e > 2 }.to_a.should eq([2,4,1])
36
36
  end
37
37
  it 'has #ends_with' do
38
- ([1,2,3]).ends_with([1,2]).should eq(false)
39
- ([1,2,3]).ends_with([1,2,3]).should eq(true)
40
- ([1,2,3]).ends_with([1,1,2,3]).should eq(false)
41
- ([1,2,3]).ends_with([2,3]).should eq(true)
42
- ([1,2,3]).ends_with([3]).should eq(true)
38
+ [1,2,3].ends_with([1,2]).should eq(false)
39
+ [1,2,3].ends_with([1,2,3]).should eq(true)
40
+ [1,2,3].ends_with([1,1,2,3]).should eq(false)
41
+ [1,2,3].ends_with([2,3]).should eq(true)
42
+ [1,2,3].ends_with([3]).should eq(true)
43
43
  end
44
44
  it 'has #exists' do
45
- ([1,2,3]).exists {|i| i < 2 }.should eq(true)
46
- ([1,2,3]).exists {|i| i < 4 }.should eq(true)
47
- ([2,3,4]).exists {|i| i > 4 }.should eq(false)
45
+ [1,2,3].exists {|i| i < 2 }.should eq(true)
46
+ [1,2,3].exists {|i| i < 4 }.should eq(true)
47
+ [2,3,4].exists {|i| i > 4 }.should eq(false)
48
48
  end
49
49
  it 'has #filter' do
50
- (one_to_five).filter {|i| i > 3 }.to_a.should eq([4,5])
51
- (one_to_five).filter {|i| i > 10 }.to_a.should eq([])
50
+ one_to_five.filter {|i| i > 3 }.to_a.should eq([4,5])
51
+ one_to_five.filter {|i| i > 10 }.to_a.should eq([])
52
52
  end
53
53
  it 'has #filter_not' do
54
- (one_to_five).filter_not {|i| i > 3 }.to_a.should eq([1,2,3])
55
- (one_to_five).filter_not {|i| i > 10 }.to_a.should eq([1,2,3,4,5])
54
+ one_to_five.filter_not {|i| i > 3 }.to_a.should eq([1,2,3])
55
+ one_to_five.filter_not {|i| i > 10 }.to_a.should eq([1,2,3,4,5])
56
56
  end
57
57
  it 'has #find' do
58
- some = (one_to_five).find {|i| i < 3 }
58
+ some = one_to_five.find {|i| i < 3 }
59
59
  # the already defined method is called
60
60
  #some.get.should eq(1)
61
61
  some.should eq(1)
62
- none = (one_to_five).find {|i| i > 10 }
62
+ none = one_to_five.find {|i| i > 10 }
63
63
  # the already defined method is called
64
64
  #none.is_defined.should eq(false)
65
65
  none.should eq(nil)
66
66
  end
67
67
  it 'has #flat_map and it works with nested arrays' do
68
- ([[1,2],[3,4],[5]]).flat_map {|i| i }.to_a.should eq([1,2,3,4,5])
68
+ [[1,2],[3,4],[5]].flat_map {|i| i }.to_a.should eq([1,2,3,4,5])
69
69
  end
70
70
  it 'has #flat_map and it works with Option elements' do
71
71
  # the already defined method is called
@@ -78,7 +78,7 @@ describe Enumerable do
78
78
  input = [1,2,3]
79
79
  expected = [1,2,3]
80
80
  idx = 0
81
- (input).fold_left(0) {|z,x|
81
+ input.fold_left(0) {|z,x|
82
82
  x.should eq(expected[idx])
83
83
  idx += 1
84
84
  z + x
@@ -88,42 +88,42 @@ describe Enumerable do
88
88
  input = [1,2,3]
89
89
  expected = [3,2,1]
90
90
  idx = 0
91
- (input).fold_right(0) {|z,x|
91
+ input.fold_right(0) {|z,x|
92
92
  x.should eq(expected[idx])
93
93
  idx += 1
94
94
  z + x
95
95
  }.should eq(6)
96
96
  end
97
97
  it 'has #flatten' do
98
- ([[1,2],[3,4],[5]]).flatten.to_a.should eq([1,2,3,4,5])
99
- ([Option.new(1),
98
+ [[1,2],[3,4],[5]].flatten.to_a.should eq([1,2,3,4,5])
99
+ [Option.new(1),
100
100
  Option.new(2),
101
101
  Option.new(nil),
102
- Option.new(3)]
103
- ).flatten.to_a.each do |opt|
102
+ Option.new(3)].flatten.to_a.each do |opt|
104
103
  opt.is_a?(Option).should eq(true)
105
104
  end
106
105
  end
107
106
  it 'has #forall' do
108
- ([1,2,3]).forall {|i| i > 0 }.should eq(true)
109
- ([1,2,3]).forall {|i| i > 1 }.should eq(false)
107
+ [1,2,3].forall {|i| i > 0 }.should eq(true)
108
+ [1,2,3].forall {|i| i > 1 }.should eq(false)
110
109
  end
111
110
  it 'has #foreach' do
112
111
  count = 0
113
- ([1,2,3]).foreach do |i|
112
+ returned = ([1,2,3]).foreach do |i|
114
113
  count += 1
115
114
  end
116
115
  count.should eq(3)
116
+ returned.should eq(nil)
117
117
  end
118
118
  it 'has #group_by' do
119
119
  expected = {3=>[3,3,3], 1=>[1,1,1], 2=>[2,2]}
120
- ([1,1,1,2,3,2,3,3]).group_by {|i| i }.to_hash.should eq(expected)
120
+ [1,1,1,2,3,2,3,3].group_by {|i| i }.to_hash.should eq(expected)
121
121
  end
122
122
  it 'has #head' do
123
- (one_to_five).head.should eq(1)
123
+ one_to_five.head.should eq(1)
124
124
  end
125
125
  it 'has #head_option and it works with Some' do
126
- some = (one_to_five).head_option
126
+ some = one_to_five.head_option
127
127
  some.get_or_else(999).should eq(1)
128
128
  end
129
129
  it 'has #head_option and it works with None' do
@@ -131,30 +131,30 @@ describe Enumerable do
131
131
  none.get_or_else(999).should eq(999)
132
132
  end
133
133
  it 'has #indices' do
134
- ([1,2,3]).indices.to_a.should eq([0,1,2])
134
+ [1,2,3].indices.to_a.should eq([0,1,2])
135
135
  end
136
136
  it 'has #init' do
137
- ([1,2,3]).init.to_a.should eq([1,2])
137
+ [1,2,3].init.to_a.should eq([1,2])
138
138
  end
139
139
  it 'has #intersect' do
140
- ([1,2,3]).intersect([2,3,4]).to_a.should eq([2,3])
140
+ [1,2,3].intersect([2,3,4]).to_a.should eq([2,3])
141
141
  end
142
142
  it 'has #is_empty' do
143
- ([1,2,3]).is_empty.should eq(false)
144
- ([nil]).is_empty.should eq(false)
145
- ([]).is_empty.should eq(true)
143
+ [1,2,3].is_empty.should eq(false)
144
+ [nil].is_empty.should eq(false)
145
+ [].is_empty.should eq(true)
146
146
  end
147
147
  it 'has #last' do
148
- ([1,2,3]).last.should eq(3)
148
+ [1,2,3].last.should eq(3)
149
149
  end
150
150
  it 'has #last_option' do
151
- some = ([1,2,3]).last_option
151
+ some = [1,2,3].last_option
152
152
  some.get.should eq(3)
153
153
  none = ([]).last_option
154
154
  none.is_defined.should eq(false)
155
155
  end
156
156
  it 'has #lift' do
157
- seq_lift = ([1,2,3]).lift
157
+ seq_lift = [1,2,3].lift
158
158
  seq_lift.apply(0).get.should eq(1)
159
159
  seq_lift.apply(1).get.should eq(2)
160
160
  seq_lift.apply(2).get.should eq(3)
@@ -165,50 +165,50 @@ describe Enumerable do
165
165
  seq_lift.call(3).is_defined.should eq(false)
166
166
  end
167
167
  it 'has #map' do
168
- ([1,2,3]).map {|i| i + i }.to_a.should eq([2,4,6])
168
+ [1,2,3].map {|i| i + i }.to_a.should eq([2,4,6])
169
169
  end
170
170
  it 'has #max' do
171
- (one_to_five_shuffled).max.should eq(5)
171
+ one_to_five_shuffled.max.should eq(5)
172
172
  end
173
173
  it 'has #min' do
174
- (one_to_five_shuffled).min.should eq(1)
174
+ one_to_five_shuffled.min.should eq(1)
175
175
  end
176
176
  it 'has #mk_string' do
177
- (one_to_five).mk_string.should eq('12345')
178
- (one_to_five).mk_string(',').should eq('1,2,3,4,5')
179
- (one_to_five).mk_string('^',',','$').should eq('^1,2,3,4,5$')
177
+ one_to_five.mk_string.should eq('12345')
178
+ one_to_five.mk_string(',').should eq('1,2,3,4,5')
179
+ one_to_five.mk_string('^',',','$').should eq('^1,2,3,4,5$')
180
180
  begin
181
- (one_to_five).mk_string('a','b').should eq(nil)
181
+ one_to_five.mk_string('a','b').should eq(nil)
182
182
  rescue ArgumentError
183
183
  end
184
- (one_to_five).mk_string('^',',','$','zzz').should eq('^1,2,3,4,5$')
184
+ one_to_five.mk_string('^',',','$','zzz').should eq('^1,2,3,4,5$')
185
185
  end
186
186
  it 'has #non_empty' do
187
- (one_to_five).non_empty.should eq(true)
188
- ([]).non_empty.should eq(false)
187
+ one_to_five.non_empty.should eq(true)
188
+ [].non_empty.should eq(false)
189
189
  end
190
190
  it 'has #partition' do
191
- ([5,2,3,1,4,2,3]).partition {|i| i < 3 }.to_a.should eq([[2,1,2],[5,3,4,3]])
191
+ [5,2,3,1,4,2,3].partition {|i| i < 3 }.to_a.should eq([[2,1,2],[5,3,4,3]])
192
192
  end
193
193
  it 'has #patch' do
194
- ([5,2,3,1,4,2,3]).patch(3,[111,222],3).to_a.should eq([5,2,3,111,222,3])
194
+ [5,2,3,1,4,2,3].patch(3,[111,222],3).to_a.should eq([5,2,3,111,222,3])
195
195
  end
196
196
  it 'has #reverse' do
197
- ([1,2,3]).reverse.to_a.should eq([3,2,1])
197
+ [1,2,3].reverse.to_a.should eq([3,2,1])
198
198
  end
199
199
  it 'has #reverse_map' do
200
- ([1,2,3]).reverse_map {|i| i + i }.to_a.should eq([6,4,2])
200
+ [1,2,3].reverse_map {|i| i + i }.to_a.should eq([6,4,2])
201
201
  end
202
202
  it 'has #same_elements' do
203
- ([1,2,3]).same_elements([1,2,3]).should eq(true)
204
- ([1,2,3]).same_elements([1,3,2]).should eq(false)
205
- ([1,2,3]).same_elements([1,2]).should eq(false)
203
+ [1,2,3].same_elements([1,2,3]).should eq(true)
204
+ [1,2,3].same_elements([1,3,2]).should eq(false)
205
+ [1,2,3].same_elements([1,2]).should eq(false)
206
206
  end
207
207
  it 'has #scan_left' do
208
- ([1,2,3]).scan_left(1) {|a,b| a + b }.to_a.should eq([1,2,4,7])
208
+ [1,2,3].scan_left(1) {|a,b| a + b }.to_a.should eq([1,2,4,7])
209
209
  end
210
210
  it 'has #scan_right' do
211
- ([1,2,3]).scan_right(1) {|a,b| a + b }.to_a.should eq([7,6,4,1])
211
+ [1,2,3].scan_right(1) {|a,b| a + b }.to_a.should eq([7,6,4,1])
212
212
  end
213
213
  it 'has #slice' do
214
214
  # the already defined method is called
@@ -222,54 +222,54 @@ describe Enumerable do
222
222
  [1,2,3,4,5].slice(1,4).should eq([2,3,4,5])
223
223
  end
224
224
  it 'has #sliding' do
225
- ([1,2,3,4,5]).sliding(2).to_a.should eq([[1,2],[2,3],[3,4],[4,5]])
225
+ [1,2,3,4,5].sliding(2).to_a.should eq([[1,2],[2,3],[3,4],[4,5]])
226
226
  end
227
227
  it 'has #sort_with' do
228
- ([1,3,2,4,5]).sort_with {|a,b| b <=> a }.to_a.should eq([5,4,3,2,1])
228
+ [1,3,2,4,5].sort_with {|a,b| b <=> a }.to_a.should eq([5,4,3,2,1])
229
229
  end
230
230
  it 'has #span' do
231
- ([1,2,3,2,1]).span {|i| i < 3 }.to_a.should eq([[1,2],[3,2,1]])
231
+ [1,2,3,2,1].span {|i| i < 3 }.to_a.should eq([[1,2],[3,2,1]])
232
232
  end
233
233
  it 'has #split_at' do
234
- ([1,2,3,2,1]).split_at(3).to_a.should eq([[1,2,3],[2,1]])
234
+ [1,2,3,2,1].split_at(3).to_a.should eq([[1,2,3],[2,1]])
235
235
  end
236
236
  it 'has #starts_with' do
237
- ([1,2,3]).starts_with([1]).should eq(true)
238
- ([1,2,3]).starts_with([1,2]).should eq(true)
239
- ([1,2,3]).starts_with([1,2,3]).should eq(true)
240
- ([1,2,3]).starts_with([1,2,3,4]).should eq(false)
241
- ([1,2,3]).starts_with([2,3]).should eq(false)
242
- ([1,2,3]).starts_with([4,1,2,3]).should eq(false)
237
+ [1,2,3].starts_with([1]).should eq(true)
238
+ [1,2,3].starts_with([1,2]).should eq(true)
239
+ [1,2,3].starts_with([1,2,3]).should eq(true)
240
+ [1,2,3].starts_with([1,2,3,4]).should eq(false)
241
+ [1,2,3].starts_with([2,3]).should eq(false)
242
+ [1,2,3].starts_with([4,1,2,3]).should eq(false)
243
243
  end
244
244
  it 'has #sum' do
245
- ([1,2,3]).sum.should eq(6)
245
+ [1,2,3].sum.should eq(6)
246
246
  end
247
247
  it 'has #tail' do
248
- ([1,2,3]).tail.to_a.should eq([2,3])
249
- ([]).tail.to_a.should eq([])
248
+ [1,2,3].tail.to_a.should eq([2,3])
249
+ [].tail.to_a.should eq([])
250
250
  end
251
251
  it 'has #take' do
252
- ([1,2,3]).take(0).to_a.should eq([])
253
- ([1,2,3]).take(1).to_a.should eq([1])
254
- ([1,2,3]).take(2).to_a.should eq([1,2])
255
- ([1,2,3]).take(3).to_a.should eq([1,2,3])
256
- ([1,2,3]).take(4).to_a.should eq([1,2,3])
252
+ [1,2,3].take(0).to_a.should eq([])
253
+ [1,2,3].take(1).to_a.should eq([1])
254
+ [1,2,3].take(2).to_a.should eq([1,2])
255
+ [1,2,3].take(3).to_a.should eq([1,2,3])
256
+ [1,2,3].take(4).to_a.should eq([1,2,3])
257
257
  end
258
258
  it 'has #take_right' do
259
- ([1,2,3]).take_right(0).to_a.should eq([])
260
- ([1,2,3]).take_right(1).to_a.should eq([3])
261
- ([1,2,3]).take_right(2).to_a.should eq([2,3])
262
- ([1,2,3]).take_right(3).to_a.should eq([1,2,3])
263
- ([1,2,3]).take_right(4).to_a.should eq([1,2,3])
259
+ [1,2,3].take_right(0).to_a.should eq([])
260
+ [1,2,3].take_right(1).to_a.should eq([3])
261
+ [1,2,3].take_right(2).to_a.should eq([2,3])
262
+ [1,2,3].take_right(3).to_a.should eq([1,2,3])
263
+ [1,2,3].take_right(4).to_a.should eq([1,2,3])
264
264
  end
265
265
  it 'has #take_while' do
266
- ([5,3,2,4,1]).take_while {|e| e > 2 }.to_a.should eq([5,3])
266
+ [5,3,2,4,1].take_while {|e| e > 2 }.to_a.should eq([5,3])
267
267
  end
268
268
  it 'has #union' do
269
- ([1,2,3]).union([2,3,4]).to_a.should eq([1,2,3,2,3,4])
269
+ [1,2,3].union([2,3,4]).to_a.should eq([1,2,3,2,3,4])
270
270
  end
271
271
  it 'has #updated' do
272
- ([1,2,3]).updated(1,999).to_a.should eq([1,999,3])
272
+ [1,2,3].updated(1,999).to_a.should eq([1,999,3])
273
273
  end
274
274
  it 'has #zip' do
275
275
  # the already defined method is called
@@ -281,8 +281,8 @@ describe Enumerable do
281
281
  [1,2,3].zip([2,3,4,5]).should eq([[1,2],[2,3],[3,4]])
282
282
  end
283
283
  it 'has #zip_with_index' do
284
- ([]).zip_with_index.to_a.should eq([])
285
- ([1,2,3]).zip_with_index.to_a.should eq([[1,0],[2,1],[3,2]])
284
+ [].zip_with_index.to_a.should eq([])
285
+ [1,2,3].zip_with_index.to_a.should eq([[1,0],[2,1],[3,2]])
286
286
  end
287
287
 
288
288
  end
@@ -7,54 +7,54 @@ describe Hash do
7
7
  hash = {123 => 'abc', 234 => 'bcd', 345 => 'cde', 4 => 'd', 56 => 'ef', 7 => 'g', 89 => 'hi' }
8
8
 
9
9
  it 'has #contains' do
10
- (hash).contains(123).should eq(true)
11
- (hash).contains(999).should eq(false)
10
+ hash.contains(123).should eq(true)
11
+ hash.contains(999).should eq(false)
12
12
  end
13
13
  it 'has #count' do
14
- (hash).count {|k,v| k.to_s.length >= 2 }.should eq(5)
14
+ hash.count {|k,v| k.to_s.length >= 2 }.should eq(5)
15
15
  end
16
16
  it 'hash Map.empty' do
17
17
  Map.empty.should eq({})
18
18
  end
19
19
  it 'has #exists' do
20
- (hash).exists {|k,v| k.to_s.length == 1 }.should eq(true)
20
+ hash.exists {|k,v| k.to_s.length == 1 }.should eq(true)
21
21
  end
22
22
  it 'has #filter' do
23
- (hash).filter {|k,v| k.to_s.length < 3 }.to_hash.size.should eq(4)
23
+ hash.filter {|k,v| k.to_s.length < 3 }.to_hash.size.should eq(4)
24
24
  end
25
25
  it 'has #filter_keys' do
26
- (hash).filter_keys {|k| k.to_s.length < 3 }.to_hash.size.should eq(4)
26
+ hash.filter_keys {|k| k.to_s.length < 3 }.to_hash.size.should eq(4)
27
27
  end
28
28
  it 'has #filter_not' do
29
- (hash).filter_not {|k| k.to_s.length < 3 }.to_hash.to_s.should eq('{123=>"abc", 234=>"bcd", 345=>"cde"}')
29
+ hash.filter_not {|k,v| k.to_s.length < 3 }.to_hash.to_s.should eq('{123=>"abc", 234=>"bcd", 345=>"cde"}')
30
30
  end
31
31
  it 'has #find' do
32
32
  # the already defined method is called
33
- #(hash).find {|k,v| k.to_s.length == 2 }.get[1].should eq('ef')
34
- (hash).find {|k,v| k.to_s.length == 2 }[1].should eq('ef')
33
+ #hash.find {|k,v| k.to_s.length == 2 }.get[1].should eq('ef')
34
+ hash.find {|k,v| k.to_s.length == 2 }[1].should eq('ef')
35
35
  end
36
36
  it 'has #forall' do
37
- (hash).forall {|k,v| k.to_s.length <= 3 }.should eq(true)
38
- (hash).forall {|k,v| k.to_s.length >= 2 }.should eq(false)
37
+ hash.forall {|k,v| k.to_s.length <= 3 }.should eq(true)
38
+ hash.forall {|k,v| k.to_s.length >= 2 }.should eq(false)
39
39
  end
40
40
  it 'has #foreach' do
41
- (hash).foreach do |k,v|
41
+ hash.foreach do |k,v|
42
42
  hash.include?(k).should eq(true)
43
43
  end
44
44
  end
45
45
  it 'has #get_or_else' do
46
- (hash).get_or_else(123, 'xxx').should eq('abc')
47
- (hash).get_or_else(999, 'xxx').should eq('xxx')
46
+ hash.get_or_else(123, 'xxx').should eq('abc')
47
+ hash.get_or_else(999, 'xxx').should eq('xxx')
48
48
  end
49
49
  it 'has #is_empty' do
50
- (hash).is_empty.should eq(false)
51
- ({}).is_empty.should eq(true)
50
+ hash.is_empty.should eq(false)
51
+ {}.is_empty.should eq(true)
52
52
  end
53
53
  it 'has #key_set' do
54
- (hash).key_set.should eq(hash.keys)
54
+ hash.key_set.should eq(hash.keys)
55
55
  end
56
56
  it 'has #lift' do
57
- lifted = (hash).lift
57
+ lifted = hash.lift
58
58
  lifted.apply(123).get.should eq('abc')
59
59
  lifted.apply(999).is_defined.should eq(false)
60
60
  lifted.call(123).get.should eq('abc')
@@ -62,29 +62,29 @@ describe Hash do
62
62
  end
63
63
  it 'has #map' do
64
64
  # the already defined method is called
65
- #new_map = (hash).map {|k,v| [k+k,v] }.to_hash
65
+ #new_map = hash.map {|k,v| [k+k,v] }.to_hash
66
66
  #new_map.include?(246).should eq(true)
67
- seq = (hash).map {|k,v| [k+k,v] }
67
+ seq = hash.map {|k,v| [k+k,v] }
68
68
  seq.include?([246,'abc']).should eq(true)
69
69
  end
70
70
  it 'has #minus' do
71
- (hash).minus(123,234,345).to_hash.should eq({4=>'d',56=>'ef',7=>'g',89=>'hi'})
71
+ hash.minus(123,234,345).to_hash.should eq({4=>'d',56=>'ef',7=>'g',89=>'hi'})
72
72
  end
73
73
  it 'has #mk_string' do
74
- (hash).mk_string().should eq('{123=>abc, 234=>bcd, 345=>cde, 4=>d, 56=>ef, 7=>g, 89=>hi}')
74
+ hash.mk_string().should eq('{123=>abc, 234=>bcd, 345=>cde, 4=>d, 56=>ef, 7=>g, 89=>hi}')
75
75
  end
76
76
  it 'has #non_empty' do
77
- (hash).non_empty.should eq(true)
78
- ({}).non_empty.should eq(false)
77
+ hash.non_empty.should eq(true)
78
+ {}.non_empty.should eq(false)
79
79
  end
80
80
  it 'has #plus' do
81
- ({123=>'abc',234=>'bcd'}).plus([[345,'cde']]).to_hash.should eq({123=>'abc',234=>'bcd',345=>'cde'})
81
+ {123=>'abc',234=>'bcd'}.plus([[345,'cde']]).to_hash.should eq({123=>'abc',234=>'bcd',345=>'cde'})
82
82
  end
83
83
  it 'has #updated' do
84
- ({123=>'abc',234=>'bcd'}).updated(345,'cde').to_hash.should eq({123=>'abc',234=>'bcd',345=>'cde'})
84
+ {123=>'abc',234=>'bcd'}.updated(345,'cde').to_hash.should eq({123=>'abc',234=>'bcd',345=>'cde'})
85
85
  end
86
86
  it 'has #unzip' do
87
- unzipped = ({123=>'abc',234=>'bcd'}).unzip.to_a
87
+ unzipped = {123=>'abc',234=>'bcd'}.unzip.to_a
88
88
  unzipped[0].should eq([123,234])
89
89
  unzipped[1].should eq(['abc','bcd'])
90
90
  end
@@ -15,12 +15,13 @@ describe Map do
15
15
  it 'has #each' do
16
16
  expected_key = 1
17
17
  expected_value = 10
18
- Map.new({1=>10,2=>20}).each do |k,v|
18
+ returned = Map.new({1=>10,2=>20}).each do |k,v|
19
19
  k.should eq(expected_key)
20
20
  v.should eq(expected_value)
21
21
  expected_key += 1
22
22
  expected_value += 10
23
23
  end
24
+ returned.should eq(nil)
24
25
  end
25
26
 
26
27
  # defined
@@ -44,7 +45,7 @@ describe Map do
44
45
  Map.new(hash).filter_keys {|k| k.to_s.length < 3 }.to_hash.size.should eq(4)
45
46
  end
46
47
  it 'has #filter_not' do
47
- Map.new(hash).filter_not {|k| k.to_s.length < 3 }.to_hash.to_s.should eq('{123=>"abc", 234=>"bcd", 345=>"cde"}')
48
+ Map.new(hash).filter_not {|k,v| k.to_s.length < 3 }.to_hash.to_s.should eq('{123=>"abc", 234=>"bcd", 345=>"cde"}')
48
49
  end
49
50
  it 'has #find' do
50
51
  Map.new(hash).find {|k,v| k.to_s.length == 2 }.get[1].should eq('ef')
@@ -54,9 +55,10 @@ describe Map do
54
55
  Map.new(hash).forall {|k,v| k.to_s.length >= 2 }.should eq(false)
55
56
  end
56
57
  it 'has #foreach' do
57
- Map.new(hash).foreach do |k,v|
58
+ returned = Map.new(hash).foreach do |k,v|
58
59
  hash.include?(k).should eq(true)
59
60
  end
61
+ returned.should eq(nil)
60
62
  end
61
63
  it 'has #get_or_else' do
62
64
  Map.new(hash).get_or_else(123, 'xxx').should eq('abc')
@@ -21,10 +21,11 @@ describe Seq do
21
21
  # as a sub type of Enumerable
22
22
  it 'has #each' do
23
23
  expected = 0
24
- Seq.new([0,1,2,3]).each do |e|
24
+ returned = Seq.new([0,1,2,3]).each do |e|
25
25
  e.should eq(expected)
26
26
  expected += 1
27
27
  end
28
+ returned.should eq(nil)
28
29
  end
29
30
  it 'has #all?' do
30
31
  Seq.new([1,2,3]).all? {|e| e < 4 }.should eq(true)
@@ -126,10 +127,11 @@ describe Seq do
126
127
  end
127
128
  it 'has #foreach' do
128
129
  count = 0
129
- Seq.new([1,2,3]).foreach do |i|
130
+ returned = Seq.new([1,2,3]).foreach do |i|
130
131
  count += 1
131
132
  end
132
133
  count.should eq(3)
134
+ returned.should eq(nil)
133
135
  end
134
136
  it 'has #group_by' do
135
137
  expected = {3=>[3,3,3], 1=>[1,1,1], 2=>[2,2]}
metadata CHANGED
@@ -1,29 +1,25 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: scaruby
3
- version: !ruby/object:Gem::Version
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.4
4
5
  prerelease:
5
- version: 0.0.3
6
6
  platform: ruby
7
- authors:
7
+ authors:
8
8
  - Kazuhiro Sera
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
-
13
- date: 2012-03-03 00:00:00 Z
12
+ date: 2012-03-05 00:00:00.000000000 Z
14
13
  dependencies: []
15
-
16
14
  description: Scala API in Ruby
17
- email:
15
+ email:
18
16
  - seratch@gmail.com
19
17
  executables: []
20
-
21
18
  extensions: []
22
-
23
19
  extra_rdoc_files: []
24
-
25
- files:
20
+ files:
26
21
  - .gitignore
22
+ - .travis.yml
27
23
  - Gemfile
28
24
  - LICENSE.txt
29
25
  - Rakefile
@@ -49,32 +45,29 @@ files:
49
45
  - spec/scaruby_spec.rb
50
46
  homepage: https://github.com/seratch/scaruby
51
47
  licenses: []
52
-
53
48
  post_install_message:
54
49
  rdoc_options: []
55
-
56
- require_paths:
50
+ require_paths:
57
51
  - lib
58
- required_ruby_version: !ruby/object:Gem::Requirement
52
+ required_ruby_version: !ruby/object:Gem::Requirement
59
53
  none: false
60
- requirements:
61
- - - ">="
62
- - !ruby/object:Gem::Version
63
- version: "0"
64
- required_rubygems_version: !ruby/object:Gem::Requirement
54
+ requirements:
55
+ - - ! '>='
56
+ - !ruby/object:Gem::Version
57
+ version: 1.9.2
58
+ required_rubygems_version: !ruby/object:Gem::Requirement
65
59
  none: false
66
- requirements:
67
- - - ">="
68
- - !ruby/object:Gem::Version
69
- version: "0"
60
+ requirements:
61
+ - - ! '>='
62
+ - !ruby/object:Gem::Version
63
+ version: '0'
70
64
  requirements: []
71
-
72
65
  rubyforge_project: scaruby
73
- rubygems_version: 1.8.15
66
+ rubygems_version: 1.8.17
74
67
  signing_key:
75
68
  specification_version: 3
76
69
  summary: Scala API in Ruby
77
- test_files:
70
+ test_files:
78
71
  - spec/scaruby/converter_spec.rb
79
72
  - spec/scaruby/core_ext/enumerable_spec.rb
80
73
  - spec/scaruby/core_ext/hash_spec.rb