hash_remapper 0.4.2 → 0.4.3
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 +4 -4
- data/README.md +6 -1
- data/exmaples/relations.rb +100 -0
- data/hash_remapper.gemspec +8 -8
- data/lib/hash_remapper.rb +1 -1
- data/lib/hash_remapper/version.rb +1 -1
- metadata +28 -33
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 849f5ac471d049fc5ed4dccb35a3dc583cc326b94196378db5444a6ce6d7c7e5
|
4
|
+
data.tar.gz: caebef5d5546e43484ace97d07e9b8a3c719a11d033b6936d9c2e67be0534a41
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 467c6ab818803bf1ac8f7c252ed60bf0ce9b02926cae155aa21cd1689aa5c05e6926716293ad45ba8c74190c6aa7b8221a7ad6658ac47394f41faefcd1369e62
|
7
|
+
data.tar.gz: 90897ecf9b5bdc3bb6ee6b60c09721a9f0a5236fd2e5f5bc4d03580beb83a337a8e36f94e0294ea8005fe0eee26a20dfc5521f43502d10a8f8ebeef73a8f58ee
|
data/README.md
CHANGED
@@ -5,7 +5,8 @@
|
|
5
5
|
</p>
|
6
6
|
|
7
7
|
> A little lib which maps original keys to the new ones <sup>[*](#features)</sup>
|
8
|
-
>
|
8
|
+
>
|
9
|
+
> [](https://travis-ci.org/smileart/hash_remapper) 
|
9
10
|
|
10
11
|
## Installation
|
11
12
|
|
@@ -331,6 +332,10 @@ HashRemapper.remap(
|
|
331
332
|
# }
|
332
333
|
```
|
333
334
|
|
335
|
+
## Examples
|
336
|
+
|
337
|
+
For advanced usage and examples see [specs](./spec/hash_remapper_spec.rb) and [examples](./exmaples)
|
338
|
+
|
334
339
|
## Development
|
335
340
|
|
336
341
|
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
@@ -0,0 +1,100 @@
|
|
1
|
+
require 'hash_digger'
|
2
|
+
require 'hash_remapper'
|
3
|
+
require 'tapp'
|
4
|
+
|
5
|
+
data = {
|
6
|
+
:books => [
|
7
|
+
{
|
8
|
+
:title => "The Hitchhiker's Guide to the Galaxy",
|
9
|
+
:editions => [
|
10
|
+
{
|
11
|
+
:isbn => "978-1-9936-7490-4",
|
12
|
+
:language => "en",
|
13
|
+
:pages => 193,
|
14
|
+
:genres => [
|
15
|
+
"comic",
|
16
|
+
"science fiction"
|
17
|
+
]
|
18
|
+
},
|
19
|
+
{
|
20
|
+
:isbn => "978-0-5762-2634-9",
|
21
|
+
:language => "en",
|
22
|
+
:pages => 208,
|
23
|
+
:genres => [
|
24
|
+
"comic",
|
25
|
+
"fiction",
|
26
|
+
"science fiction"
|
27
|
+
]
|
28
|
+
},
|
29
|
+
{
|
30
|
+
:isbn => "978-5-4566-1998-3",
|
31
|
+
:language => "de",
|
32
|
+
:pages => 232,
|
33
|
+
:genres => [
|
34
|
+
"fiction",
|
35
|
+
"science fiction"
|
36
|
+
]
|
37
|
+
}
|
38
|
+
]
|
39
|
+
},
|
40
|
+
{
|
41
|
+
:title => "To Kill a Mockingbird",
|
42
|
+
:editions => [
|
43
|
+
{
|
44
|
+
:isbn => "978-4-0125-2865-3",
|
45
|
+
:language => "en",
|
46
|
+
:pages => 324,
|
47
|
+
:genres => [
|
48
|
+
"Southern Gothic",
|
49
|
+
"Bildungsroman"
|
50
|
+
]
|
51
|
+
},
|
52
|
+
{
|
53
|
+
:isbn => "978-5-3638-3280-2",
|
54
|
+
:language => "en",
|
55
|
+
:pages => 324,
|
56
|
+
:genres => [
|
57
|
+
"magic realism"
|
58
|
+
]
|
59
|
+
}
|
60
|
+
]
|
61
|
+
}
|
62
|
+
]
|
63
|
+
}
|
64
|
+
|
65
|
+
puts "Here we lose the relations between books and ISBNs:"
|
66
|
+
raw_result = HashRemapper.remap(
|
67
|
+
data,
|
68
|
+
titles: [:titles, { path: 'books.*.title' }],
|
69
|
+
isbns: [:isbns, { path: 'books.*.editions.*.*.isbn' }]
|
70
|
+
).tapp
|
71
|
+
|
72
|
+
puts '='*50
|
73
|
+
puts
|
74
|
+
|
75
|
+
puts "Here we do a little trick splitting the path into two parts to presev relation in indexes"
|
76
|
+
isbn_result = HashRemapper.remap(
|
77
|
+
data,
|
78
|
+
titles: [:titles, { path: 'books.*.title' }],
|
79
|
+
isbns: [:isbns, { path: 'books.*.editions.*', lambda: ->(editions) { editions.collect { |edition| HashDigger::Digger.dig(data: edition, path: '*.isbn') } } }]
|
80
|
+
).tapp
|
81
|
+
|
82
|
+
puts '='*50
|
83
|
+
puts
|
84
|
+
|
85
|
+
puts "Then we zip the data together in key => value format:"
|
86
|
+
Hash[isbn_result[:titles].zip(isbn_result[:isbns])].tapp
|
87
|
+
|
88
|
+
puts '='*50
|
89
|
+
puts ''
|
90
|
+
|
91
|
+
puts "Or create the new hashes assebling the data in any desirable structure:"
|
92
|
+
books_with_isbns = []
|
93
|
+
isbn_result[:titles].each_with_index do |t, i|
|
94
|
+
books_with_isbns << {
|
95
|
+
title: t,
|
96
|
+
isbns: isbn_result[:isbns][i].uniq
|
97
|
+
}
|
98
|
+
end
|
99
|
+
|
100
|
+
books_with_isbns.tapp
|
data/hash_remapper.gemspec
CHANGED
@@ -25,16 +25,16 @@ HashRemapper::GEMSPEC = Gem::Specification.new do |spec|
|
|
25
25
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
26
26
|
spec.require_paths = ['lib']
|
27
27
|
|
28
|
-
spec.add_dependency 'hash_digger', '~> 0.
|
28
|
+
spec.add_dependency 'hash_digger', '~> 0.1'
|
29
29
|
|
30
|
-
spec.add_development_dependency 'bundler', '~> 2.
|
31
|
-
spec.add_development_dependency 'byebug', '~> 11.
|
30
|
+
spec.add_development_dependency 'bundler', '~> 2.1'
|
31
|
+
spec.add_development_dependency 'byebug', '~> 11.1'
|
32
32
|
spec.add_development_dependency 'inch', '>= 0.9.0.rc1'
|
33
|
-
spec.add_development_dependency '
|
34
|
-
spec.add_development_dependency '
|
35
|
-
spec.add_development_dependency '
|
36
|
-
spec.add_development_dependency 'rubocop', '~> 0.51'
|
33
|
+
spec.add_development_dependency 'rake', '~> 13.0'
|
34
|
+
spec.add_development_dependency 'rspec', '~> 3.9'
|
35
|
+
spec.add_development_dependency 'rubocop', '~> 0.91'
|
37
36
|
spec.add_development_dependency 'rubygems-tasks', '~> 0.2'
|
38
|
-
spec.add_development_dependency 'simplecov', '~> 0.
|
37
|
+
spec.add_development_dependency 'simplecov', '~> 0.19'
|
38
|
+
spec.add_development_dependency 'tapp', '~> 1.5'
|
39
39
|
spec.add_development_dependency 'yard', '~> 0.9'
|
40
40
|
end
|
data/lib/hash_remapper.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hash_remapper
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Serge Bedzhyk
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-09-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: hash_digger
|
@@ -16,48 +16,42 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '0.
|
20
|
-
- - ">="
|
21
|
-
- !ruby/object:Gem::Version
|
22
|
-
version: 0.0.4
|
19
|
+
version: '0.1'
|
23
20
|
type: :runtime
|
24
21
|
prerelease: false
|
25
22
|
version_requirements: !ruby/object:Gem::Requirement
|
26
23
|
requirements:
|
27
24
|
- - "~>"
|
28
25
|
- !ruby/object:Gem::Version
|
29
|
-
version: '0.
|
30
|
-
- - ">="
|
31
|
-
- !ruby/object:Gem::Version
|
32
|
-
version: 0.0.4
|
26
|
+
version: '0.1'
|
33
27
|
- !ruby/object:Gem::Dependency
|
34
28
|
name: bundler
|
35
29
|
requirement: !ruby/object:Gem::Requirement
|
36
30
|
requirements:
|
37
31
|
- - "~>"
|
38
32
|
- !ruby/object:Gem::Version
|
39
|
-
version: '2.
|
33
|
+
version: '2.1'
|
40
34
|
type: :development
|
41
35
|
prerelease: false
|
42
36
|
version_requirements: !ruby/object:Gem::Requirement
|
43
37
|
requirements:
|
44
38
|
- - "~>"
|
45
39
|
- !ruby/object:Gem::Version
|
46
|
-
version: '2.
|
40
|
+
version: '2.1'
|
47
41
|
- !ruby/object:Gem::Dependency
|
48
42
|
name: byebug
|
49
43
|
requirement: !ruby/object:Gem::Requirement
|
50
44
|
requirements:
|
51
45
|
- - "~>"
|
52
46
|
- !ruby/object:Gem::Version
|
53
|
-
version: '11.
|
47
|
+
version: '11.1'
|
54
48
|
type: :development
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
51
|
requirements:
|
58
52
|
- - "~>"
|
59
53
|
- !ruby/object:Gem::Version
|
60
|
-
version: '11.
|
54
|
+
version: '11.1'
|
61
55
|
- !ruby/object:Gem::Dependency
|
62
56
|
name: inch
|
63
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -73,89 +67,89 @@ dependencies:
|
|
73
67
|
- !ruby/object:Gem::Version
|
74
68
|
version: 0.9.0.rc1
|
75
69
|
- !ruby/object:Gem::Dependency
|
76
|
-
name:
|
70
|
+
name: rake
|
77
71
|
requirement: !ruby/object:Gem::Requirement
|
78
72
|
requirements:
|
79
73
|
- - "~>"
|
80
74
|
- !ruby/object:Gem::Version
|
81
|
-
version: '0
|
75
|
+
version: '13.0'
|
82
76
|
type: :development
|
83
77
|
prerelease: false
|
84
78
|
version_requirements: !ruby/object:Gem::Requirement
|
85
79
|
requirements:
|
86
80
|
- - "~>"
|
87
81
|
- !ruby/object:Gem::Version
|
88
|
-
version: '0
|
82
|
+
version: '13.0'
|
89
83
|
- !ruby/object:Gem::Dependency
|
90
|
-
name:
|
84
|
+
name: rspec
|
91
85
|
requirement: !ruby/object:Gem::Requirement
|
92
86
|
requirements:
|
93
87
|
- - "~>"
|
94
88
|
- !ruby/object:Gem::Version
|
95
|
-
version: '
|
89
|
+
version: '3.9'
|
96
90
|
type: :development
|
97
91
|
prerelease: false
|
98
92
|
version_requirements: !ruby/object:Gem::Requirement
|
99
93
|
requirements:
|
100
94
|
- - "~>"
|
101
95
|
- !ruby/object:Gem::Version
|
102
|
-
version: '
|
96
|
+
version: '3.9'
|
103
97
|
- !ruby/object:Gem::Dependency
|
104
|
-
name:
|
98
|
+
name: rubocop
|
105
99
|
requirement: !ruby/object:Gem::Requirement
|
106
100
|
requirements:
|
107
101
|
- - "~>"
|
108
102
|
- !ruby/object:Gem::Version
|
109
|
-
version: '
|
103
|
+
version: '0.91'
|
110
104
|
type: :development
|
111
105
|
prerelease: false
|
112
106
|
version_requirements: !ruby/object:Gem::Requirement
|
113
107
|
requirements:
|
114
108
|
- - "~>"
|
115
109
|
- !ruby/object:Gem::Version
|
116
|
-
version: '
|
110
|
+
version: '0.91'
|
117
111
|
- !ruby/object:Gem::Dependency
|
118
|
-
name:
|
112
|
+
name: rubygems-tasks
|
119
113
|
requirement: !ruby/object:Gem::Requirement
|
120
114
|
requirements:
|
121
115
|
- - "~>"
|
122
116
|
- !ruby/object:Gem::Version
|
123
|
-
version: '0.
|
117
|
+
version: '0.2'
|
124
118
|
type: :development
|
125
119
|
prerelease: false
|
126
120
|
version_requirements: !ruby/object:Gem::Requirement
|
127
121
|
requirements:
|
128
122
|
- - "~>"
|
129
123
|
- !ruby/object:Gem::Version
|
130
|
-
version: '0.
|
124
|
+
version: '0.2'
|
131
125
|
- !ruby/object:Gem::Dependency
|
132
|
-
name:
|
126
|
+
name: simplecov
|
133
127
|
requirement: !ruby/object:Gem::Requirement
|
134
128
|
requirements:
|
135
129
|
- - "~>"
|
136
130
|
- !ruby/object:Gem::Version
|
137
|
-
version: '0.
|
131
|
+
version: '0.19'
|
138
132
|
type: :development
|
139
133
|
prerelease: false
|
140
134
|
version_requirements: !ruby/object:Gem::Requirement
|
141
135
|
requirements:
|
142
136
|
- - "~>"
|
143
137
|
- !ruby/object:Gem::Version
|
144
|
-
version: '0.
|
138
|
+
version: '0.19'
|
145
139
|
- !ruby/object:Gem::Dependency
|
146
|
-
name:
|
140
|
+
name: tapp
|
147
141
|
requirement: !ruby/object:Gem::Requirement
|
148
142
|
requirements:
|
149
143
|
- - "~>"
|
150
144
|
- !ruby/object:Gem::Version
|
151
|
-
version: '
|
145
|
+
version: '1.5'
|
152
146
|
type: :development
|
153
147
|
prerelease: false
|
154
148
|
version_requirements: !ruby/object:Gem::Requirement
|
155
149
|
requirements:
|
156
150
|
- - "~>"
|
157
151
|
- !ruby/object:Gem::Version
|
158
|
-
version: '
|
152
|
+
version: '1.5'
|
159
153
|
- !ruby/object:Gem::Dependency
|
160
154
|
name: yard
|
161
155
|
requirement: !ruby/object:Gem::Requirement
|
@@ -188,6 +182,7 @@ files:
|
|
188
182
|
- Rakefile
|
189
183
|
- bin/console
|
190
184
|
- bin/setup
|
185
|
+
- exmaples/relations.rb
|
191
186
|
- exmaples/weather.rb
|
192
187
|
- hash_remapper.gemspec
|
193
188
|
- img/hash_remapper.png
|
@@ -212,7 +207,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
212
207
|
- !ruby/object:Gem::Version
|
213
208
|
version: '0'
|
214
209
|
requirements: []
|
215
|
-
rubygems_version: 3.
|
210
|
+
rubygems_version: 3.1.2
|
216
211
|
signing_key:
|
217
212
|
specification_version: 4
|
218
213
|
summary: A little lib which maps original keys to the new ones
|