augmented 0.1.0 → 0.2.0

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: c45e4c37723b2e38793bb1476b7be8e8662b8c4a
4
- data.tar.gz: c988abdf0493e83cb1b8406af472649fe6f10d00
3
+ metadata.gz: e809f083463caa0de7cb0c619078a075a058aaa7
4
+ data.tar.gz: e61a37488b312e6c24187a476e14d8d2bb142718
5
5
  SHA512:
6
- metadata.gz: 9e87a5bf8e30edfc41f7364f6b5851bccbbe15cbe1d908d4ad7471793ea4129dfb254ae3963257fc0f61c378e6c96be43be480d8d735864e3923f9c28a43e155
7
- data.tar.gz: 19b0e83ca99b904f0f69614966649e7e26c70210ca6da3862a21ded599e4e934d249b4d08c36e9c3ec71d3d785d6e3861abf5ca72b3ad5accb4368ca9eb3085c
6
+ metadata.gz: d3398225a2262317005c77498a625b769fceda255c1565a47e0b8b0d82d3f3023393dfa3d1f07401a40620d45dbee3b2fddc82d3956999d83998a006e1ae3683
7
+ data.tar.gz: e7552233cc563a5eb1275b69a3a1836aa000e86af58d62a3e717aa28bd670cb357fc22a8d0cc1cdee9d38f8326cdc055b2769b39e9b04c1341f4ada380932b92
data/README.md CHANGED
@@ -1,9 +1,10 @@
1
1
  # Augmented
2
2
 
3
- `Augmented` is a library with some core-type utility methods that I frequently find myself copying across projects. It uses refinements instead of class modification for maximum control and an easy sleep at night.
3
+ `Augmented` is a library with some core-type utility methods that I frequently find myself copying across projects. It uses refinements instead of class modification for maximum control and an easy sleep at night.
4
4
 
5
5
  Many of the methods in `Augmented` facilitate a more functional style of programming and cover a few tiny gaps in Ruby's solid functional support. See more thoughts on this [blog post](http://blog.brunze.com/2015/using-ruby-refinements-fun-flow/).
6
6
 
7
+
7
8
  ## Installation
8
9
 
9
10
  In your Gemfile:
@@ -16,6 +17,7 @@ Or:
16
17
 
17
18
  $ gem install augmented
18
19
 
20
+
19
21
  ## Usage
20
22
 
21
23
  You have 3 ways of loading the refinements. You can load all of them at once:
@@ -27,11 +29,14 @@ using Augmented
27
29
  You can load all refinements for just one type:
28
30
 
29
31
  ```ruby
32
+ using Augmented::Arrays
30
33
  using Augmented::Enumerators
31
34
  using Augmented::Hashes
35
+ using Augmented::Modules
32
36
  using Augmented::Objects
33
37
  using Augmented::Procs
34
38
  using Augmented::Symbols
39
+ # etc.
35
40
  ```
36
41
 
37
42
  Or you can load just the methods you need:
@@ -43,8 +48,28 @@ using Augmented::Symbols::Arguable
43
48
  # etc.
44
49
  ```
45
50
 
51
+
46
52
  ## Quick Examples
47
53
 
54
+ #### `Augmented::Arrays`
55
+
56
+ ##### `Array#tie`
57
+
58
+ Weaves an object between the elements of an array. Like `join` but without flattening the array into a string.
59
+
60
+ ```ruby
61
+ using Augmented::Arrays::Tieable
62
+
63
+ [1, 2, 3].tie :hello
64
+ # [1, :hello, 2, :hello, 3]
65
+
66
+ [1, 5, 12].tie{ |a, b| a + b }
67
+ # [1, 6, 5, 17, 12]
68
+ ```
69
+
70
+
71
+ #### `Augmented::Enumerators`
72
+
48
73
  ##### `Enumerator#index_by`
49
74
 
50
75
  Builds an index of all elements of an enumerator according to the given criterion.
@@ -56,6 +81,9 @@ using Augmented::Enumerators::Indexing
56
81
  # {1=>"a", 2=>"bb", 5=>"ccccc"}
57
82
  ```
58
83
 
84
+
85
+ #### `Augmented::Hashes`
86
+
59
87
  ##### `Hash#map_values`
60
88
 
61
89
  Returns a new hash with the same keys but transformed values.
@@ -87,16 +115,16 @@ using Augmented::Hashes::Polymorphable
87
115
 
88
116
  class Sheep
