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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 614880562757e58d8f1e86db7f507411a873c7920efcc3b932dd446b65eb7a70
4
- data.tar.gz: c8aa877ea6b7fcc8daec5f2c1e49d5680afd857e900c6b8e6f5a309e884858e9
3
+ metadata.gz: d1beb34bf6d3caa983e0909913526c51fede24c5a10eb612a54c3deca274c11a
4
+ data.tar.gz: 5ec72ceeffaa443b21599036ffa1a647e3a645fb00009647b3929868f734826b
5
5
  SHA512:
6
- metadata.gz: 8907c8cdb69831d8bfcf432d47d2abf06bb010e8aa6aac8a20e125cbfa1487df3a3b1db2fb3e4da7c77533f34b78377bfec929c4d3c5f5d79e747f11a54c0c8b
7
- data.tar.gz: e7536a051acb0cfe862cca95799c1b9b8653f06cc550ffc30cde1a9c5a21a044bb4c5a4d9183a0099cd31b27f0615f8c4fb72e53f03b451c30ef0b3e83e7d124
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:
@@ -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
- # Extension for NilClass
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,3 +1,2 @@
1
1
  # encoding: utf-8
2
- require 'ostruct'
3
- require 'backports/2.0.0/stdlib/ostruct'
2
+ require 'ostruct'
@@ -1,12 +1,42 @@
1
- require 'backports/rails/string'
2
-
3
1
  # Extension class
4
2
  class String
5
3
 
6
- # Check if string is empty
7
- def blank?
8
- self == ''
9
- end unless method_defined? :blank?
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
- # Extension class
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'
@@ -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
@@ -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
 
@@ -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
- hash_dmd[dmd[:ID]] = dmd.xpath('.//dc:record', NS).first.children.inject({}) do |h, c|
95
- h[c.name] = c.content
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
- hash_amd[amd[:ID]] = [:tech, :rights, :source, :digiprov].inject({}) do |hash_sec, sec|
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|
@@ -1,5 +1,5 @@
1
1
  module Libis
2
2
  module Tools
3
- VERSION = '1.0.6'
3
+ VERSION = '1.0.13'
4
4
  end
5
5
  end
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', '~> 10.3'
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', '~> 1.0'
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'
@@ -45,6 +45,7 @@ describe ::Libis::Tools::ConfigFile do
45
45
 
46
46
  it 'allows to change hash in array' do
47
47
  subject << hash
48
+ # subject = ::Libis::Tools::ConfigFile.new(hash)
48
49
  # noinspection RubyResolve
49
50
  subject.c[0][0].a[0].v = 1
50
51
  hash[:c][0][0][:a][0][:v] = 1
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.6
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: 2020-01-09 00:00:00.000000000 Z
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: '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
@@ -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: '1.0'
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: '1.0'
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
- rubyforge_project:
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.