libis-tools 1.0.2 → 1.0.9
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 +5 -5
- data/.travis.yml +21 -17
- data/lib/libis/tools/cli/reorg.rb +6 -6
- data/lib/libis/tools/extend/array.rb +16 -0
- data/lib/libis/tools/extend/hash.rb +51 -8
- data/lib/libis/tools/extend/ostruct.rb +1 -2
- data/lib/libis/tools/extend/string.rb +36 -2
- data/lib/libis/tools/extend/struct.rb +1 -2
- data/lib/libis/tools/extend/symbol.rb +8 -0
- data/lib/libis/tools/logger.rb +0 -1
- data/lib/libis/tools/parameter.rb +65 -61
- data/lib/libis/tools/version.rb +1 -1
- data/libis-tools.gemspec +2 -3
- data/spec/command_spec.rb +6 -3
- metadata +9 -21
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: c057b018c6fd9fa648ba532ebbf0919d7f04c399057aa2a73b61b346076dece9
|
4
|
+
data.tar.gz: 9ae7380f4b60de143a6949990a69cb7249f4d81ea06912194c329c5df1b5bcf6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c00fa670055c8cc156b3a7b5810f4e927c8386dba41ae4dd5b55bb602124fd962df415a4b0f1c640941685d2d1d3a7bb8222978f199bb55856ba095287015865
|
7
|
+
data.tar.gz: 60d16f403a7473bea8f0de32793a53f72779db587ba82911628ff974b9f62d5fed2eacf3532dad4ff177383e2f47d1c7e9aae8714a66aa1c5b82f011d3142cb4
|
data/.travis.yml
CHANGED
@@ -1,36 +1,40 @@
|
|
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.3
|
7
|
+
- 2.4
|
8
|
+
- 2.5
|
9
|
+
- 2.6
|
9
10
|
- ruby-head
|
10
|
-
- jruby-9.
|
11
|
-
- jruby-9.
|
11
|
+
# - jruby-9.1
|
12
|
+
- jruby-9.2
|
12
13
|
- jruby-head
|
13
14
|
jdk:
|
14
|
-
-
|
15
|
-
-
|
15
|
+
- openjdk10
|
16
|
+
- openjdk11
|
16
17
|
matrix:
|
17
18
|
exclude:
|
18
|
-
- rvm: 2.
|
19
|
-
jdk:
|
20
|
-
- rvm: 2.
|
21
|
-
jdk:
|
22
|
-
- rvm: 2.
|
23
|
-
jdk:
|
24
|
-
- rvm: 2.
|
25
|
-
jdk:
|
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
|
26
27
|
- rvm: ruby-head
|
27
|
-
jdk:
|
28
|
+
jdk: openjdk10
|
28
29
|
allow_failures:
|
29
30
|
- rvm: ruby-head
|
30
31
|
- rvm: jruby-head
|
31
32
|
branches:
|
32
33
|
only:
|
33
34
|
- master
|
35
|
+
#before_install:
|
36
|
+
# - gem update --system
|
37
|
+
# - gem --version
|
34
38
|
addons:
|
35
39
|
code_climate:
|
36
40
|
repo_token: f6978964f55e6543befb82373651365f8195677816af6ff40ad70c82f7f22f09
|
@@ -262,13 +262,13 @@ module Libis
|
|
262
262
|
next if file_name =~ /^\.\.?$/
|
263
263
|
entry = File.join(File.absolute_path(base_dir), file_name)
|
264
264
|
unless File.file?(entry)
|
265
|
-
|
265
|
+
prompt.say "Skipping directory #{entry}." unless @report
|
266
266
|
write_report(entry, '', '', 'Directory - skipped.')
|
267
267
|
count[:skipped_dir] += 1
|
268
268
|
next
|
269
269
|
end
|
270
270
|
unless file_name =~ parse_regex
|
271
|
-
|
271
|
+
prompt.say "Skipping file #{file_name}. File name does not match expression." unless @report
|
272
272
|
write_report(entry, '', '', 'Mismatch - skipped.')
|
273
273
|
count[:unmatched_file] += 1
|
274
274
|
next
|
@@ -278,7 +278,7 @@ module Libis
|
|
278
278
|
target_dir = File.dirname(target)
|
279
279
|
target_dir = File.join(base_dir, target_dir) unless target_dir[0] == '/'
|
280
280
|
unless target_dir_list.include?(target_dir)
|
281
|
-
|
281
|
+
prompt.say "-> Create directory '#{target_dir}'" unless @report
|
282
282
|
FileUtils.mkpath(target_dir) unless dummy_operation
|
283
283
|
target_dir_list << target_dir
|
284
284
|
end
|
@@ -289,7 +289,7 @@ module Libis
|
|
289
289
|
if compare_entry(entry, target_path)
|
290
290
|
remark = 'Duplicate - skipped.'
|
291
291
|
count[:duplicate] += 1
|
292
|
-
|
292
|
+
prompt.error "Duplicate file entry: #{entry}." unless @report
|
293
293
|
else
|
294
294
|
# puts "source: #{File.mtime(entry)} #{'%11s' % Filesize.new(File.size(entry)).pretty} #{entry}"
|
295
295
|
# puts "target: #{File.mtime(target_path)} #{'%11s' % Filesize.new(File.size(target_path)).pretty} #{target_path}"
|
@@ -299,7 +299,7 @@ module Libis
|
|
299
299
|
count[:update] += 1
|
300
300
|
else
|
301
301
|
remark = 'Duplicate - rejected.'
|
302
|
-
|
302
|
+
prompt.error "ERROR: #{entry} exists with different content." unless @report
|
303
303
|
count[:reject] += 1
|
304
304
|
end
|
305
305
|
end
|
@@ -308,7 +308,7 @@ module Libis
|
|
308
308
|
count[:move] += 1
|
309
309
|
end
|
310
310
|
if action
|
311
|
-
|
311
|
+
prompt.say "-> #{file_operation} '#{file_name}' to '#{target}'" unless @report
|
312
312
|
case file_operation
|
313
313
|
when 'move'
|
314
314
|
FileUtils.move(entry, File.join(target_dir, target_file), force: true)
|
@@ -0,0 +1,16 @@
|
|
1
|
+
|
2
|
+
# Extension class for Array
|
3
|
+
class Array
|
4
|
+
|
5
|
+
# Removes all empty entries
|
6
|
+
def cleanup
|
7
|
+
self.delete_if { |v| v.nil? || (v.respond_to?(:empty?) ? v.empty? : false) }
|
8
|
+
end unless method_defined? :cleanup
|
9
|
+
|
10
|
+
# Removes all empty entries recursively in the array and each Hash in it
|
11
|
+
def recursive_cleanup
|
12
|
+
each { |v| v.recursive_cleanup if Array === v || Hash === v }
|
13
|
+
cleanup
|
14
|
+
end unless method_defined? :recursive_cleanup
|
15
|
+
|
16
|
+
end
|
@@ -1,5 +1,3 @@
|
|
1
|
-
require 'backports/rails/hash'
|
2
|
-
|
3
1
|
# Extension class for Hash
|
4
2
|
class Hash
|
5
3
|
|
@@ -10,11 +8,8 @@ class Hash
|
|
10
8
|
|
11
9
|
# Removes all hash entries for which value.empty? is true. Performed recursively.
|
12
10
|
def recursive_cleanup
|
13
|
-
|
14
|
-
|
15
|
-
v.nil? || (v.respond_to?(:empty?) ? v.empty? : false)
|
16
|
-
end
|
17
|
-
self.delete_if &delete_proc
|
11
|
+
each { |_, v| v.recursive_cleanup if Array === v || Hash === v }
|
12
|
+
cleanup
|
18
13
|
end unless method_defined? :recursive_cleanup
|
19
14
|
|
20
15
|
# Merges two hashes, but does so recursively.
|
@@ -59,6 +54,14 @@ class Hash
|
|
59
54
|
self.merge!(other_hash) {|_,v, w| v.blank? ? w : v}
|
60
55
|
end unless method_defined? :apply_defaults!
|
61
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
|
+
|
62
65
|
# Convert all keys to symbols. In-place operation.
|
63
66
|
# @param (see #key_strings_to_symbols)
|
64
67
|
def key_strings_to_symbols!(options = {})
|
@@ -66,7 +69,7 @@ class Hash
|
|
66
69
|
end unless method_defined? :key_strings_to_symbols!
|
67
70
|
|
68
71
|
# Return new Hash with all keys converted to symbols.
|
69
|
-
# @param [Hash]
|
72
|
+
# @param [Hash] options valid options are:
|
70
73
|
# * recursive : perform operation recursively
|
71
74
|
# * upcase : convert all keys to upper case
|
72
75
|
# * downcase : convert all keys to lower case
|
@@ -104,6 +107,14 @@ class Hash
|
|
104
107
|
r
|
105
108
|
end unless method_defined? :key_strings_to_symbols
|
106
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
|
+
|
107
118
|
# Convert all keys to strings. In-place operation.
|
108
119
|
# (@see #key_symbols_to_strings)
|
109
120
|
# @param (see #key_symbols_to_strings)
|
@@ -147,4 +158,36 @@ class Hash
|
|
147
158
|
r
|
148
159
|
end unless method_defined? :key_symbols_to_strings
|
149
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
|
+
|
150
193
|
end
|
@@ -1,8 +1,42 @@
|
|
1
|
-
require 'backports/rails/string'
|
2
|
-
|
3
1
|
# Extension class
|
4
2
|
class String
|
5
3
|
|
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
|
+
|
6
40
|
# Check if string is empty
|
7
41
|
def blank?
|
8
42
|
self == ''
|
@@ -0,0 +1,8 @@
|
|
1
|
+
# Symbol monkey patch to allow map(&:method) to take arguments. Allows: [2,3].map(&:+.(10)) # => [12,13]
|
2
|
+
# See: https://stackoverflow.com/questions/23695653/can-you-supply-arguments-to-the-mapmethod-syntax-in-ruby
|
3
|
+
# for more information,
|
4
|
+
class Symbol
|
5
|
+
def call(*args, &block)
|
6
|
+
->(caller, *rest) { caller.public_send(self, *rest, *args, &block) }
|
7
|
+
end
|
8
|
+
end
|
data/lib/libis/tools/logger.rb
CHANGED
@@ -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
@@ -29,14 +29,13 @@ Gem::Specification.new do |spec|
|
|
29
29
|
spec.require_paths = ['lib']
|
30
30
|
spec.has_rdoc = 'yard'
|
31
31
|
|
32
|
-
spec.add_development_dependency 'bundler', '
|
33
|
-
spec.add_development_dependency 'rake', '~>
|
32
|
+
spec.add_development_dependency 'bundler', '> 1.6'
|
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'
|
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,7 +32,8 @@ describe 'Command' do
|
|
30
32
|
result = Libis::Tools::Command.run('ls', '-1')
|
31
33
|
|
32
34
|
output = result[:out]
|
33
|
-
|
35
|
+
puts output.sort
|
36
|
+
expect(output.size).to eq entries.size
|
34
37
|
expect(output.sort).to match entries
|
35
38
|
expect(result[:err]).to eq []
|
36
39
|
expect(result[:status]).to eq 0
|
@@ -42,7 +45,7 @@ describe 'Command' do
|
|
42
45
|
result = Libis::Tools::Command.run('ls', '-1', '-a', '-p')
|
43
46
|
|
44
47
|
output = result[:out]
|
45
|
-
expect(output.size).to eq
|
48
|
+
expect(output.size).to eq entries.size + 2
|
46
49
|
expect(output[0]).to eq './'
|
47
50
|
expect(output[1]).to eq '../'
|
48
51
|
expect(output[2..-1].sort).to match entries
|
metadata
CHANGED
@@ -1,27 +1,27 @@
|
|
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.9
|
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: 2020-05-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - ">"
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '1.6'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - "
|
24
|
+
- - ">"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '1.6'
|
27
27
|
- !ruby/object:Gem::Dependency
|
@@ -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
|
@@ -332,6 +318,7 @@ files:
|
|
332
318
|
- lib/libis/tools/config_file.rb
|
333
319
|
- lib/libis/tools/csv.rb
|
334
320
|
- lib/libis/tools/deep_struct.rb
|
321
|
+
- lib/libis/tools/extend/array.rb
|
335
322
|
- lib/libis/tools/extend/empty.rb
|
336
323
|
- lib/libis/tools/extend/hash.rb
|
337
324
|
- lib/libis/tools/extend/kernel.rb
|
@@ -339,6 +326,7 @@ files:
|
|
339
326
|
- lib/libis/tools/extend/roo.rb
|
340
327
|
- lib/libis/tools/extend/string.rb
|
341
328
|
- lib/libis/tools/extend/struct.rb
|
329
|
+
- lib/libis/tools/extend/symbol.rb
|
342
330
|
- lib/libis/tools/logger.rb
|
343
331
|
- lib/libis/tools/mets_dnx.rb
|
344
332
|
- lib/libis/tools/mets_file.rb
|
@@ -399,7 +387,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
399
387
|
version: '0'
|
400
388
|
requirements: []
|
401
389
|
rubyforge_project:
|
402
|
-
rubygems_version: 2.
|
390
|
+
rubygems_version: 2.7.8
|
403
391
|
signing_key:
|
404
392
|
specification_version: 4
|
405
393
|
summary: LIBIS toolbox.
|