libis-tools 0.9.20 → 0.9.21
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/README.md +36 -233
- data/Rakefile +5 -0
- data/lib/libis/tools.rb +1 -0
- data/lib/libis/tools/assert.rb +11 -0
- data/lib/libis/tools/checksum.rb +22 -5
- data/lib/libis/tools/command.rb +24 -3
- data/lib/libis/tools/config.rb +61 -33
- data/lib/libis/tools/config_file.rb +0 -1
- data/lib/libis/tools/deep_struct.rb +10 -2
- data/lib/libis/tools/extend/empty.rb +2 -2
- data/lib/libis/tools/extend/hash.rb +37 -18
- data/lib/libis/tools/extend/kernel.rb +9 -0
- data/lib/libis/tools/extend/string.rb +17 -8
- data/lib/libis/tools/logger.rb +95 -44
- data/lib/libis/tools/metadata.rb +5 -1
- data/lib/libis/tools/metadata/dublin_core_record.rb +22 -4
- data/lib/libis/tools/metadata/field_format.rb +49 -9
- data/lib/libis/tools/metadata/fix_field.rb +5 -0
- data/lib/libis/tools/metadata/mapper.rb +2 -1
- data/lib/libis/tools/metadata/mappers/flandrica.rb +8 -1
- data/lib/libis/tools/metadata/mappers/kuleuven.rb +6 -2
- data/lib/libis/tools/metadata/marc21_record.rb +1 -0
- data/lib/libis/tools/metadata/marc_record.rb +31 -12
- data/lib/libis/tools/metadata/parser/basic_parser.rb +2 -0
- data/lib/libis/tools/metadata/parser/dublin_core_parser.rb +2 -1
- data/lib/libis/tools/metadata/parser/marc21_parser.rb +2 -1
- data/lib/libis/tools/metadata/parser/marc_format_parser.rb +2 -1
- data/lib/libis/tools/metadata/parser/marc_rules.rb +2 -1
- data/lib/libis/tools/metadata/parser/marc_select_parser.rb +2 -1
- data/lib/libis/tools/metadata/parser/patch.rb +1 -0
- data/lib/libis/tools/metadata/parser/subfield_criteria_parser.rb +2 -1
- data/lib/libis/tools/metadata/sharepoint_mapping.rb +1 -0
- data/lib/libis/tools/metadata/sharepoint_record.rb +2 -0
- data/lib/libis/tools/metadata/var_field.rb +8 -0
- data/lib/libis/tools/mets_dnx.rb +61 -0
- data/lib/libis/tools/mets_file.rb +87 -604
- data/lib/libis/tools/mets_objects.rb +534 -0
- data/lib/libis/tools/parameter.rb +144 -21
- data/lib/libis/tools/thread_safe.rb +31 -0
- data/lib/libis/tools/version.rb +1 -1
- data/lib/libis/tools/xml_document.rb +18 -24
- data/libis-tools.gemspec +6 -2
- data/spec/config_spec.rb +3 -4
- data/spec/logger_spec.rb +13 -30
- data/spec/mets_file_spec.rb +17 -17
- metadata +53 -7
data/libis-tools.gemspec
CHANGED
@@ -25,6 +25,7 @@ Gem::Specification.new do |spec|
|
|
25
25
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
26
26
|
|
27
27
|
spec.require_paths = ['lib']
|
28
|
+
spec.has_rdoc = 'yard'
|
28
29
|
|
29
30
|
spec.add_development_dependency 'bundler', '~> 1.6'
|
30
31
|
spec.add_development_dependency 'rake', '~> 10.3'
|
@@ -35,9 +36,12 @@ Gem::Specification.new do |spec|
|
|
35
36
|
|
36
37
|
spec.add_runtime_dependency 'backports', '~> 3.6'
|
37
38
|
spec.add_runtime_dependency 'nokogiri', '~> 1.6'
|
38
|
-
spec.add_runtime_dependency 'gyoku', '~> 1.
|
39
|
-
spec.add_runtime_dependency 'nori', '~> 2.
|
39
|
+
spec.add_runtime_dependency 'gyoku', '~> 1.3'
|
40
|
+
spec.add_runtime_dependency 'nori', '~> 2.6'
|
40
41
|
spec.add_runtime_dependency 'recursive-open-struct', '~> 1.0'
|
41
42
|
spec.add_runtime_dependency 'parslet', '~> 1.7'
|
42
43
|
spec.add_runtime_dependency 'simple_xlsx_reader', '~> 1.0'
|
44
|
+
spec.add_runtime_dependency 'logging', '~> 2.0'
|
45
|
+
spec.add_runtime_dependency 'concurrent-ruby', '~> 1.0'
|
46
|
+
spec.add_runtime_dependency 'yard', '~> 0.8'
|
43
47
|
end
|
data/spec/config_spec.rb
CHANGED
@@ -11,21 +11,20 @@ describe 'Config' do
|
|
11
11
|
subject(:config) { ::Libis::Tools::Config.clear! }
|
12
12
|
|
13
13
|
it 'has defaults set' do
|
14
|
-
expect(config.logger).to be_a ::Logger
|
14
|
+
expect(config.logger).to be_a ::Logging::Logger
|
15
15
|
end
|
16
16
|
|
17
17
|
it 'clears all values' do
|
18
18
|
# noinspection RubyResolve
|
19
19
|
config.test_value = 5
|
20
|
-
config.logger.level =
|
20
|
+
config.logger.level = :FATAL
|
21
21
|
# noinspection RubyResolve
|
22
22
|
expect(config.test_value).to be 5
|
23
|
-
expect(config.logger.level).to be ::
|
23
|
+
expect(config.logger.level).to be ::Logging::level_num(:FATAL)
|
24
24
|
|
25
25
|
config.clear!
|
26
26
|
# noinspection RubyResolve
|
27
27
|
expect(config.test_value).to be_nil
|
28
|
-
expect(config.logger.level).to be ::Logger::DEBUG
|
29
28
|
end
|
30
29
|
|
31
30
|
context 'adding values with setters' do
|
data/spec/logger_spec.rb
CHANGED
@@ -7,60 +7,59 @@ describe 'Logger' do
|
|
7
7
|
|
8
8
|
class TestLogger
|
9
9
|
include ::Libis::Tools::Logger
|
10
|
-
attr_accessor :options
|
11
|
-
def initialize
|
12
|
-
@options = {}
|
13
|
-
end
|
14
10
|
end
|
15
11
|
|
16
12
|
before(:context) do
|
17
13
|
end
|
18
14
|
|
19
15
|
before(:example) do
|
20
|
-
::Libis::Tools::Config
|
21
|
-
|
22
|
-
|
23
|
-
::Libis::Tools::Config.logger.level =
|
16
|
+
appender = ::Logging::Appenders.string_io('StringIO', layout: ::Libis::Tools::Config.get_log_formatter)
|
17
|
+
::Libis::Tools::Config.logger.add_appenders(appender)
|
18
|
+
@logoutput = appender.sio
|
19
|
+
::Libis::Tools::Config.logger.level = :all
|
24
20
|
@test_logger = TestLogger.new
|
25
21
|
end
|
22
|
+
|
23
|
+
let(:timestamp_regex) { '\[\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}.\d{3} #\d+\.\d+\]'}
|
26
24
|
|
27
25
|
it 'should log debug output' do
|
28
26
|
@test_logger.debug 'Debug message'
|
27
|
+
puts "LOG OUTPUT: #{@logoutput.string}"
|
29
28
|
output = @logoutput.string.lines.map(&:chomp)
|
30
29
|
expect(output.size).to eq 1
|
31
|
-
expect(output.first).to match /^D,
|
30
|
+
expect(output.first).to match /^D, #{timestamp_regex} DEBUG : Debug message$/
|
32
31
|
end
|
33
32
|
|
34
33
|
it 'should log info output' do
|
35
34
|
@test_logger.info 'Info message'
|
36
35
|
output = @logoutput.string.lines.map(&:chomp)
|
37
36
|
expect(output.size).to eq 1
|
38
|
-
expect(output.first).to match /^I,
|
37
|
+
expect(output.first).to match /^I, #{timestamp_regex} INFO : Info message$/
|
39
38
|
end
|
40
39
|
|
41
40
|
it 'should log warning output' do
|
42
41
|
@test_logger.warn 'Warning message'
|
43
42
|
output = @logoutput.string.lines.map(&:chomp)
|
44
43
|
expect(output.size).to eq 1
|
45
|
-
expect(output.first).to match /^W,
|
44
|
+
expect(output.first).to match /^W, #{timestamp_regex} WARN : Warning message$/
|
46
45
|
end
|
47
46
|
|
48
47
|
it 'should log error output' do
|
49
48
|
@test_logger.error 'Error message'
|
50
49
|
output = @logoutput.string.lines.map(&:chomp)
|
51
50
|
expect(output.size).to eq 1
|
52
|
-
expect(output.first).to match /^E,
|
51
|
+
expect(output.first).to match /^E, #{timestamp_regex} ERROR : Error message$/
|
53
52
|
end
|
54
53
|
|
55
54
|
it 'should log fatal output' do
|
56
55
|
@test_logger.fatal 'Fatal message'
|
57
56
|
output = @logoutput.string.lines.map(&:chomp)
|
58
57
|
expect(output.size).to eq 1
|
59
|
-
expect(output.first).to match /^F,
|
58
|
+
expect(output.first).to match /^F, #{timestamp_regex} FATAL : Fatal message$/
|
60
59
|
end
|
61
60
|
|
62
61
|
it 'should be quiet when asked to' do
|
63
|
-
|
62
|
+
::Libis::Tools::Config.logger.level = :error
|
64
63
|
|
65
64
|
@test_logger.debug 'Debug message'
|
66
65
|
output = @logoutput.string.lines.map(&:chomp)
|
@@ -88,20 +87,4 @@ describe 'Logger' do
|
|
88
87
|
expect(output).not_to be_empty
|
89
88
|
end
|
90
89
|
|
91
|
-
it 'should display application name in log' do
|
92
|
-
::Libis::Tools::Config[:appname] = 'Test Application'
|
93
|
-
@test_logger.info 'Info message'
|
94
|
-
output = @logoutput.string.lines.map(&:chomp)
|
95
|
-
expect(output.size).to eq 1
|
96
|
-
expect(output.first).to match /^I, \[\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}.\d{6} #\d+\] INFO -- Test Application: Info message$/
|
97
|
-
end
|
98
|
-
|
99
|
-
it 'should display name value in log' do
|
100
|
-
@test_logger.define_singleton_method(:name) { 'Logger for testing' }
|
101
|
-
@test_logger.info 'Info message'
|
102
|
-
output = @logoutput.string.lines.map(&:chomp)
|
103
|
-
expect(output.size).to eq 1
|
104
|
-
expect(output.first).to match /^I, \[\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}.\d{6} #\d+\] INFO -- Logger for testing: Info message$/
|
105
|
-
end
|
106
|
-
|
107
90
|
end
|
data/spec/mets_file_spec.rb
CHANGED
@@ -43,27 +43,27 @@ describe 'METS File' do
|
|
43
43
|
|
44
44
|
let(:marc_record) {
|
45
45
|
Libis::Tools::XmlDocument.parse <<-STR
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
46
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
47
|
+
<record xsi:schemaLocation="http://www.loc.gov/MARC21/slim http://www.loc.gov/standards/marcxml/schema/MARC21slim.xsd"
|
48
|
+
xmlns="http://www.loc.gov/MARC21/slim" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
49
|
+
<leader>abcdefghiljklmnopqrstuvwxyz</leader>
|
50
|
+
<controlfield tag="001">1234567890</controlfield>
|
51
|
+
<datafield tag="010" ind1="a" ind2="b">
|
52
|
+
<subfield code="a">abc</subfield>
|
53
|
+
<subfield code="b">xyz</subfield>
|
54
|
+
</datafield>
|
55
|
+
</record>
|
56
|
+
STR
|
57
57
|
}
|
58
58
|
|
59
59
|
let(:src_record) {
|
60
60
|
Libis::Tools::XmlDocument.parse <<-STR
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
61
|
+
<my_description xmlns="http://www.libis.be/description/">
|
62
|
+
<title>Title</title>
|
63
|
+
<importance>high</importance>
|
64
|
+
<location>here</location>
|
65
|
+
</my_description>
|
66
|
+
STR
|
67
67
|
}
|
68
68
|
|
69
69
|
let(:target) {
|
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: 0.9.
|
4
|
+
version: 0.9.21
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kris Dekeyser
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-03-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -128,28 +128,28 @@ dependencies:
|
|
128
128
|
requirements:
|
129
129
|
- - "~>"
|
130
130
|
- !ruby/object:Gem::Version
|
131
|
-
version: '1.
|
131
|
+
version: '1.3'
|
132
132
|
type: :runtime
|
133
133
|
prerelease: false
|
134
134
|
version_requirements: !ruby/object:Gem::Requirement
|
135
135
|
requirements:
|
136
136
|
- - "~>"
|
137
137
|
- !ruby/object:Gem::Version
|
138
|
-
version: '1.
|
138
|
+
version: '1.3'
|
139
139
|
- !ruby/object:Gem::Dependency
|
140
140
|
name: nori
|
141
141
|
requirement: !ruby/object:Gem::Requirement
|
142
142
|
requirements:
|
143
143
|
- - "~>"
|
144
144
|
- !ruby/object:Gem::Version
|
145
|
-
version: '2.
|
145
|
+
version: '2.6'
|
146
146
|
type: :runtime
|
147
147
|
prerelease: false
|
148
148
|
version_requirements: !ruby/object:Gem::Requirement
|
149
149
|
requirements:
|
150
150
|
- - "~>"
|
151
151
|
- !ruby/object:Gem::Version
|
152
|
-
version: '2.
|
152
|
+
version: '2.6'
|
153
153
|
- !ruby/object:Gem::Dependency
|
154
154
|
name: recursive-open-struct
|
155
155
|
requirement: !ruby/object:Gem::Requirement
|
@@ -192,6 +192,48 @@ dependencies:
|
|
192
192
|
- - "~>"
|
193
193
|
- !ruby/object:Gem::Version
|
194
194
|
version: '1.0'
|
195
|
+
- !ruby/object:Gem::Dependency
|
196
|
+
name: logging
|
197
|
+
requirement: !ruby/object:Gem::Requirement
|
198
|
+
requirements:
|
199
|
+
- - "~>"
|
200
|
+
- !ruby/object:Gem::Version
|
201
|
+
version: '2.0'
|
202
|
+
type: :runtime
|
203
|
+
prerelease: false
|
204
|
+
version_requirements: !ruby/object:Gem::Requirement
|
205
|
+
requirements:
|
206
|
+
- - "~>"
|
207
|
+
- !ruby/object:Gem::Version
|
208
|
+
version: '2.0'
|
209
|
+
- !ruby/object:Gem::Dependency
|
210
|
+
name: concurrent-ruby
|
211
|
+
requirement: !ruby/object:Gem::Requirement
|
212
|
+
requirements:
|
213
|
+
- - "~>"
|
214
|
+
- !ruby/object:Gem::Version
|
215
|
+
version: '1.0'
|
216
|
+
type: :runtime
|
217
|
+
prerelease: false
|
218
|
+
version_requirements: !ruby/object:Gem::Requirement
|
219
|
+
requirements:
|
220
|
+
- - "~>"
|
221
|
+
- !ruby/object:Gem::Version
|
222
|
+
version: '1.0'
|
223
|
+
- !ruby/object:Gem::Dependency
|
224
|
+
name: yard
|
225
|
+
requirement: !ruby/object:Gem::Requirement
|
226
|
+
requirements:
|
227
|
+
- - "~>"
|
228
|
+
- !ruby/object:Gem::Version
|
229
|
+
version: '0.8'
|
230
|
+
type: :runtime
|
231
|
+
prerelease: false
|
232
|
+
version_requirements: !ruby/object:Gem::Requirement
|
233
|
+
requirements:
|
234
|
+
- - "~>"
|
235
|
+
- !ruby/object:Gem::Version
|
236
|
+
version: '0.8'
|
195
237
|
description: Some tool classes for other LIBIS gems.
|
196
238
|
email:
|
197
239
|
- kris.dekeyser@libis.be
|
@@ -243,8 +285,11 @@ files:
|
|
243
285
|
- lib/libis/tools/metadata/sharepoint_mapping.rb
|
244
286
|
- lib/libis/tools/metadata/sharepoint_record.rb
|
245
287
|
- lib/libis/tools/metadata/var_field.rb
|
288
|
+
- lib/libis/tools/mets_dnx.rb
|
246
289
|
- lib/libis/tools/mets_file.rb
|
290
|
+
- lib/libis/tools/mets_objects.rb
|
247
291
|
- lib/libis/tools/parameter.rb
|
292
|
+
- lib/libis/tools/thread_safe.rb
|
248
293
|
- lib/libis/tools/version.rb
|
249
294
|
- lib/libis/tools/xml_document.rb
|
250
295
|
- libis-tools.gemspec
|
@@ -297,7 +342,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
297
342
|
version: '0'
|
298
343
|
requirements: []
|
299
344
|
rubyforge_project:
|
300
|
-
rubygems_version: 2.
|
345
|
+
rubygems_version: 2.4.8
|
301
346
|
signing_key:
|
302
347
|
specification_version: 4
|
303
348
|
summary: LIBIS toolbox.
|
@@ -330,3 +375,4 @@ test_files:
|
|
330
375
|
- test/test_helper.rb
|
331
376
|
- test/webservices/test_ca_item_info.rb
|
332
377
|
- test/webservices/test_ca_search.rb
|
378
|
+
has_rdoc: yard
|