mug 0.3.0 → 0.3.1

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: a680e04d5c29c884b04891e5eb68f49031b5da89
4
- data.tar.gz: 66be632c27b4545430f5e933bf650bf162416b65
3
+ metadata.gz: d07407afa937cc922025564e10c1dfd2a16535f2
4
+ data.tar.gz: 0391bcb1f0b93e59e852cf3bc1ba8eee0bc95e9d
5
5
  SHA512:
6
- metadata.gz: bbc20885684541c3a151978abac35a887123da92496e9a0d5ad6e411a744da70a8099e98d5b325dc03de9ea199e78fa665998c092b4a9f115e2d6d80c6bff308
7
- data.tar.gz: ac32f2802b3277a2cc70c83320ba08f976d482e95bcef2760743a629016c40d2a392e0461b4634e3d3f046036398e661ef634fab0fcea1ecc5c2b6cacaa4e2eb
6
+ metadata.gz: 0f8cea3e467019cdb61879a1d8bb87770e88f1796f2db4a93b692e092b3352a58438d81044ee59d9f8730512a8a85a4120c6f48141ee54713067f38e7f57fcd2
7
+ data.tar.gz: d7b36788bd623f2528a59b50929a940327ee656dbb8ad8f57c3a500f3b20738c5c1e7529a257121d388b7ae1735bd91b1b27a6e1adff2a8963ecd18a5511f1a4
@@ -0,0 +1,54 @@
1
+
2
+ class Array
3
+
4
+ ##
5
+ # Subtract elements from this array.
6
+ #
7
+ # This is similar to Array#- except that elements from this array are
8
+ # removed only once per instance in +ary+.
9
+ #
10
+ # If +remainder+ is given and true, returns a second array which is
11
+ # all elements in +ary+ that were not present in this array.
12
+ #
13
+ # @call-seq minus(ary)
14
+ # @call-seq minus(ary, remainder: true)
15
+ #
16
+ def minus ary, remainder: false
17
+
18
+ result = dup
19
+ rem = []
20
+
21
+ ary.each do |x|
22
+ i = result.index x
23
+ if i
24
+ result.delete_at i
25
+ elsif remainder
26
+ rem << x
27
+ end
28
+ end
29
+
30
+ if remainder
31
+ [result, rem]
32
+ else
33
+ result
34
+ end
35
+ end
36
+
37
+ end
38
+
39
+ =begin
40
+ Copyright (c) 2015, Matthew Kerwin <matthew@kerwin.net.au>
41
+
42
+ Permission to use, copy, modify, and/or distribute this software for any
43
+ purpose with or without fee is hereby granted, provided that the above
44
+ copyright notice and this permission notice appear in all copies.
45
+
46
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
47
+ WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
48
+ MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
49
+ ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
50
+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
51
+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
52
+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
53
+ =end
54
+
data/lib/mug/array.rb CHANGED
@@ -1 +1,2 @@
1
1
  require_relative 'array/extend'
2
+ require_relative 'array/minus'
data/lib/mug.rb CHANGED
@@ -2,6 +2,7 @@
2
2
  require_relative 'mug/and-or'
3
3
  require_relative 'mug/apply'
4
4
  require_relative 'mug/array/extend'
5
+ require_relative 'mug/array/minus'
5
6
  require_relative 'mug/bool'
6
7
  require_relative 'mug/clamp'
7
8
  require_relative 'mug/counts'
@@ -0,0 +1,19 @@
1
+ require 'test/unit'
2
+ $VERBOSE = true
3
+
4
+ require_relative '../lib/mug/array/minus'
5
+ class Test_array_minus < Test::Unit::TestCase
6
+
7
+ def test_array_minus
8
+ a = %w[q q w e r e e ]
9
+ b = %w[q w e e t]
10
+ c = %w[ q r e ]
11
+ d = %w[ t]
12
+ assert_equal( c, a.minus(b) )
13
+ assert_equal( d, b.minus(a) )
14
+ assert_equal( c, a.minus(b, remainder: false) )
15
+ assert_equal( [c,d], a.minus(b, remainder: true ) )
16
+ assert_equal( [d,c], b.minus(a, remainder: true ) )
17
+ end
18
+ end
19
+
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mug
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matthew Kerwin
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-12-10 00:00:00.000000000 Z
11
+ date: 2015-12-16 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: |
14
14
  == MUG: Matty's Ultimate Gem
@@ -27,6 +27,7 @@ files:
27
27
  - lib/mug/apply.rb
28
28
  - lib/mug/array.rb
29
29
  - lib/mug/array/extend.rb
30
+ - lib/mug/array/minus.rb
30
31
  - lib/mug/bool.rb
31
32
  - lib/mug/clamp.rb
32
33
  - lib/mug/counts.rb
@@ -51,6 +52,7 @@ files:
51
52
  - test/test-and-or.rb
52
53
  - test/test-apply.rb
53
54
  - test/test-array-extend.rb
55
+ - test/test-array-minus.rb
54
56
  - test/test-bool.rb
55
57
  - test/test-clamp.rb
56
58
  - test/test-counts.rb
@@ -86,7 +88,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
86
88
  version: '0'
87
89
  requirements: []
88
90
  rubyforge_project:
89
- rubygems_version: 2.5.0
91
+ rubygems_version: 2.4.5
90
92
  signing_key:
91
93
  specification_version: 4
92
94
  summary: 'MUG: Matty''s Ultimate Gem'
@@ -108,4 +110,5 @@ test_files:
108
110
  - test/test-hashop.rb
109
111
  - test/test-iterator-method.rb
110
112
  - test/test-apply.rb
113
+ - test/test-array-minus.rb
111
114
  - test/test-fragile-method-chain.rb