abstractivator 0.0.16 → 0.0.18

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0e6c6a67da77c6728b25e2013b59dbf40817d4d4
4
- data.tar.gz: 47241325bdc19a0ce1633d64f52d1a24dd459097
3
+ metadata.gz: d228a0ed6f537d3f752f6a46912bad4619047db0
4
+ data.tar.gz: 4d304955258c6138dc8eddd7a7d9dc716b39ce1d
5
5
  SHA512:
6
- metadata.gz: f1cc8d01dcaa14ec04d972598d8e342105fa2720f46384dae161345e42c29dbdfaa4ac6d79d5c0f541f402c088393112f569fef69d02394308ba9c8ac50de0bc
7
- data.tar.gz: 24c5731465f66e1d607c083af1737866921f21dcac094eb53c0adf266a650fabd3f05d2ae79bd93c284efcd5c11342561bbd67e792ceef09d4277f6637f4d318
6
+ metadata.gz: e48954a97bf6a2d352f952709df932497688d2360d68d4531dac5ca44540b02322d0b21ab0626ad05cf38ea22a60c1af49102eed5e4d3c2bac24d84b9f74c4ff
7
+ data.tar.gz: 573161dc96da1502eceed8bb3a17f7877384521a1756b390ba2a21ec17d60655dfc1bb22b7135add3748af38f66c98f8147e45584b6968e18f49e7d724fcddb6
@@ -0,0 +1,11 @@
1
+ class Array
2
+ def key
3
+ size == 2 or raise 'array must contain exactly two elements'
4
+ first
5
+ end
6
+
7
+ def value
8
+ size == 2 or raise 'array must contain exactly two elements'
9
+ last
10
+ end
11
+ end
@@ -1,3 +1,5 @@
1
+ require 'abstractivator/enumerable_ext'
2
+
1
3
  module MethodAndProcExtensions
2
4
  def loosen_args
3
5
  proc do |*args, &block|
@@ -14,7 +16,7 @@ class Proc
14
16
  end
15
17
 
16
18
  def self.compose(*procs)
17
- procs.inject_right(identity) { |inner, p| p.compose(inner) }
19
+ procs.map(&:to_proc).inject_right(identity) { |inner, p| p.compose(inner) }
18
20
  end
19
21
 
20
22
  def self.identity
@@ -1,3 +1,3 @@
1
1
  module Abstractivator
2
- VERSION = '0.0.16'
2
+ VERSION = '0.0.18'
3
3
  end
@@ -0,0 +1,24 @@
1
+ require 'rspec'
2
+ require 'abstractivator/array_ext'
3
+
4
+ describe Array do
5
+ describe '#key' do
6
+ it 'returns the first element' do
7
+ expect([:k, :v].key).to eql :k
8
+ end
9
+ it 'raises an error if the array is not of size 2' do
10
+ expect{[:k].key}.to raise_error
11
+ expect{[:k, :v, :z].key}.to raise_error
12
+ end
13
+ end
14
+
15
+ describe '#value' do
16
+ it 'returns the second element' do
17
+ expect([:k, :v].value).to eql :v
18
+ end
19
+ it 'raises an error if the array is not of size 2' do
20
+ expect{[:k].value}.to raise_error
21
+ expect{[:k, :v, :z].value}.to raise_error
22
+ end
23
+ end
24
+ end
@@ -19,6 +19,10 @@ context 'in the world of functional programming' do
19
19
  expect(Proc.compose(square, double).call(3)).to eql 36
20
20
  expect(Proc.compose(negate, square, double).call(3)).to eql -36
21
21
  end
22
+ it 'coerces the args to a proc with to_proc' do
23
+ p = Proc.compose(:abs, :first)
24
+ expect(p.call([-5, 6])).to eql 5
25
+ end
22
26
  end
23
27
 
24
28
  describe 'Proc#reverse_args' do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: abstractivator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.16
4
+ version: 0.0.18
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter Winton
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-02-22 00:00:00.000000000 Z
11
+ date: 2015-03-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -81,6 +81,7 @@ files:
81
81
  - Rakefile
82
82
  - abstractivator.gemspec
83
83
  - lib/abstractivator.rb
84
+ - lib/abstractivator/array_ext.rb
84
85
  - lib/abstractivator/collections.rb
85
86
  - lib/abstractivator/cons.rb
86
87
  - lib/abstractivator/enum.rb
@@ -90,6 +91,7 @@ files:
90
91
  - lib/abstractivator/trees/block_collector.rb
91
92
  - lib/abstractivator/version.rb
92
93
  - lib/enumerable_ext.rb
94
+ - spec/lib/abstractivator/array_ext_spec.rb
93
95
  - spec/lib/abstractivator/collections_spec.rb
94
96
  - spec/lib/abstractivator/cons_spec.rb
95
97
  - spec/lib/abstractivator/enumerable_ext_spec.rb
@@ -121,6 +123,7 @@ signing_key:
121
123
  specification_version: 4
122
124
  summary: Utilities
123
125
  test_files:
126
+ - spec/lib/abstractivator/array_ext_spec.rb
124
127
  - spec/lib/abstractivator/collections_spec.rb
125
128
  - spec/lib/abstractivator/cons_spec.rb
126
129
  - spec/lib/abstractivator/enumerable_ext_spec.rb