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 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.