visionmedia-rext 0.0.7 → 0.0.8

Sign up to get free protection for your applications and to get access to all the features.
data/History.rdoc CHANGED
@@ -1,4 +1,9 @@
1
1
 
2
+ === 0.0.8 / 2009-04-13
3
+
4
+ * Added Array#chunk/in_groups_of
5
+ * Added Array#pad
6
+
2
7
  === 0.0.7 / 2009-04-08
3
8
 
4
9
  * Added Hash#switchify
@@ -1,4 +1,6 @@
1
1
 
2
+ require 'enumerator'
3
+
2
4
  class Array
3
5
 
4
6
  ##
@@ -15,4 +17,48 @@ class Array
15
17
  self[0..position]
16
18
  end
17
19
 
20
+ ##
21
+ # Pad array with expected length +n+, and +pad_with+ an
22
+ # optional object or nil.
23
+ #
24
+ # === Examples
25
+ #
26
+ # [1,2].pad(4) # => [1,2,nil,nil]
27
+ # [1,2].pad(4) # => [1,2,'x','x']
28
+ # [1,2].pad(2) # => [1,2]
29
+ #
30
+
31
+ def pad n, pad_with = nil
32
+ fill pad_with, length, n - length
33
+ end
34
+
35
+ ##
36
+ # Split an array into chunks of length +n+. Optionally you
37
+ # may +pad_with+ an object to retain a uniform length per chunk.
38
+ #
39
+ # === Examples
40
+ #
41
+ # [1,2,3].chunk(2) # => [[1,2], [3, nil]]
42
+ # [1,2,3].chunk(2, 'x') # => [[1,2], [3, 'x']]
43
+ # [1,2,3].chunk(2, false) # => [[1,2], [3]]
44
+ # [1,2,3].in_groups_of(2) do |chunk|
45
+ # # Do something
46
+ # end
47
+ #
48
+ # === See
49
+ #
50
+ # * Array#pad
51
+ #
52
+
53
+ def chunk n, pad_with = nil, &block
54
+ chunks = []
55
+ each_slice n do |chunk|
56
+ chunk.pad n, pad_with unless pad_with == false
57
+ yield chunk if block
58
+ chunks << chunk
59
+ end
60
+ chunks
61
+ end
62
+ alias :in_groups_of :chunk
63
+
18
64
  end
data/lib/rext/version.rb CHANGED
@@ -1,4 +1,4 @@
1
1
 
2
2
  module Rext
3
- VERSION = '0.0.7'
3
+ VERSION = '0.0.8'
4
4
  end
data/rext.gemspec CHANGED
@@ -2,11 +2,11 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{rext}
5
- s.version = "0.0.7"
5
+ s.version = "0.0.8"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["TJ Holowaychuk"]
9
- s.date = %q{2009-04-08}
9
+ s.date = %q{2009-04-13}
10
10
  s.description = %q{Ruby extensions}
11
11
  s.email = %q{tj@vision-media.ca}
12
12
  s.extra_rdoc_files = ["lib/rext/all.rb", "lib/rext/array/helpers.rb", "lib/rext/array.rb", "lib/rext/compat/basic_object.rb", "lib/rext/compat.rb", "lib/rext/date/helpers.rb", "lib/rext/date.rb", "lib/rext/enumerable/helpers.rb", "lib/rext/enumerable.rb", "lib/rext/hash/helpers.rb", "lib/rext/hash.rb", "lib/rext/integer/helpers.rb", "lib/rext/integer.rb", "lib/rext/module/helpers.rb", "lib/rext/module.rb", "lib/rext/numeric/bytes.rb", "lib/rext/numeric/time.rb", "lib/rext/numeric.rb", "lib/rext/object/helpers.rb", "lib/rext/object/metaclass.rb", "lib/rext/object.rb", "lib/rext/proc/helpers.rb", "lib/rext/proc.rb", "lib/rext/string/escape.rb", "lib/rext/string/helpers.rb", "lib/rext/string.rb", "lib/rext/time/helpers.rb", "lib/rext/time.rb", "lib/rext/version.rb", "lib/rext.rb", "README.rdoc", "tasks/benchmark.rake", "tasks/docs.rake", "tasks/gemspec.rake", "tasks/spec.rake"]
data/spec/array_spec.rb CHANGED
@@ -20,5 +20,41 @@ describe Array do
20
20
  end
21
21
  end
22
22
 
23
+ describe "#chunk" do
24
+ it "should split an array into several containing the length of n" do
25
+ (1..9).to_a.chunk(3).should == [[1,2,3], [4,5,6], [7,8,9]]
26
+ end
27
+
28
+ it "should accept a block, yielding each chunk" do
29
+ chunks = []
30
+ (1..9).to_a.in_groups_of(3) do |chunk|
31
+ chunks << chunk
32
+ end
33
+ chunks.should == [[1,2,3], [4,5,6], [7,8,9]]
34
+ end
35
+
36
+ it "should pad with nil by default" do
37
+ (1..5).to_a.in_groups_of(4).should == [[1,2,3,4], [5,nil,nil,nil]]
38
+ end
39
+
40
+ it "should not padd when pad_with is false" do
41
+ (1..6).to_a.in_groups_of(4, false).should == [[1,2,3,4], [5,6]]
42
+ end
43
+ end
44
+
45
+ describe "#pad" do
46
+ it "should pad with nil by default" do
47
+ [1,2].pad(4).should == [1, 2, nil, nil]
48
+ end
49
+
50
+ it "should pad an with an object" do
51
+ [1,2].pad(3 ,'x').should == [1, 2, 'x']
52
+ end
53
+
54
+ it "should do nothing when the array is of expected length" do
55
+ [1,2].pad(2).should == [1,2]
56
+ end
57
+ end
58
+
23
59
  end
24
60
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: visionmedia-rext
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
4
+ version: 0.0.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - TJ Holowaychuk
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-04-08 00:00:00 -07:00
12
+ date: 2009-04-13 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies: []
15
15