89
117
  def initialize attributes
90
- @sound = attributes[:sound]
118
+ @speak = attributes[:speak]
91
119
  end
92
120
 
93
121
  def speak
94
- puts @sound
122
+ puts @speak
95
123
  end
96
124
  end
97
125
 
98
- { type: 'Sheep', sound: 'meeehh' }.polymorph.speak
99
- # meeehh
126
+ { type: 'Sheep', speak: 'baaaah' }.polymorph.speak
127
+ # baaaah
100
128
  ```
101
129
 
102
130
  ##### `Hash#transform`, `Hash#transform!`
@@ -113,15 +141,48 @@ tree.transform({ lorem: :upcase, dolor: { sit: triple } })
113
141
  # {:lorem=>"IPSUM", :dolor=>[{:sit=>30}, {:sit=>60}]}
114
142
  ```
115
143
 
116
- ##### `Object#if`, `Object#else`
117
144
 
118
- Allows you to conditionally return an object, increasing readability in some situations.
145
+ #### `Augmented::Modules`
146
+
147
+ ##### `Module#refined`
148
+
149
+ Makes it less verbose to create small refinements.
150
+
151
+ ```ruby
152
+ using Augmented::Hashes::Transformable
153
+
154
+ class TextPage
155
+ using refined String,
156
+ as_phrase: -> { self.strip.capitalize.gsub /\.?\z/, '.' },
157
+ fill: -> filler { (filler * self.length)[0..length] }
158
+
159
+ # ...
160
+
161
+ def text
162
+ @strings.map(&:as_phrase).join ' '
163
+ end
164
+
165
+ def obscured_text
166
+ text.fill '?'
167
+ end
168
+ end
169
+ ```
170
+
171
+
172
+ #### `Augmented::Objects`
173
+
174
+ ##### `Object#if`, `Object#unless`, `Object#else`
175
+
176
+ Allows you to conditionally return an object, allowing you to be more concise in some situations.
119
177
 
120
178
  ```ruby
121
179
  using Augmented::Objects::Iffy
122
180
 
123
181
  Person.new.eat toast.if(toast.buttered?).else(muffin)
124
182
  Person.new.eat toast.if(&:buttered?).else(muffin)
183
+
184
+ Person.new.eat toast.unless(toast.soggy?).else(muffin)
185
+ Person.new.eat toast.unless(&:soggy?).else(muffin)
125
186
  ```
126
187
 
127
188
  ##### `Object#pick`
@@ -163,9 +224,9 @@ toast.tap_if(toast.warm?){ |toast| toast.butter }.eat
163
224
  toast.tap_if(:warm?.to_proc){ |toast| toast.butter }.eat
164
225
  ```
165
226
 
166
- ##### `Object#thru`
227
+ ##### `Object#thru`, `Object#thru_if`, `Object#thru_unless`
167
228
 
168
- Applies a function to an object and returns the result.
229
+ Applies a function to an object and returns the result. `Object#thru_if` and `Object#thru_unless` do so depending on the condition supplied (if the condition fails, the object is returned untouched).
169
230
 
170
231
  ```ruby
171
232
  using Augmented::Objects::Thru
@@ -173,9 +234,19 @@ using Augmented::Objects::Thru
173
234
  filter_words = -> s { s.gsub(/bad/, '').squeeze(' ').strip }
174
235
 
175
236
  'BAD WORDS, BAD WORDS'.downcase.thru(&filter_words).capitalize
176
- # Words, words
237
+ # "Words, words"
238
+
239
+ config.censor = true
240
+ 'BAD WORDS, BAD WORDS'.downcase.thru_if(config.censor?, &filter_words).capitalize
241
+ # "Words, words"
242
+
243
+ ''.downcase.thru_unless(:empty?.to_proc, &filter_words).capitalize
244
+ # ""
177
245
  ```
178
246
 
247
+
248
+ #### `Augmented::Procs`
249
+
179
250
  ##### `Proc#|`
180
251
 
181
252
  Chains several procs together so they execute from left to right.
@@ -191,6 +262,22 @@ add_twenty = -> i { i + 20 }
191
262
  # 29
