rekey 3.0.1 → 4.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 6a5afeefc751d6d94e863fbc3a0728323f9c8379
4
- data.tar.gz: c79b4c27daf11a1905fe2e5d09d0b07be8cc5f5f
2
+ SHA256:
3
+ metadata.gz: fa46e960e7f7282b323629b69f26868f9eb59f09752128afc01858fcd33e74b2
4
+ data.tar.gz: 6bdf503d29bdfce9e99a43a0ad6b418c1d3905b5c512a318e0b7bcab2f60b48d
5
5
  SHA512:
6
- metadata.gz: 98b0ac1857651dd1d2f561cf10fbb466ab3bedd10c1068702454c0aaa4750c1f5edea75c7096d164a5316e335f0e7805aa2fa145c7ce63cdb48d8bcde0f71624
7
- data.tar.gz: 76a0051babba822500df84772fec87e7686fa29349d14e98239162f81e34202ce774b3a45cf07cffa92206d5c8f6747aa46a56781d8b5582ad0dc83e20605517
6
+ metadata.gz: dac8e9d6262d58ab957ca9175cbc081314612519776737cacce78f89580c65e0aa72393e6d79a0f43a230fa0dbde16b470a5292efabc98e55dd8156362d4f5b8
7
+ data.tar.gz: 01ed776768fed346f854f3ece0a4af3cf1a2cede9c13d390f5528a2af51f8e89b2125005b15fff65ccda8f5a5dc926b5a2c17c75908b87918f77cdd5fd293201
data/CHANGELOG.md ADDED
@@ -0,0 +1,10 @@
1
+ ### 4.1.0 (2026-04-10)
2
+ - ruby version / gem updates
3
+
4
+ ### 4.0.0 (2018-10-08)
5
+ - 7a49250 better monkey patching tests
6
+ - 9d94818 extend self
7
+ - 574461c clean up arity handling, expand tests
8
+ - 4b85ea6 require a key handle or block...for a nil key operation, use PluckIt
9
+ - d6cba35 fix unit test requires
10
+
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "https://rubygems.org"
2
+
3
+ gemspec
4
+
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2016 Daniel Pepper
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
22
+
data/README.md ADDED
@@ -0,0 +1,52 @@
1
+ Rekey
2
+ ======
3
+ ![Gem](https://img.shields.io/gem/dt/rekey?style=plastic)
4
+ [![codecov](https://codecov.io/gh/dpep/rekey_rb/branch/main/graph/badge.svg?token=Z6W48XUEQD)](https://codecov.io/gh/dpep/rekey_rb)
5
+
6
+ Reformat Enumerables into Hashes, using derived keys / values
7
+
8
+ #### Install
9
+ ```gem install rekey```
10
+
11
+
12
+ #### Usage
13
+ ```ruby
14
+ require "rekey"
15
+
16
+ # key a list of records by id
17
+ [
18
+ { id: 1, name: "alice", age: 30},
19
+ { id: 2, name: "bob", age: 24},
20
+ { id: 3, name: "charlie", age: 88},
21
+ ].rekey :id
22
+ => {
23
+ 1 => { id: 1, name: "alice", age: 30},
24
+ 2 => { id: 2, name: "bob", age: 24},
25
+ 3 => { id: 3, name: "charlie", age: 88},
26
+ }
27
+
28
+
29
+ # create an id => value map from a list of records
30
+ [
31
+ { id: 1, name: "alice", age: 30},
32
+ { id: 2, name: "bob", age: 24},
33
+ { id: 3, name: "charlie", age: 88},
34
+ ].rekey :id, :name
35
+ => {
36
+ 1 => "alice",
37
+ 2 => "bob",
38
+ 3 => "charlie"
39
+ }
40
+
41
+
42
+ # or use blocks
43
+ [ 2, 4, 6 ].rekey {|v| v / 2}
44
+ => {
45
+ 1 => 2,
46
+ 2 => 4,
47
+ 3 => 6
48
+ }
49
+ ```
50
+
51
+
52
+ ----
data/lib/rekey/rekey.rb CHANGED
@@ -1,78 +1,67 @@
1
- require 'pluckit/pluck'
1
+ require "pluckit/pluck"
2
+ require "rekey/version"
2
3
 
3
4
 
4
5
  module Rekey
5
- class << self
6
+ extend self
6
7
 
7
- def rekey(enumerable, key_handle = nil, value_handle = nil, &block)
8
- validate_input key_handle, value_handle, &block
8
+ refine Enumerable do
9
+ def rekey(key_handle = nil, value_handle = nil, &block)
10
+ Rekey.rekey(self, key_handle, value_handle, &block)
11
+ end
12
+ end
9
13
 
10
- key_value_fn = if enumerable.respond_to?(:keys)
11
- proc {|k, v| [k, v]}
12
- else
13
- proc {|v| [nil, v]}
14
- end
14
+ def rekey(enumerable, key_handle = nil, value_handle = nil, &block)
15
+ validate_input!(key_handle, value_handle, &block)
15
16
 
16
- # determine return type
17
- res = if key_handle or block or enumerable.respond_to?(:keys)
18
- {}
19
- else
20
- []
21
- end
17
+ key_value_fn = if enumerable.respond_to?(:keys)
18
+ proc {|k, v| [k, v]}
19
+ else
20
+ proc {|v| [nil, v]}
21
+ end
22
22
 
23
- # rekey input
24
- enumerable.each_with_object(res) do |*args, res|
25
- key, value = key_value_fn.call *args
26
- new_key = key
27
- new_value = value
23
+ # rekey input
24
+ enumerable.each_with_object({}) do |*args, res|
25
+ key, value = key_value_fn.call(*args)
26
+ new_key = key
27
+ new_value = value
28
28
 
29
- if block
30
- if block.arity <= 0
31
- # function pointer, eg. &:to_i
32
- new_key = block.call value
33
- elsif block.arity == 1
34
- # standard block
35
- new_key = block.call value
36
- else
37
- # block that wants both key and value
38
- new_key = block.call key, value
39
- end
29
+ if block
30
+ if block.arity < 2
31
+ # block only wants value
32
+ # arity -1 is a function pointer, eg. &:to_i
33
+ new_key = block.call(value)
40
34
  else
41
- new_key = PluckIt.pluckit value, key_handle if key_handle
42
- new_value = PluckIt.pluckit value, value_handle if value_handle
43
- end
35
+ # block wants both key and value
44
36
 
45
- # collect results
46
- if res.is_a? Array
47
- unless new_key.nil?
48
- # safeguard against stupidity
37
+ if key_value_fn.arity != 2
49
38
  raise ArgumentError.new(
50
- "not expecting a key value, got: #{new_key}"
39
+ "rekey block requests key/value pair but only value available"
51
40
  )
52
41
  end
53
42
 
54
- res.push new_value
55
- else
56
- res[new_key] = new_value
43
+ new_key = block.call(key, value)
57
44
  end
45
+ else
46
+ new_key = PluckIt.pluckit(value, key_handle)
47
+ new_value = PluckIt.pluckit(value, value_handle) if value_handle
58
48
  end
49
+
50
+ # collect results
51
+ res[new_key] = new_value
59
52
  end
53
+ end
60
54
 
61
55
 
62
- private
56
+ private
63
57
 
64
- def validate_input key_handle, value_handle, &block
65
- if block
66
- if (key_handle or value_handle)
67
- raise ArgumentError.new 'expected key / value handles, *or* block'
68
- end
69
- else
70
- unless key_handle or value_handle
71
- raise ArgumentError.new 'key_handle and/or value_handle are required'
72
- end
58
+ def validate_input!(key_handle, value_handle, &block)
59
+ if block
60
+ if (key_handle || value_handle)
61
+ raise ArgumentError, "expected key / value handles, *or* block"
73
62
  end
63
+ elsif key_handle.nil?
64
+ raise ArgumentError, "key handle or block required"
74
65
  end
75
-
76
-
77
66
  end
78
67
  end
@@ -0,0 +1,3 @@
1
+ module Rekey
2
+ VERSION = "4.1.0"
3
+ end
data/lib/rekey.rb CHANGED
@@ -1,13 +1,7 @@
1
- require_relative 'rekey/rekey'
2
-
3
-
4
- module Rekey
5
- VERSION = '3.0.1'
6
- end
7
-
1
+ require_relative "rekey/rekey"
8
2
 
9
3
  module Enumerable
10
4
  def rekey(key_handle = nil, value_handle = nil, &block)
11
- Rekey.rekey self, key_handle, value_handle, &block
5
+ Rekey.rekey(self, key_handle, value_handle, &block)
12
6
  end
13
7
  end
data/rekey.gemspec ADDED
@@ -0,0 +1,23 @@
1
+ package_name = File.basename(__FILE__).split(".")[0]
2
+ require "./lib/#{package_name}/version"
3
+
4
+ package = Rekey
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = package_name
8
+ s.version = package.const_get "VERSION"
9
+ s.authors = ["Daniel Pepper"]
10
+ s.summary = package.to_s
11
+ s.description = "Reformat Enumerables into Hashes, using derived keys / values"
12
+ s.homepage = "https://github.com/dpep/#{package_name}_rb"
13
+ s.license = "MIT"
14
+ s.files = `git ls-files * ":!:spec"`.split("\n")
15
+
16
+ s.required_ruby_version = ">= 3"
17
+
18
+ s.add_runtime_dependency "pluckit"
19
+
20
+ s.add_development_dependency "debug"
21
+ s.add_development_dependency "rspec"
22
+ s.add_development_dependency "simplecov"
23
+ end
metadata CHANGED
@@ -1,79 +1,87 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rekey
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.1
4
+ version: 4.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Pepper
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2018-04-26 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: pluckit
15
14
  requirement: !ruby/object:Gem::Requirement
16
15
  requirements:
17
- - - "~>"
16
+ - - ">="
18
17
  - !ruby/object:Gem::Version
19
- version: '1.1'
18
+ version: '0'
20
19
  type: :runtime
21
20
  prerelease: false
22
21
  version_requirements: !ruby/object:Gem::Requirement
23
22
  requirements:
24
- - - "~>"
23
+ - - ">="
25
24
  - !ruby/object:Gem::Version
26
- version: '1.1'
25
+ version: '0'
27
26
  - !ruby/object:Gem::Dependency
28
- name: minitest
27
+ name: debug
29
28
  requirement: !ruby/object:Gem::Requirement
30
29
  requirements:
31
- - - "~>"
30
+ - - ">="
32
31
  - !ruby/object:Gem::Version
33
- version: '5'
32
+ version: '0'
34
33
  type: :development
35
34
  prerelease: false
36
35
  version_requirements: !ruby/object:Gem::Requirement
37
36
  requirements:
38
- - - "~>"
37
+ - - ">="
39
38
  - !ruby/object:Gem::Version
40
- version: '5'
39
+ version: '0'
41
40
  - !ruby/object:Gem::Dependency
42
- name: rake
41
+ name: rspec
43
42
  requirement: !ruby/object:Gem::Requirement
44
43
  requirements:
45
- - - "~>"
44
+ - - ">="
46
45
  - !ruby/object:Gem::Version
47
- version: '10'
46
+ version: '0'
48
47
  type: :development
49
48
  prerelease: false
50
49
  version_requirements: !ruby/object:Gem::Requirement
51
50
  requirements:
52
- - - "~>"
51
+ - - ">="
53
52
  - !ruby/object:Gem::Version
54
- version: '10'
53
+ version: '0'
54
+ - !ruby/object:Gem::Dependency
55
+ name: simplecov
56
+ requirement: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: '0'
61
+ type: :development
62
+ prerelease: false
63
+ version_requirements: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: '0'
55
68
  description: Reformat Enumerables into Hashes, using derived keys / values
56
- email:
57
69
  executables: []
58
70
  extensions: []
59
71
  extra_rdoc_files: []
60
72
  files:
73
+ - CHANGELOG.md
74
+ - Gemfile
75
+ - LICENSE.txt
76
+ - README.md
61
77
  - lib/rekey.rb
62
78
  - lib/rekey/rekey.rb
63
- - test/test_array_block.rb
64
- - test/test_array_handlers.rb
65
- - test/test_empty_input.rb
66
- - test/test_hash_block.rb
67
- - test/test_hash_handlers.rb
68
- - test/test_invalid_input.rb
69
- - test/test_monkey_patching.rb
70
- - test/test_range.rb
71
- - test/test_regexp.rb
72
- homepage: https://github.com/dpep/rb_rekey
79
+ - lib/rekey/version.rb
80
+ - rekey.gemspec
81
+ homepage: https://github.com/dpep/rekey_rb
73
82
  licenses:
74
83
  - MIT
75
84
  metadata: {}
76
- post_install_message:
77
85
  rdoc_options: []
78
86
  require_paths:
79
87
  - lib
@@ -81,25 +89,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
81
89
  requirements:
82
90
  - - ">="
83
91
  - !ruby/object:Gem::Version
84
- version: '0'
92
+ version: '3'
85
93
  required_rubygems_version: !ruby/object:Gem::Requirement
86
94
  requirements:
87
95
  - - ">="
88
96
  - !ruby/object:Gem::Version
89
97
  version: '0'
90
98
  requirements: []
91
- rubyforge_project:
92
- rubygems_version: 2.6.11
93
- signing_key:
99
+ rubygems_version: 3.6.9
94
100
  specification_version: 4
95
101
  summary: Rekey
96
- test_files:
97
- - test/test_array_block.rb
98
- - test/test_array_handlers.rb
99
- - test/test_empty_input.rb
100
- - test/test_hash_block.rb
101
- - test/test_hash_handlers.rb
102
- - test/test_invalid_input.rb
103
- - test/test_monkey_patching.rb
104
- - test/test_range.rb
105
- - test/test_regexp.rb
102
+ test_files: []
@@ -1,44 +0,0 @@
1
- require 'minitest/autorun'
2
- require 'rekey'
3
-
4
-
5
- class RekeyArrayBlockTest < Minitest::Test
6
-
7
- def setup
8
- @input = [*1..3]
9
- end
10
-
11
- def test_keys
12
- assert_equal({
13
- 1 => 1,
14
- 2 => 2,
15
- 3 => 3,
16
- },
17
- @input.rekey {|v| v }
18
- )
19
-
20
- assert_equal({
21
- 2 => 1,
22
- 4 => 2,
23
- 6 => 3,
24
- },
25
- @input.rekey {|v| v * 2 }
26
- )
27
-
28
- assert_equal({
29
- '1' => 1,
30
- '2' => 2,
31
- '3' => 3,
32
- },
33
- @input.rekey {|v| v.to_s }
34
- )
35
- end
36
-
37
- def test_nil_key
38
- assert_equal(
39
- { nil => 3 },
40
- @input.rekey {|k, v| nil }
41
- )
42
- end
43
-
44
- end
@@ -1,153 +0,0 @@
1
- require 'minitest/autorun'
2
- require 'rekey'
3
-
4
-
5
- class RekeyArrayHandlersTest < Minitest::Test
6
-
7
- def setup
8
- @input = [*1..3]
9
- end
10
-
11
- def test_both
12
- assert_equal({
13
- 1 => 1,
14
- 2 => 2,
15
- 3 => 3,
16
- },
17
- @input.rekey(:to_i, :to_i)
18
- )
19
-
20
- assert_equal({
21
- '1' => 1.0,
22
- '2' => 2.0,
23
- '3' => 3.0,
24
- },
25
- @input.rekey(:to_s, :to_f)
26
- )
27
-
28
- assert_equal({
29
- '1' => 1.0,
30
- '2' => 2.0,
31
- '3' => 3.0,
32
- },
33
- @input.rekey('to_s', 'to_f')
34
- )
35
- end
36
-
37
- def test_keys
38
- assert_equal({
39
- '1' => 1,
40
- '2' => 2,
41
- '3' => 3,
42
- },
43
- @input.rekey(:to_s)
44
- )
45
-
46
- assert_equal({
47
- '1' => 1,
48
- '2' => 2,
49
- '3' => 3,
50
- },
51
- @input.rekey('to_s')
52
- )
53
-
54
- assert_equal({
55
- 1.0 => 1,
56
- 2.0 => 2,
57
- 3.0 => 3,
58
- },
59
- @input.rekey(:to_f)
60
- )
61
-
62
- assert_equal({
63
- 1.0 => 1,
64
- 2.0 => 2,
65
- 3.0 => 3,
66
- },
67
- @input.rekey(&:to_f)
68
- )
69
- end
70
-
71
- def test_values
72
- assert_equal(
73
- @input,
74
- @input.rekey(nil, :to_i)
75
- )
76
-
77
- assert_equal(
78
- @input.map(&:to_f),
79
- @input.rekey(nil, :to_f)
80
- )
81
-
82
- assert_equal(
83
- @input.map(&:to_s),
84
- @input.rekey(nil, 'to_s')
85
- )
86
- end
87
-
88
- def test_array_indices
89
- array_data = [
90
- [ 1, 2, 3 ],
91
- [ 4, 5, 6 ],
92
- [ 7, 8, 9 ],
93
- ]
94
-
95
- assert_equal(
96
- array_data,
97
- array_data.rekey(nil, :to_a)
98
- )
99
-
100
- assert_equal(
101
- [ 1, 4, 7 ],
102
- array_data.rekey(nil, 0)
103
- )
104
-
105
- assert_equal({
106
- 1 => 3,
107
- 4 => 6,
108
- 7 => 9,
109
- },
110
- array_data.rekey(0, 2)
111
- )
112
-
113
- array_data = [
114
- [ 1 ],
115
- [ 2, 1 ],
116
- [ 3, 2, 1 ],
117
- ]
118
- assert_equal({
119
- 1 => 1,
120
- 2 => 2,
121
- 3 => 3,
122
- },
123
- array_data.rekey(0, :count)
124
- )
125
- end
126
-
127
-
128
- def test_hash_indices
129
- data = [
130
- { i: 1, v: 'a' },
131
- { i: 2, v: 'b' },
132
- { i: 3, v: 'c' },
133
- ]
134
-
135
- assert_equal({
136
- 1 => data[0],
137
- 2 => data[1],
138
- 3 => data[2],
139
- },
140
- data.rekey(:i)
141
- )
142
-
143
- assert_equal({
144
- 1 => 'a',
145
- 2 => 'b',
146
- 3 => 'c',
147
- },
148
- data.rekey(:i, :v)
149
- )
150
- end
151
-
152
-
153
- end
@@ -1,29 +0,0 @@
1
- require 'minitest/autorun'
2
- require 'rekey'
3
-
4
-
5
- class RekeyEmptyInputTest < Minitest::Test
6
-
7
- def test_all
8
- assert_equal(
9
- {},
10
- [].rekey(:k, :v)
11
- )
12
-
13
- assert_equal(
14
- {},
15
- {}.rekey(:k, :v)
16
- )
17
-
18
- assert_equal(
19
- {},
20
- Set.new.rekey(:k, :v)
21
- )
22
-
23
- assert_equal(
24
- [],
25
- Set.new.rekey(nil, :k)
26
- )
27
- end
28
-
29
- end
@@ -1,74 +0,0 @@
1
- require 'minitest/autorun'
2
- require 'rekey'
3
-
4
-
5
- class RekeyHashBlockTest < Minitest::Test
6
- def setup
7
- @input = {
8
- a: 1,
9
- b: 2,
10
- c: 3,
11
- }
12
- end
13
-
14
- def test_arity1_keys
15
- assert_equal({
16
- 1 => 1,
17
- 2 => 2,
18
- 3 => 3,
19
- },
20
- @input.rekey {|v| v }
21
- )
22
-
23
- assert_equal({
24
- '1' => 1,
25
- '2' => 2,
26
- '3' => 3,
27
- },
28
- @input.rekey {|v| v.to_s }
29
- )
30
-
31
- # it can use Arrays as Hash keys...if you really want to
32
- assert_equal({
33
- [1] => 1,
34
- [2] => 2,
35
- [3] => 3,
36
- },
37
- @input.rekey {|v| [v] }
38
- )
39
- end
40
-
41
- def test_arity2_keys
42
- assert_equal({
43
- 1 => 1,
44
- 2 => 2,
45
- 3 => 3,
46
- },
47
- @input.rekey {|k, v| v }
48
- )
49
-
50
- assert_equal({
51
- a: 1,
52
- b: 2,
53
- c: 3,
54
- },
55
- @input.rekey {|k, v| k }
56
- )
57
-
58
- assert_equal({
59
- 'aa' => 1,
60
- 'bb' => 2,
61
- 'cc' => 3,
62
- },
63
- @input.rekey {|k, v| k.to_s * 2 }
64
- )
65
- end
66
-
67
- def test_nil_key
68
- assert_equal(
69
- { nil => 3 },
70
- @input.rekey {|k, v| nil }
71
- )
72
- end
73
-
74
- end
@@ -1,131 +0,0 @@
1
- require 'minitest/autorun'
2
- require 'rekey'
3
-
4
-
5
- class RekeyHashHandlersTest < Minitest::Test
6
- def setup
7
- @input = {
8
- a: 1,
9
- b: 2,
10
- c: 3,
11
- }
12
- end
13
-
14
- def test_both
15
- assert_equal({
16
- 1 => 1,
17
- 2 => 2,
18
- 3 => 3,
19
- },
20
- @input.rekey(:to_i, :to_i)
21
- )
22
-
23
- assert_equal({
24
- '1' => 1.0,
25
- '2' => 2.0,
26
- '3' => 3.0,
27
- },
28
- @input.rekey(:to_s, :to_i)
29
- )
30
-
31
- assert_equal({
32
- '1' => 1.0,
33
- '2' => 2.0,
34
- '3' => 3.0,
35
- },
36
- @input.rekey('to_s', 'to_i')
37
- )
38
-
39
- end
40
-
41
- def test_keys
42
- assert_equal({
43
- '1' => 1,
44
- '2' => 2,
45
- '3' => 3,
46
- },
47
- @input.rekey(:to_s)
48
- )
49
-
50
- assert_equal({
51
- 1.0 => 1,
52
- 2.0 => 2,
53
- 3.0 => 3,
54
- },
55
- @input.rekey(:to_f)
56
- )
57
- end
58
-
59
- def test_values
60
- assert_equal(
61
- @input,
62
- @input.rekey(nil, :to_i)
63
- )
64
-
65
- assert_equal({
66
- a: '1',
67
- b: '2',
68
- c: '3',
69
- },
70
- @input.rekey(nil, :to_s)
71
- )
72
-
73
- assert_equal({
74
- a: '1',
75
- b: '2',
76
- c: '3',
77
- },
78
- @input.rekey(nil, 'to_s')
79
- )
80
- end
81
-
82
- def test_hash_array
83
- data = {
84
- a: [ 1, 2, 3 ],
85
- b: [ 4, 5, 6 ],
86
- c: [ 7, 8, 9 ],
87
- }
88
-
89
- assert_equal({
90
- a: 1,
91
- b: 4,
92
- c: 7,
93
- },
94
- data.rekey(nil, 0)
95
- )
96
-
97
- assert_equal({
98
- 1 => 2,
99
- 4 => 5,
100
- 7 => 8,
101
- },
102
- data.rekey(0, 1)
103
- )
104
- end
105
-
106
- def test_hash_hash
107
- data = {
108
- a: { i: 1, v: 2 },
109
- b: { i: 2, v: 4 },
110
- c: { i: 3, v: 6 },
111
- }
112
-
113
- assert_equal({
114
- a: 1,
115
- b: 2,
116
- c: 3,
117
- },
118
- data.rekey(nil, :i)
119
- )
120
-
121
- assert_equal({
122
- 1 => 2,
123
- 2 => 4,
124
- 3 => 6,
125
- },
126
- data.rekey(:i, :v)
127
- )
128
-
129
- end
130
-
131
- end
@@ -1,25 +0,0 @@
1
- require 'minitest/autorun'
2
- require 'rekey'
3
-
4
-
5
- class RekeyInvalidInputTest < Minitest::Test
6
- def setup
7
- @input = [*1..3]
8
- end
9
-
10
-
11
- def test_all
12
- assert_raises ArgumentError do
13
- @input.rekey
14
- end
15
-
16
- assert_raises ArgumentError do
17
- @input.rekey(:k) do |k| 1 end
18
- end
19
-
20
- assert_raises ArgumentError do
21
- @input.rekey(:k, :v) do |k| 1 end
22
- end
23
- end
24
-
25
- end
@@ -1,36 +0,0 @@
1
- require 'minitest/autorun'
2
- require 'set'
3
-
4
- $LOAD_PATH.unshift 'lib'
5
- require 'rekey/rekey'
6
-
7
-
8
- class MonkeyPatchingTest < Minitest::Test
9
- def test_not_installed
10
- if defined? Rekey::VERSION
11
- # entire library was loaded, so these tests are invalid.
12
- # this happens when run through `rake`
13
- skip
14
- end
15
-
16
- # `require 'rekey/rekey'` should load Rekey
17
- assert Rekey
18
-
19
- # but no monkey patching
20
- assert_raises NoMethodError do
21
- [ 1, 2, 3 ].rekey 0
22
- end
23
-
24
- assert_raises NoMethodError do
25
- { a: 1 }.rekey 0
26
- end
27
-
28
- assert_raises NoMethodError do
29
- Set.new([ 1, 2, 3 ]).rekey 0
30
- end
31
-
32
- puts 'yay, no monkey patching'
33
- end
34
-
35
-
36
- end
data/test/test_range.rb DELETED
@@ -1,44 +0,0 @@
1
- require 'minitest/autorun'
2
- require 'rekey'
3
-
4
-
5
- class RekeyRangeTest < Minitest::Test
6
-
7
- def setup
8
- @input = [
9
- [ 1, 2, 3 ],
10
- [ 4, 5, 6 ],
11
- ]
12
- end
13
-
14
- def test_stuff
15
- assert_equal([
16
- [ 1, 2 ],
17
- [ 4, 5 ],
18
- ],
19
- @input.rekey(nil, 0..1)
20
- )
21
-
22
- assert_equal([
23
- [ 2 ],
24
- [ 5 ],
25
- ],
26
- @input.rekey(nil, 1...2)
27
- )
28
-
29
- assert_equal({
30
- [ 2 ] => @input[0],
31
- [ 5 ] => @input[1],
32
- },
33
- @input.rekey(1...2)
34
- )
35
-
36
- assert_equal({
37
- 3 => [ 1, 2 ],
38
- 6 => [ 4, 5 ],
39
- },
40
- @input.rekey(2, 0..1)
41
- )
42
- end
43
-
44
- end
data/test/test_regexp.rb DELETED
@@ -1,30 +0,0 @@
1
- require 'minitest/autorun'
2
- require 'rekey'
3
-
4
-
5
- class RekeyRegexpTest < Minitest::Test
6
-
7
- def setup
8
- @input = [
9
- [ 'a', 'aa', 'b', 'ba' ],
10
- [ 'b', 'c', 'bc' ],
11
- ]
12
- end
13
-
14
- def test_stuff
15
- assert_equal([
16
- ['a', 'aa', 'ba'],
17
- [],
18
- ],
19
- @input.rekey(nil, /a/)
20
- )
21
-
22
- assert_equal([
23
- ['b', 'ba'],
24
- ['b', 'bc'],
25
- ],
26
- @input.rekey(nil, /b/)
27
- )
28
- end
29
-
30
- end