libis-tools 1.0.4 → 1.0.12
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 +13 -19
- 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 +1 -1
- data/lib/libis/tools/parameter.rb +65 -61
- data/lib/libis/tools/version.rb +1 -1
- data/libis-tools.gemspec +3 -4
- data/spec/command_spec.rb +4 -1
- data/spec/config_file_spec.rb +1 -0
- metadata +9 -23
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 810ac9ed3a3b03f0ae8cc0d1deea5b1c6a0f70b0d34bce8eb752fba9da5583f9
|
4
|
+
data.tar.gz: 5b51eb0c78b0928e1183f53bd270ec148f35b47f42a066432705a657279ccfa9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a0a53c49318401d632db7a3e20a70a1378a50ce101c2e8f26ac0216aee3ffcb28c81287663b6daccb3693d2a962337c472f36254e6ea065aed2135e65cfbf876
|
7
|
+
data.tar.gz: 207d258c97de31f803d71dd0f39c6cc37b00fbcfe0120bf37a36c3669c3ac43d4d1253b2c1cfed0004a24ed8215e03e9990af4853389c40958f6c5300497068f
|
data/.travis.yml
CHANGED
@@ -1,36 +1,30 @@
|
|
1
|
+
dist: bionic
|
1
2
|
language: ruby
|
2
3
|
cache: bundler
|
3
4
|
sudo: false
|
4
5
|
rvm:
|
5
|
-
- 2.
|
6
|
-
- 2.
|
7
|
-
- 2.
|
8
|
-
- 2.
|
6
|
+
- 2.4
|
7
|
+
- 2.5
|
8
|
+
- 2.6
|
9
|
+
- 2.7
|
10
|
+
- 3.0
|
9
11
|
- ruby-head
|
10
|
-
- jruby-9.
|
11
|
-
- jruby-9.
|
12
|
+
# - jruby-9.1
|
13
|
+
- jruby-9.2
|
12
14
|
- jruby-head
|
13
15
|
jdk:
|
14
|
-
-
|
15
|
-
- oraclejdk8
|
16
|
+
- openjdk11
|
16
17
|
matrix:
|
17
|
-
exclude:
|
18
|
-
- rvm: 2.1.10
|
19
|
-
jdk: oraclejdk8
|
20
|
-
- rvm: 2.2.8
|
21
|
-
jdk: oraclejdk8
|
22
|
-
- rvm: 2.3.5
|
23
|
-
jdk: oraclejdk8
|
24
|
-
- rvm: 2.4.2
|
25
|
-
jdk: oraclejdk8
|
26
|
-
- rvm: ruby-head
|
27
|
-
jdk: oraclejdk8
|
28
18
|
allow_failures:
|
19
|
+
- rvm: 3.0
|
29
20
|
- rvm: ruby-head
|
30
21
|
- rvm: jruby-head
|
31
22
|
branches:
|
32
23
|
only:
|
33
24
|
- master
|
25
|
+
#before_install:
|
26
|
+
# - gem update --system
|
27
|
+
# - gem --version
|
34
28
|
addons:
|
35
29
|
code_climate:
|
36
30
|
repo_token: f6978964f55e6543befb82373651365f8195677816af6ff40ad70c82f7f22f09
|
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
@@ -92,7 +92,7 @@ module Libis
|
|
92
92
|
|
93
93
|
dmd_sec = xml_doc.root.xpath('mets:dmdSec', NS).inject({}) do |hash_dmd, dmd|
|
94
94
|
hash_dmd[dmd[:ID]] = dmd.xpath('.//dc:record', NS).first.children.inject({}) do |h, c|
|
95
|
-
h[c.name] = c.content
|
95
|
+
h[c.name] = c.content if c.name != 'text'
|
96
96
|
h
|
97
97
|
end
|
98
98
|
hash_dmd
|
@@ -60,7 +60,7 @@ module Libis
|
|
60
60
|
# Merges other parameter data into the current parameter
|
61
61
|
# @param [::Libis::Tools::Parameter] other parameter definition to copy properties from
|
62
62
|
def merge!(other)
|
63
|
-
other.each do |k,v|
|
63
|
+
other.each do |k, v|
|
64
64
|
if k == :options
|
65
65
|
self[:options].merge!(v)
|
66
66
|
else
|
@@ -130,55 +130,59 @@ module Libis
|
|
130
130
|
end
|
131
131
|
true
|
132
132
|
end
|
133
|
+
|
133
134
|
private
|
134
135
|
|
135
136
|
def guess_datatype
|
136
137
|
self[:datatype] || case self[:default]
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
138
|
+
when TrueClass, FalseClass
|
139
|
+
'bool'
|
140
|
+
when NilClass
|
141
|
+
'string'
|
142
|
+
when Integer
|
143
|
+
'int'
|
144
|
+
when Float
|
145
|
+
'float'
|
146
|
+
when DateTime, Date, Time
|
147
|
+
'datetime'
|
148
|
+
when Array
|
149
|
+
'array'
|
150
|
+
when Hash
|
151
|
+
'hash'
|
152
|
+
else
|
153
|
+
self[:default].class.name.downcase
|
153
154
|
end
|
154
155
|
end
|
155
156
|
|
156
157
|
def convert(v)
|
157
158
|
case self[:datatype].to_s.downcase
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
159
|
+
when 'boolean', 'bool'
|
160
|
+
return true if TRUE_BOOL.include?(v.to_s.downcase)
|
161
|
+
return false if FALSE_BOOL.include?(v.to_s.downcase)
|
162
|
+
raise ParameterValidationError, "No boolean information in '#{v.to_s}'. " +
|
163
|
+
"Valid values are: '#{TRUE_BOOL.join('\', \'')}" +
|
164
|
+
"' and '#{FALSE_BOOL.join('\', \'')}'."
|
165
|
+
when 'string', 'nil'
|
166
|
+
return v.to_s
|
167
|
+
when 'int', 'integer'
|
168
|
+
return Integer(v)
|
169
|
+
when 'float'
|
170
|
+
return Float(v)
|
171
|
+
when 'datetime'
|
172
|
+
return v.to_datetime if v.respond_to? :to_datetime
|
173
|
+
return DateTime.parse(v)
|
174
|
+
when 'array'
|
175
|
+
return v if v.is_a?(Array)
|
176
|
+
return v.split(/[,;|\s]+/) if v.is_a?(String)
|
177
|
+
# Alternatavely:
|
178
|
+
# return JSON.parse(v) if v.is_a?(String)
|
179
|
+
return v.to_a if v.respond_to?(:to_a)
|
180
|
+
when 'hash'
|
181
|
+
return v if v.is_a?(Hash)
|
182
|
+
return Hash[(0...v.size).zip(v)] if v.is_a?(Array)
|
183
|
+
return JSON.parse(v) if v.is_a?(String)
|
184
|
+
else
|
185
|
+
raise ParameterValidationError, "Datatype not supported: '#{self[:datatype]}'"
|
182
186
|
end
|
183
187
|
nil
|
184
188
|
end
|
@@ -194,17 +198,17 @@ module Libis
|
|
194
198
|
def constraint_checker(v, constraint)
|
195
199
|
|
196
200
|
case constraint
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
201
|
+
when Array
|
202
|
+
constraint.each do |c|
|
203
|
+
return true if (constraint_checker(v, c) rescue false)
|
204
|
+
end
|
205
|
+
return true if constraint.include? v
|
206
|
+
when Range
|
207
|
+
return true if constraint.cover? v
|
208
|
+
when Regexp
|
209
|
+
return true if v =~ constraint
|
210
|
+
else
|
211
|
+
return true if v == constraint
|
208
212
|
end
|
209
213
|
false
|
210
214
|
end
|
@@ -245,16 +249,16 @@ module Libis
|
|
245
249
|
# @return [Hash] with parameter names as keys and {Parameter} instance as value.
|
246
250
|
def parameter_defs
|
247
251
|
return @parameters if @parameters
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
end
|
254
|
-
rescue NoMethodError
|
255
|
-
# ignored
|
252
|
+
@parameters = ::Concurrent::Hash.new
|
253
|
+
begin
|
254
|
+
self.superclass.parameter_defs.
|
255
|
+
each_with_object(@parameters) do |(name, param), hash|
|
256
|
+
hash[name] = param.dup
|
256
257
|
end
|
257
|
-
|
258
|
+
rescue NoMethodError
|
259
|
+
# ignored
|
260
|
+
end
|
261
|
+
@parameters
|
258
262
|
end
|
259
263
|
|
260
264
|
# DSL method that allows creating parameter definitions on the class level.
|
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/command_spec.rb
CHANGED
@@ -19,7 +19,9 @@ describe 'Command' do
|
|
19
19
|
|
20
20
|
result = Libis::Tools::Command.run('ls')
|
21
21
|
|
22
|
-
|
22
|
+
output = result[:out].map {|x| x.split(/\s+/)}.flatten.compact
|
23
|
+
expect(output.size).to eq entries.size
|
24
|
+
expect(output.sort).to match entries
|
23
25
|
expect(result[:err]).to eq []
|
24
26
|
expect(result[:status]).to eq 0
|
25
27
|
|
@@ -30,6 +32,7 @@ describe 'Command' do
|
|
30
32
|
result = Libis::Tools::Command.run('ls', '-1')
|
31
33
|
|
32
34
|
output = result[:out]
|
35
|
+
puts output.sort
|
33
36
|
expect(output.size).to eq entries.size
|
34
37
|
expect(output.sort).to match entries
|
35
38
|
expect(result[:err]).to eq []
|
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.12
|
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,7 +386,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
400
386
|
- !ruby/object:Gem::Version
|
401
387
|
version: '0'
|
402
388
|
requirements: []
|
403
|
-
rubygems_version: 3.
|
389
|
+
rubygems_version: 3.2.15
|
404
390
|
signing_key:
|
405
391
|
specification_version: 4
|
406
392
|
summary: LIBIS toolbox.
|