192
263
  ```
193
264
 
265
+ ##### `Proc#rescues`
266
+
267
+ Wraps a `Proc` to rescue it from certain exceptions while returning a given value.
268
+
269
+ ```ruby
270
+ using Augmented::Procs::Rescuable
271
+
272
+ integerify = proc{ |x| Integer(x) }.rescues ArgumentError, 42
273
+
274
+ ['1', '2', 'abc', '4'].map &integerify
275
+ # [1, 2, 42, 4]
276
+ ```
277
+
278
+
279
+ #### `Augmented::Symbols`
280
+
194
281
  ##### `Symbol#with`
195
282
 
196
283
  Like [`Symbol#to_proc`](http://ruby-doc.org/core-2.3.0/Symbol.html#method-i-to_proc) but allows you to pass some arguments along.
@@ -228,6 +315,7 @@ users.find &(:name.eq 'Marianne')
228
315
  # <User:0x... name='Marianne'>
229
316
  ```
230
317
 
318
+
231
319
  ## Contributing
232
320
 
233
321
  Do you have a method you would like to see added to this library? Perhaps something you keep copying from project to project but always found too small to bother with a gem? Feel free to submit a ticket/pull request with your idea.
@@ -0,0 +1,18 @@
1
+ module Augmented
2
+ module Arrays
3
+ module Tieable
4
+ refine Array do
5
+
6
+ def tie object = nil, &block
7
+ raise ArgumentError, 'you must provide a non-nil tie object or block' if object.nil? && !block_given?
8
+
9
+ tie_function = block_given? ? block : proc{ object }
10
+ ties = self.each_cons(2).map &tie_function
11
+
12
+ self.zip(ties).flatten(1)[0...-1]
13
+ end
14
+
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,7 @@
1
+ require 'augmented/arrays/tieable'
2
+
3
+ module Augmented
4
+ module Arrays
5
+ include Tieable
6
+ end
7
+ end
@@ -0,0 +1,19 @@
1
+ module Augmented
2
+ module Modules
3
+ module Refined
4
+ refine Module do
5
+
6
+ def refined klass, **hash_of_procs
7
+ Module.new do
8
+ refine klass do
9
+ hash_of_procs.each_pair do |name, proc|
10
+ define_method name, proc
11
+ end
12
+ end
13
+ end
14
+ end
15
+
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,7 @@
1
+ require 'augmented/modules/refined'
2
+
3
+ module Augmented
4
+ module Modules
5
+ include Refined
6
+ end
7
+ end
@@ -7,6 +7,10 @@ module Augmented
7
7
  self if (block_given? ? yield(self) : condition)
8
8
  end
9
9
 
10
+ def unless condition = self
11
+ self unless (block_given? ? yield(self) : condition)
12
+ end
13
+
10
14
  def else *_
11
15
  self
12
16
  end
@@ -8,6 +8,16 @@ module Augmented
8
8
  (function || :itself.to_proc).call self
9
9
  end
10
10
 
11
+ def thru_if condition, &function
12
+ apply_function = condition.respond_to?(:call) ? condition.call(self) : condition
13
+ apply_function ? self.thru(&function) : self
14
+ end
15
+
16
+ def thru_unless condition, &function
17
+ skip_function = condition.respond_to?(:call) ? condition.call(self) : condition
18
+ skip_function ? self : self.thru(&function)
19
+ end
20
+
11
21
  end
12
22
  end
13
23
  end
@@ -0,0 +1,25 @@
1
+ module Augmented
2
+ module Procs
3
+ module Rescuable
4
+ refine Proc do
5
+
6
+ NOT_PROVIDED = Object.new
7
+
8
+ def rescues exception_class, return_value = NOT_PROVIDED, &block
9
+ raise ArgumentError, 'must provide a return value or block' if return_value == NOT_PROVIDED && !block_given?
10
+
11
+ original = self
12
+
13
+ Proc.new do |*args|
14
+ begin
15
+ original.call *args
16
+ rescue exception_class => exception
17
+ block ? block.call(exception) : return_value
18
+ end
19
+ end
20
+ end
21
+
22
+ end
23
+ end
24
+ end
25
+ end
@@ -1,7 +1,9 @@
1
1
  require 'augmented/procs/chainable'
2
+ require 'augmented/procs/rescuable'
2
3
 
3
4
  module Augmented
4
5
  module Procs
5
6
  include Chainable
7
+ include Recuable
6
8
  end
7
9
  end
@@ -1,3 +1,3 @@
1
1
  module Augmented
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.0"
3
3
  end
data/lib/augmented.rb CHANGED
@@ -1,14 +1,18 @@
1
1
  require 'augmented/version'
2
2
 
3
+ require 'augmented/arrays'
3
4
  require 'augmented/enumerators'
4
5
  require 'augmented/hashes'
6
+ require 'augmented/modules'
5
7
  require 'augmented/objects'
6
8
  require 'augmented/procs'
7
9
  require 'augmented/symbols'
8
10
 
9
11
  module Augmented
12
+ include Arrays
10
13
  include Enumerators
11
14
  include Hashes
15
+ include Modules
12
16
  include Objects
13
17
  include Procs
14
18
  include Symbols
@@ -0,0 +1,66 @@
1
+ require 'minitest/autorun'
2
+ require 'augmented/arrays/tieable'
3
+
4
+ describe Augmented::Arrays::Tieable do
5
+ using Augmented::Arrays::Tieable
6
+
7
+ describe '#tie' do
8
+
9
+ describe 'when supplied with an object' do
10
+
11
+ it 'returns an array interweaved with the specified object' do
12
+ object = Object.new
13
+ weaved = %w(a b c).tie object
14
+
15
+ weaved.must_equal ['a', object, 'b', object, 'c']
16
+ end
17
+
18
+ it 'returns an empty array if the original array is empty' do
19
+ [].tie(1).must_equal []
20
+ end
21
+
22
+ it 'returns the original array if it has only one element' do
23
+ [42].tie(1).must_equal [42]
24
+ end
25
+
26
+ end
27
+
28
+ describe 'when supplied with a block' do
29
+
30
+ it 'returns an array interweaved with the result of invoking the block' do
31
+ values = [10 ,20].each
32
+ weaved = %w(a b c).tie{ values.next }
33
+
34
+ weaved.must_equal ['a', 10, 'b', 20, 'c']
35
+ end
36
+
37
+ it 'passes both neighbour values as arguments to the supplied block' do
38
+ weaved = [1, 5, 12].tie{ |a, b| a + b }
39
+
40
+ weaved.must_equal [1, 6, 5, 17, 12]
41
+ end
42
+
43
+ it 'will weave nils if the block does not return anything else' do
44
+ weaved = [1, 2, 3].tie{}
45
+
46
+ weaved.must_equal [1, nil, 2, nil, 3]
47
+ end
48
+
49
+ it 'returns an empty array if the original arrays is empty' do
50
+ [].tie{ 1 }.must_equal []
51
+ end
52
+
53
+ it 'returns the original array if it has only one element' do
54
+ [42].tie{ 1 }.must_equal [42]
55
+ end
56
+
57
+ end
58
+
59
+ it 'raises an ArgumentError if not passed a non-nil object or block' do
60
+ proc{ [].tie }.must_raise ArgumentError
61
+ proc{ [].tie nil }.must_raise ArgumentError
62
+ end
63
+
64
+ end
65
+
66
+ end
@@ -0,0 +1,27 @@
1
+ require 'minitest/autorun'
2
+ require 'augmented/modules/refined'
3
+
4
+ describe Augmented::Modules::Refined do
5
+ using Augmented::Modules::Refined
6
+
7
+ describe '#refined' do
8
+
9
+ before do
10
+ class TesterClass
11
+ using refined String,
12
+ as_phrase: -> { self.capitalize.gsub /\.?\z/, '.' },
13
+ fill: -> filler { (filler * self.length)[0..length] }
14
+
15
+ def do_test
16
+ 'hello world'.as_phrase.must_equal 'Hello world.'
17
+ 'hello world'.fill('!').must_equal '!!!!!!!!!!!'
18
+ end
19
+ end
20
+ end
21
+
22
+ it 'creates a refinement module on the fly for the given class, with the procs supplied' do
23
+ TesterClass.new.do_test
24
+ end
25
+
26
+ end
27
+ end
@@ -26,6 +26,28 @@ describe Augmented::Objects::Iffy do
26
26
 
27
27
  end
28
28
 
29
+ describe '#unless' do
30
+
31
+ it 'returns the object if the condition evaluates to falsy' do
32
+ subject = 'abc'
33
+ condition = -> subj { subj.length == 0 }
34
+
35
+ subject.unless(false).must_be_same_as subject
36
+ subject.unless(nil).must_be_same_as subject
37
+ subject.unless(&condition).must_be_same_as subject
38
+ end
39
+
40
+ it 'returns nil if the condition evaluates to truish' do
41
+ subject = 'abc'
42
+ condition = -> subj { subj.length == 3 }
43
+
44
+ subject.unless(true).must_be_same_as nil
45
+ subject.unless(Object.new).must_be_same_as nil
46
+ subject.unless(&condition).must_be_same_as nil
47
+ end
48
+
49
+ end
50
+
29
51
  describe '#else' do
30
52
 
31
53
  it 'returns the alternative if the object is falsy' do
@@ -19,4 +19,80 @@ describe Augmented::Objects::Thru do
19
19
 
20
20
  end
21
21
 
22
+ describe '#thru_if' do
23
+
24
+ it 'applies the given function to the object if the condition is truish' do
25
+ plus_10 = -> i { i + 10 }
26
+
27
+ 5.thru_if(true, &plus_10).must_equal 15
28
+ 5.thru_if(Object.new, &plus_10).must_equal 15
29
+ end
30
+
31
+ it 'applies the given function to the object if the condition evaluates to truish' do
32
+ plus_10 = -> i { i + 10 }
33
+
34
+ condition_1 = -> i { i == 5 }
35
+ condition_2 = -> i { i.to_s }
36
+
37
+ 5.thru_if(condition_1, &plus_10).must_equal 15
38
+ 5.thru_if(condition_2, &plus_10).must_equal 15
39
+ end
40
+
41
+ it 'returns the object without applying the function if the condition is falsy' do
42
+ plus_10 = -> i { i + 10 }
43
+
44
+ 5.thru_if(false, &plus_10).must_equal 5
45
+ 5.thru_if(nil, &plus_10).must_equal 5
46
+ end
47
+
48
+ it 'returns the object without applying the function if the condition evaluates to falsy' do
49
+ plus_10 = -> i { i + 10 }
50
+
51
+ condition_1 = -> i { i == 10 }
52
+ condition_2 = -> i { nil }
53
+
54
+ 5.thru_if(condition_1, &plus_10).must_equal 5
55
+ 5.thru_if(condition_2, &plus_10).must_equal 5
56
+ end
57
+
58
+ end
59
+
60
+ describe '#thru_unless' do
61
+
62
+ it 'applies the given function to the object if the condition is falsy' do
63
+ plus_10 = -> i { i + 10 }
64
+
65
+ 5.thru_unless(false, &plus_10).must_equal 15
66
+ 5.thru_unless(nil, &plus_10).must_equal 15
67
+ end
68
+
69
+ it 'applies the given function to the object if the condition evaluates to falsy' do
70
+ plus_10 = -> i { i + 10 }
71
+
72
+ condition_1 = -> i { i == 10 }
73
+ condition_2 = -> i { nil }
74
+
75
+ 5.thru_unless(condition_1, &plus_10).must_equal 15
76
+ 5.thru_unless(condition_2, &plus_10).must_equal 15
77
+ end
78
+
79
+ it 'returns the object without applying the function if the condition is truish' do
80
+ plus_10 = -> i { i + 10 }
81
+
82
+ 5.thru_unless(true, &plus_10).must_equal 5
83
+ 5.thru_unless(Object.new, &plus_10).must_equal 5
84
+ end
85
+
86
+ it 'returns the object without applying the function if the condition evaluates to truish' do
87
+ plus_10 = -> i { i + 10 }
88
+
89
+ condition_1 = -> i { i == 5 }
90
+ condition_2 = -> i { i.to_s }
91
+
92
+ 5.thru_unless(condition_1, &plus_10).must_equal 5
93
+ 5.thru_unless(condition_2, &plus_10).must_equal 5
94
+ end
95
+
96
+ end
97
+
22
98
  end
@@ -0,0 +1,38 @@
1
+ require 'minitest/autorun'
2
+ require 'augmented/procs/rescuable'
3
+
4
+ describe Augmented::Procs::Rescuable do
5
+ using Augmented::Procs::Rescuable
6
+
7
+ describe '#rescues' do
8
+
9
+ it 'returns a proc which returns a provided value if the expected exception is raised' do
10
+ specific_exception_class = Class.new RuntimeError
11
+
12
+ unsafe_proc = -> { raise specific_exception_class }
13
+ rescued_proc = unsafe_proc.rescues specific_exception_class, 42
14
+
15
+ rescued_proc.call.must_equal 42
16
+ end
17
+
18
+ it 'returns a proc which returns the result of the provided block if the expected exception is raised' do
19
+ specific_exception_class = Class.new RuntimeError
20
+
21
+ unsafe_proc = -> { raise specific_exception_class }
22
+ rescued_proc = unsafe_proc.rescues(specific_exception_class){ |exception| exception }
23
+
24
+ rescued_proc.call.must_be_instance_of specific_exception_class
25
+ end
26
+
27
+ it 'returns a proc which lets exceptions other than the expected one to be raised' do
28
+ specific_exception_class = Class.new RuntimeError
29
+
30
+ unsafe_proc = -> { raise RuntimeError }
31
+ rescued_proc = unsafe_proc.rescues specific_exception_class, 42
32
+
33
+ rescued_proc.must_raise RuntimeError
34
+ end
35
+
36
+ end
37
+
38
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: augmented
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - bruno
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-03-05 00:00:00.000000000 Z
11
+ date: 2016-11-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -53,12 +53,16 @@ files:
53
53
  - Rakefile
54
54
  - augmented.gemspec
55
55
  - lib/augmented.rb
56
+ - lib/augmented/arrays.rb
57
+ - lib/augmented/arrays/tieable.rb
56
58
  - lib/augmented/enumerators.rb
57
59
  - lib/augmented/enumerators/indexing.rb
58
60
  - lib/augmented/hashes.rb
59
61
  - lib/augmented/hashes/mappable.rb
60
62
  - lib/augmented/hashes/polymorphable.rb
61
63
  - lib/augmented/hashes/transformable.rb
64
+ - lib/augmented/modules.rb
65
+ - lib/augmented/modules/refined.rb
62
66
  - lib/augmented/objects.rb
63
67
  - lib/augmented/objects/iffy.rb
64
68
  - lib/augmented/objects/pickable.rb
@@ -67,20 +71,24 @@ files:
67
71
  - lib/augmented/objects/thru.rb
68
72
  - lib/augmented/procs.rb
69
73
  - lib/augmented/procs/chainable.rb
74
+ - lib/augmented/procs/rescuable.rb
70
75
  - lib/augmented/symbols.rb
71
76
  - lib/augmented/symbols/arguable.rb
72
77
  - lib/augmented/symbols/comparing.rb
73
78
  - lib/augmented/version.rb
79
+ - test/augmented/arrays/tieable_test.rb
74
80
  - test/augmented/enumerators/indexing_test.rb
75
81
  - test/augmented/hashes/mappable_test.rb
76
82
  - test/augmented/hashes/polymorphable_test.rb
77
83
  - test/augmented/hashes/transformable_test.rb
84
+ - test/augmented/modules/refined_test.rb
78
85
  - test/augmented/objects/iffy_test.rb
79
86
  - test/augmented/objects/pickable_test.rb
80
87
  - test/augmented/objects/tackable_test.rb
81
88
  - test/augmented/objects/tappable_test.rb
82
89
  - test/augmented/objects/thru_test.rb
83
90
  - test/augmented/procs/chainable_test.rb
91
+ - test/augmented/procs/rescuable_test.rb
84
92
  - test/augmented/symbols/arguable_test.rb
85
93
  - test/augmented/symbols/comparing_test.rb
86
94
  homepage: https://github.com/brunze/augmented
@@ -103,20 +111,23 @@ required_rubygems_version: !ruby/object:Gem::Requirement
103
111
  version: '0'
104
112
  requirements: []
105
113
  rubyforge_project:
106
- rubygems_version: 2.4.5
114
+ rubygems_version: 2.5.1
107
115
  signing_key:
108
116
  specification_version: 4
109
117
  summary: Useful extra methods for some Ruby core types.
110
118
  test_files:
119
+ - test/augmented/arrays/tieable_test.rb
111
120
  - test/augmented/enumerators/indexing_test.rb
112
121
  - test/augmented/hashes/mappable_test.rb
113
122
  - test/augmented/hashes/polymorphable_test.rb
114
123
  - test/augmented/hashes/transformable_test.rb
124
+ - test/augmented/modules/refined_test.rb
115
125
  - test/augmented/objects/iffy_test.rb
116
126
  - test/augmented/objects/pickable_test.rb
117
127
  - test/augmented/objects/tackable_test.rb
118
128
  - test/augmented/objects/tappable_test.rb
119
129
  - test/augmented/objects/thru_test.rb
120
130
  - test/augmented/procs/chainable_test.rb
131
+ - test/augmented/procs/rescuable_test.rb
121
132
  - test/augmented/symbols/arguable_test.rb
122
133
  - test/augmented/symbols/comparing_test.rb