libis-tools 1.0.2 → 1.0.9

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 5e609222120f658fb18e1594ed1f87f0c35bde28
4
- data.tar.gz: 66d3563d04e59fd324a593754a74947b1c3a722f
2
+ SHA256:
3
+ metadata.gz: c057b018c6fd9fa648ba532ebbf0919d7f04c399057aa2a73b61b346076dece9
4
+ data.tar.gz: 9ae7380f4b60de143a6949990a69cb7249f4d81ea06912194c329c5df1b5bcf6
5
5
  SHA512:
6
- metadata.gz: ef95ab98cc37ab82f24e92f1db943cd92eef3276964c5ee3c2591aa1575dda048bd01c2d6117a230726f6a7d735d1fca8d0591c0c256c206e868b57663782eec
7
- data.tar.gz: ab8ffbcec667aa8f6d618f2f5c3cbc5295a46bea69038f7c3e4616e465c3f01044b2cc22bddf1963f3dac96695135b773048bb46d4eb41a3570654a405450b67
6
+ metadata.gz: c00fa670055c8cc156b3a7b5810f4e927c8386dba41ae4dd5b55bb602124fd962df415a4b0f1c640941685d2d1d3a7bb8222978f199bb55856ba095287015865
7
+ data.tar.gz: 60d16f403a7473bea8f0de32793a53f72779db587ba82911628ff974b9f62d5fed2eacf3532dad4ff177383e2f47d1c7e9aae8714a66aa1c5b82f011d3142cb4
@@ -1,36 +1,40 @@
1
+ dist: bionic
1
2
  language: ruby
2
3
  cache: bundler
3
4
  sudo: false
4
5
  rvm:
5
- - 2.1.10
6
- - 2.2.8
7
- - 2.3.5
8
- - 2.4.2
6
+ - 2.3
7
+ - 2.4
8
+ - 2.5
9
+ - 2.6
9
10
  - ruby-head
10
- - jruby-9.0.5.0
11
- - jruby-9.1.9.0
11
+ # - jruby-9.1
12
+ - jruby-9.2
12
13
  - jruby-head
13
14
  jdk:
14
- - openjdk8
15
- - oraclejdk8
15
+ - openjdk10
16
+ - openjdk11
16
17
  matrix:
17
18
  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
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: oraclejdk8
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
- puts "Skipping directory #{entry}." unless @report
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
- puts "Skipping file #{file_name}. File name does not match expression." unless @report
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
- puts "-> Create directory '#{target_dir}'" unless @report
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
- $stderr.puts "Duplicate file entry: #{entry}." unless @report
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
- $stderr.puts "ERROR: #{entry} exists with different content." unless @report
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
- puts "-> #{file_operation} '#{file_name}' to '#{target}'" unless @report
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
- delete_proc = Proc.new do |_, v|
14
- v.delete_if(&delete_proc) if v.kind_of?(Hash)
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] opts valid options are:
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,3 +1,2 @@
1
1
  # encoding: utf-8
2
- require 'ostruct'
3
- require 'backports/2.0.0/stdlib/ostruct'
2
+ require 'ostruct'
@@ -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 == ''
@@ -1,7 +1,6 @@
1
1
  # encoding: utf-8
2
2
  require 'json'
3
- require 'backports/rails/hash'
4
- require 'backports/2.0.0/struct'
3
+ require_relative 'hash'
5
4
 
6
5
  class Struct
7
6
  # def to_hash
@@ -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
@@ -1,6 +1,5 @@
1
1
  # encoding: utf-8
2
2
 
3
- require 'backports'
4
3
  require 'libis/tools/config'
5
4
  require 'libis/tools/extend/string'
6
5
 
@@ -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
- when TrueClass, FalseClass
138
- 'bool'
139
- when NilClass
140
- 'string'
141
- when Integer
142
- 'int'
143
- when Float
144
- 'float'
145
- when DateTime, Date, Time
146
- 'datetime'
147
- when Array
148
- 'array'
149
- when Hash
150
- 'hash'
151
- else
152
- self[:default].class.name.downcase
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
- when 'boolean', 'bool'
159
- return true if TRUE_BOOL.include?(v.to_s.downcase)
160
- return false if FALSE_BOOL.include?(v.to_s.downcase)
161
- raise ParameterValidationError, "No boolean information in '#{v.to_s}'. " +
162
- "Valid values are: '#{TRUE_BOOL.join('\', \'')}" +
163
- "' and '#{FALSE_BOOL.join('\', \'')}'."
164
- when 'string', 'nil'
165
- return v.to_s
166
- when 'int'
167
- return Integer(v)
168
- when 'float'
169
- return Float(v)
170
- when 'datetime'
171
- return v.to_datetime if v.respond_to? :to_datetime
172
- return DateTime.parse(v)
173
- when 'array'
174
- return v if v.is_a?(Array)
175
- return v.split(/[,;|\s]+/) if v.is_a?(String)
176
- return v.to_a if v.respond_to?(:to_a)
177
- when 'hash'
178
- return v when v.is_a?(Hash)
179
- return Hash[(0...v.size).zip(v)] when v.is_a?(Array)
180
- else
181
- raise ParameterValidationError, "Datatype not supported: '#{self[:datatype]}'"
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
- when Array
198
- constraint.each do |c|
199
- return true if (constraint_checker(v, c) rescue false)
200
- end
201
- return true if constraint.include? v
202
- when Range
203
- return true if constraint.cover? v
204
- when Regexp
205
- return true if v =~ constraint
206
- else
207
- return true if v == constraint
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
- @parameters = ::Concurrent::Hash.new
249
- begin
250
- self.superclass.parameter_defs.
251
- each_with_object(@parameters) do |(name, param), hash|
252
- hash[name] = param.dup
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
- @parameters
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.
@@ -1,5 +1,5 @@
1
1
  module Libis
2
2
  module Tools
3
- VERSION = '1.0.2'
3
+ VERSION = '1.0.9'
4
4
  end
5
5
  end
@@ -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', '~> 1.6'
33
- spec.add_development_dependency 'rake', '~> 10.3'
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'
@@ -19,7 +19,9 @@ describe 'Command' do
19
19
 
20
20
  result = Libis::Tools::Command.run('ls')
21
21
 
22
- expect(result[:out].sort).to match entries
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
- expect(output.size).to eq (entries.size)
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 (entries.size + 2)
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.2
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: 2018-10-01 00:00:00.000000000 Z
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: '10.3'
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: '10.3'
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.5.1
390
+ rubygems_version: 2.7.8
403
391
  signing_key:
404
392
  specification_version: 4
405
393
  summary: LIBIS toolbox.