libis-tools 1.0.6 → 1.0.13
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/.travis.yml +3 -13
- data/lib/libis/tools/csv.rb +2 -2
- data/lib/libis/tools/deep_struct.rb +4 -4
- data/lib/libis/tools/extend/empty.rb +28 -3
- data/lib/libis/tools/extend/hash.rb +48 -2
- data/lib/libis/tools/extend/ostruct.rb +1 -2
- data/lib/libis/tools/extend/string.rb +37 -14
- data/lib/libis/tools/extend/struct.rb +1 -2
- data/lib/libis/tools/logger.rb +0 -1
- data/lib/libis/tools/mets_file.rb +7 -3
- data/lib/libis/tools/version.rb +1 -1
- data/libis-tools.gemspec +3 -4
- data/spec/config_file_spec.rb +1 -0
- metadata +9 -24
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d1beb34bf6d3caa983e0909913526c51fede24c5a10eb612a54c3deca274c11a
|
4
|
+
data.tar.gz: 5ec72ceeffaa443b21599036ffa1a647e3a645fb00009647b3929868f734826b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 67f28b6fa1c208137f3730ca2d2854bf3d86358434bf6f3770846ea008f6be96a193f0b3f7c6e49bdfa1866158f958bb8234df7dc28ae58631811222350922be
|
7
|
+
data.tar.gz: 3d12bb2aa8360009a45ba6e34734c20a219bd7b165778a07de7889886a030ae6db83a014cca433057ccb8dcec89fdf9a6fa153337f4c7acc3d7f022bc7cb8eca
|
data/.travis.yml
CHANGED
@@ -3,30 +3,20 @@ language: ruby
|
|
3
3
|
cache: bundler
|
4
4
|
sudo: false
|
5
5
|
rvm:
|
6
|
-
- 2.3
|
7
6
|
- 2.4
|
8
7
|
- 2.5
|
9
8
|
- 2.6
|
9
|
+
- 2.7
|
10
|
+
- 3.0
|
10
11
|
- ruby-head
|
11
12
|
# - jruby-9.1
|
12
13
|
- jruby-9.2
|
13
14
|
- jruby-head
|
14
15
|
jdk:
|
15
|
-
- openjdk10
|
16
16
|
- openjdk11
|
17
17
|
matrix:
|
18
|
-
exclude:
|
19
|
-
- rvm: 2.3
|
20
|
-
jdk: openjdk10
|
21
|
-
- rvm: 2.4
|
22
|
-
jdk: openjdk10
|
23
|
-
- rvm: 2.5
|
24
|
-
jdk: openjdk10
|
25
|
-
- rvm: 2.6
|
26
|
-
jdk: openjdk10
|
27
|
-
- rvm: ruby-head
|
28
|
-
jdk: openjdk10
|
29
18
|
allow_failures:
|
19
|
+
- rvm: 3.0
|
30
20
|
- rvm: ruby-head
|
31
21
|
- rvm: jruby-head
|
32
22
|
branches:
|
data/lib/libis/tools/csv.rb
CHANGED
@@ -20,7 +20,7 @@ module Libis
|
|
20
20
|
optional_headers = options.delete(:optional)
|
21
21
|
options[:headers] = true
|
22
22
|
options[:return_headers] = true
|
23
|
-
csv = CSV.open(file_name, mode, options)
|
23
|
+
csv = ::CSV.open(file_name, mode, **options)
|
24
24
|
line = csv.shift
|
25
25
|
found_headers = required_headers & line.headers
|
26
26
|
return csv if found_headers.size == required_headers.size
|
@@ -29,7 +29,7 @@ module Libis
|
|
29
29
|
options[:headers] = (required_headers + optional_headers)[0...line.size]
|
30
30
|
raise RuntimeError, 'CSV does not contain enough columns' if required_headers.size > line.size
|
31
31
|
options[:return_headers] = true
|
32
|
-
csv = CSV.open(file_name, mode, options)
|
32
|
+
csv = ::CSV.open(file_name, mode, **options)
|
33
33
|
csv.shift
|
34
34
|
csv
|
35
35
|
end
|
@@ -28,8 +28,8 @@ module Libis
|
|
28
28
|
return self unless hash.respond_to?(:to_hash)
|
29
29
|
hash.to_hash.inject(self.dup) do |ds, (key, value)|
|
30
30
|
ds[key] = DeepDup.new(
|
31
|
-
recurse_over_arrays: @recurse_over_arrays,
|
32
|
-
preserve_original_keys: @preserve_original_keys
|
31
|
+
recurse_over_arrays: @options[:recurse_over_arrays],
|
32
|
+
preserve_original_keys: @options[:preserve_original_keys]
|
33
33
|
).call(value)
|
34
34
|
ds
|
35
35
|
end
|
@@ -39,8 +39,8 @@ module Libis
|
|
39
39
|
return self unless hash.respond_to?(:to_hash)
|
40
40
|
hash.to_hash.inject(self) do |ds, (key, value)|
|
41
41
|
ds[key] = DeepDup.new(
|
42
|
-
recurse_over_arrays: @recurse_over_arrays,
|
43
|
-
preserve_original_keys: @preserve_original_keys
|
42
|
+
recurse_over_arrays: @options[:recurse_over_arrays],
|
43
|
+
preserve_original_keys: @options[:preserve_original_keys]
|
44
44
|
).call(value)
|
45
45
|
ds
|
46
46
|
end
|
@@ -1,7 +1,32 @@
|
|
1
|
-
#
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
2
3
|
class NilClass
|
3
|
-
# Allows nil.empty?
|
4
4
|
def empty?
|
5
5
|
true
|
6
6
|
end
|
7
|
-
end
|
7
|
+
end
|
8
|
+
|
9
|
+
class TrueClass
|
10
|
+
def empty?
|
11
|
+
false
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
class FalseClass
|
16
|
+
def empty?
|
17
|
+
false
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
class String
|
22
|
+
BLANK_RE = /\A[[:space:]]^\z/.freeze
|
23
|
+
def blank?
|
24
|
+
empty? || BLANK_RE.match?(self)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
class Object
|
29
|
+
def blank?
|
30
|
+
respond_to?(:empty?) ? !!empty? : !self
|
31
|
+
end
|
32
|
+
end
|
@@ -1,5 +1,3 @@
|
|
1
|
-
require 'backports/rails/hash'
|
2
|
-
|
3
1
|
# Extension class for Hash
|
4
2
|
class Hash
|
5
3
|
|
@@ -56,6 +54,14 @@ class Hash
|
|
56
54
|
self.merge!(other_hash) {|_,v, w| v.blank? ? w : v}
|
57
55
|
end unless method_defined? :apply_defaults!
|
58
56
|
|
57
|
+
def symbolize_keys
|
58
|
+
self.transform_keys {|k| k.to_sym}
|
59
|
+
end unless method_defined? :symbolize_keys
|
60
|
+
|
61
|
+
def symbolize_keys!
|
62
|
+
self.transform_keys! {|k| k.to_sym}
|
63
|
+
end unless method_defined? :symbolize_keys!
|
64
|
+
|
59
65
|
# Convert all keys to symbols. In-place operation.
|
60
66
|
# @param (see #key_strings_to_symbols)
|
61
67
|
def key_strings_to_symbols!(options = {})
|
@@ -101,6 +107,14 @@ class Hash
|
|
101
107
|
r
|
102
108
|
end unless method_defined? :key_strings_to_symbols
|
103
109
|
|
110
|
+
def stringify_keys
|
111
|
+
self.transform_keys {|k| k.to_s}
|
112
|
+
end unless method_defined? :stringify_keys
|
113
|
+
|
114
|
+
def stringify_keys!
|
115
|
+
self.transform_keys! {|k| k.to_s}
|
116
|
+
end unless method_defined? :stringify_keys!
|
117
|
+
|
104
118
|
# Convert all keys to strings. In-place operation.
|
105
119
|
# (@see #key_symbols_to_strings)
|
106
120
|
# @param (see #key_symbols_to_strings)
|
@@ -144,4 +158,36 @@ class Hash
|
|
144
158
|
r
|
145
159
|
end unless method_defined? :key_symbols_to_strings
|
146
160
|
|
161
|
+
def transform_keys
|
162
|
+
result = {}
|
163
|
+
each_key do |key|
|
164
|
+
result[yield(key)] = self[key]
|
165
|
+
end
|
166
|
+
result
|
167
|
+
end unless method_defined? :transform_keys
|
168
|
+
|
169
|
+
def transform_keys!
|
170
|
+
keys.each do |key|
|
171
|
+
self[yield(key)] = delete(key)
|
172
|
+
end
|
173
|
+
self
|
174
|
+
end unless method_defined? :transform_keys!
|
175
|
+
|
176
|
+
def transform_values
|
177
|
+
return enum_for(:transform_values) { size } unless block_given?
|
178
|
+
return {} if empty?
|
179
|
+
result = self.class.new
|
180
|
+
each do |key, value|
|
181
|
+
result[key] = yield(value)
|
182
|
+
end
|
183
|
+
result
|
184
|
+
end unless method_defined? :transform_values
|
185
|
+
|
186
|
+
def transform_values!
|
187
|
+
return enum_for(:transform_values!) { size } unless block_given?
|
188
|
+
each do |key, value|
|
189
|
+
self[key] = yield(value)
|
190
|
+
end
|
191
|
+
end unless method_defined? :transform_values!
|
192
|
+
|
147
193
|
end
|
@@ -1,12 +1,42 @@
|
|
1
|
-
require 'backports/rails/string'
|
2
|
-
|
3
1
|
# Extension class
|
4
2
|
class String
|
5
3
|
|
6
|
-
#
|
7
|
-
def
|
8
|
-
|
9
|
-
|
4
|
+
# from activesupport
|
5
|
+
def camelize(first_letter = :upper)
|
6
|
+
if first_letter == :upper
|
7
|
+
gsub(/\/(.?)/) { "::#{$1.upcase}" }.gsub(/(?:^|_)(.)/) { $1.upcase }
|
8
|
+
else
|
9
|
+
self[0..0].downcase + camelize[1..-1]
|
10
|
+
end
|
11
|
+
end unless method_defined? :camelize
|
12
|
+
|
13
|
+
def constantize
|
14
|
+
names = split('::')
|
15
|
+
names.shift if names.empty? || names.first.empty?
|
16
|
+
|
17
|
+
constant = Object
|
18
|
+
names.each do |name|
|
19
|
+
constant = constant.const_defined?(name) ? constant.const_get(name) : constant.const_missing(name)
|
20
|
+
end
|
21
|
+
constant
|
22
|
+
end unless method_defined? :constantize
|
23
|
+
|
24
|
+
def dasherize
|
25
|
+
gsub(/_/, '-')
|
26
|
+
end unless method_defined? :dasherize
|
27
|
+
|
28
|
+
def demodulize
|
29
|
+
gsub(/^.*::/, '')
|
30
|
+
end unless method_defined? :demodulize
|
31
|
+
|
32
|
+
def underscore
|
33
|
+
gsub(/::/, '/').
|
34
|
+
gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').
|
35
|
+
gsub(/([a-z\d])([A-Z])/,'\1_\2').
|
36
|
+
tr("-", "_").
|
37
|
+
downcase
|
38
|
+
end unless method_defined? :underscore
|
39
|
+
|
10
40
|
|
11
41
|
# Create sortable object from string. Supports better natural sorting.
|
12
42
|
def sort_form
|
@@ -84,11 +114,4 @@ class String
|
|
84
114
|
|
85
115
|
end
|
86
116
|
|
87
|
-
|
88
|
-
class NilClass
|
89
|
-
|
90
|
-
# Allow nil.blank? so that blank? can be applied without errors.
|
91
|
-
def blank?
|
92
|
-
true
|
93
|
-
end
|
94
|
-
end
|
117
|
+
require_relative 'empty'
|
data/lib/libis/tools/logger.rb
CHANGED
@@ -91,14 +91,18 @@ module Libis
|
|
91
91
|
end
|
92
92
|
|
93
93
|
dmd_sec = xml_doc.root.xpath('mets:dmdSec', NS).inject({}) do |hash_dmd, dmd|
|
94
|
-
|
95
|
-
|
94
|
+
id = dmd[:ID]
|
95
|
+
id = id.slice(0..(id.index('-dmd') + 3))
|
96
|
+
hash_dmd[id] = dmd.xpath('.//dc:record', NS).first.children.inject({}) do |h, c|
|
97
|
+
h[c.name] = c.content if c.name != 'text'
|
96
98
|
h
|
97
99
|
end
|
98
100
|
hash_dmd
|
99
101
|
end
|
100
102
|
amd_sec = xml_doc.root.xpath('mets:amdSec', NS).inject({}) do |hash_amd, amd|
|
101
|
-
|
103
|
+
id = amd[:ID]
|
104
|
+
id = id.slice(0..(id.index('-amd') + 3))
|
105
|
+
hash_amd[id] = [:tech, :rights, :source, :digiprov].inject({}) do |hash_sec, sec|
|
102
106
|
md = amd.xpath("mets:#{sec}MD", NS).first
|
103
107
|
return hash_sec unless md
|
104
108
|
# hash_sec[sec] = md.xpath('mets:mdWrap/dnx:dnx/dnx:section', NS).inject({}) do |hash_md, dnx_sec|
|
data/lib/libis/tools/version.rb
CHANGED
data/libis-tools.gemspec
CHANGED
@@ -27,20 +27,19 @@ Gem::Specification.new do |spec|
|
|
27
27
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
28
28
|
|
29
29
|
spec.require_paths = ['lib']
|
30
|
-
spec.has_rdoc = 'yard'
|
30
|
+
# spec.has_rdoc = 'yard'
|
31
31
|
|
32
32
|
spec.add_development_dependency 'bundler', '> 1.6'
|
33
|
-
spec.add_development_dependency 'rake', '~>
|
33
|
+
spec.add_development_dependency 'rake', '~> 13.0'
|
34
34
|
spec.add_development_dependency 'rspec', '~> 3.1'
|
35
35
|
spec.add_development_dependency 'term-ansicolor', '~> 1.6'
|
36
36
|
spec.add_development_dependency 'equivalent-xml', '~> 0.5'
|
37
37
|
spec.add_development_dependency 'awesome_print', '~> 1.6'
|
38
38
|
|
39
|
-
spec.add_runtime_dependency 'backports', '~> 3.6'
|
40
39
|
spec.add_runtime_dependency 'nokogiri', '~> 1.6'
|
41
40
|
spec.add_runtime_dependency 'gyoku', '~> 1.3'
|
42
41
|
spec.add_runtime_dependency 'nori', '~> 2.6'
|
43
|
-
spec.add_runtime_dependency 'recursive-open-struct', '
|
42
|
+
spec.add_runtime_dependency 'recursive-open-struct', '>= 1.1.3'
|
44
43
|
spec.add_runtime_dependency 'parslet', '~> 1.7'
|
45
44
|
spec.add_runtime_dependency 'simple_xlsx_reader', '~> 1.0'
|
46
45
|
spec.add_runtime_dependency 'logging', '~> 2.0'
|
data/spec/config_file_spec.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: libis-tools
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.13
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kris Dekeyser
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-08-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -30,14 +30,14 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '13.0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
40
|
+
version: '13.0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rspec
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -94,20 +94,6 @@ dependencies:
|
|
94
94
|
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '1.6'
|
97
|
-
- !ruby/object:Gem::Dependency
|
98
|
-
name: backports
|
99
|
-
requirement: !ruby/object:Gem::Requirement
|
100
|
-
requirements:
|
101
|
-
- - "~>"
|
102
|
-
- !ruby/object:Gem::Version
|
103
|
-
version: '3.6'
|
104
|
-
type: :runtime
|
105
|
-
prerelease: false
|
106
|
-
version_requirements: !ruby/object:Gem::Requirement
|
107
|
-
requirements:
|
108
|
-
- - "~>"
|
109
|
-
- !ruby/object:Gem::Version
|
110
|
-
version: '3.6'
|
111
97
|
- !ruby/object:Gem::Dependency
|
112
98
|
name: nokogiri
|
113
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -154,16 +140,16 @@ dependencies:
|
|
154
140
|
name: recursive-open-struct
|
155
141
|
requirement: !ruby/object:Gem::Requirement
|
156
142
|
requirements:
|
157
|
-
- - "
|
143
|
+
- - ">="
|
158
144
|
- !ruby/object:Gem::Version
|
159
|
-
version:
|
145
|
+
version: 1.1.3
|
160
146
|
type: :runtime
|
161
147
|
prerelease: false
|
162
148
|
version_requirements: !ruby/object:Gem::Requirement
|
163
149
|
requirements:
|
164
|
-
- - "
|
150
|
+
- - ">="
|
165
151
|
- !ruby/object:Gem::Version
|
166
|
-
version:
|
152
|
+
version: 1.1.3
|
167
153
|
- !ruby/object:Gem::Dependency
|
168
154
|
name: parslet
|
169
155
|
requirement: !ruby/object:Gem::Requirement
|
@@ -400,8 +386,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
400
386
|
- !ruby/object:Gem::Version
|
401
387
|
version: '0'
|
402
388
|
requirements: []
|
403
|
-
|
404
|
-
rubygems_version: 2.7.8
|
389
|
+
rubygems_version: 3.2.15
|
405
390
|
signing_key:
|
406
391
|
specification_version: 4
|
407
392
|
summary: LIBIS toolbox.
|