libis-metadata 1.0.0 → 1.0.4

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: 1e48f5767aded27b26118a8ed5a3776be26b652b
4
- data.tar.gz: a99d01528eb1f807d77fea684a3408ed84272ba7
2
+ SHA256:
3
+ metadata.gz: 37c3e827f9942ee3da3f74e7fbd30a4c1154b73c361fd93005e397ce40e267e7
4
+ data.tar.gz: adf1401c4b230653c230caa2c4239bf7b1e253edb7aa3dae6bf2d3046b846599
5
5
  SHA512:
6
- metadata.gz: 99d7581a6f2ce0b56a9d3770a101be95df84b49acc847b705a6ba185dd3bd86718bc8d7287cd7c4ea3ae56139394bb6ab726a15775a4d46abf67e931dc80c10c
7
- data.tar.gz: c87b535efb289d6187b644b814ecf2ca4b091a9c9a5cd8a2d70bd65744b33fec26a7448f8ca975801f7e2ae346d4c69161b4116e802cb1de88b50e5eec9e0981
6
+ metadata.gz: d009b0f5a704e3c04c3c337f95f63008e7f2e97ac75af19b9c6e8f2b2c2d01410b964a97cba6a76547011804adc850a147bea37a5f5ab1e94977d10aff6e19fa
7
+ data.tar.gz: 8f0bb5786fa93b23ef1fd02e275b4114bf7896d1b5f2ceef5696ef61eb686c645e28eef2d165c75c4e58700722ce572873ab81060c6d40464a992f4e6ffcf7e0
data/.gitignore CHANGED
@@ -6,6 +6,10 @@
6
6
  /pkg/
7
7
  /spec/reports/
8
8
  /tmp/
9
+ Gemfile.lock
9
10
 
10
11
  # rspec failure tracking
11
12
  .rspec_status
13
+
14
+ # rubymine
15
+ .idea
@@ -1,4 +1,4 @@
1
- require 'uri'
1
+ require 'cgi'
2
2
  require 'pathname'
3
3
  require 'awesome_print'
4
4
 
@@ -61,7 +61,7 @@ module Libis
61
61
  def search(term)
62
62
  record = case service
63
63
  when ::Libis::Services::Alma::SruService
64
- result = service.search(config[:field], URI::encode("\"#{term}\""), config[:library])
64
+ result = service.search(config[:field], CGI.escape("\"#{term}\""), config[:library])
65
65
  raise RuntimeError "Multiple records found for #{config[:field]}=#{term}" if result.size > 1
66
66
  result.empty? ? nil : ::Libis::Metadata::Marc21Record.new(result.first.root)
67
67
 
@@ -1,7 +1,7 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  require 'simple_xlsx_reader'
4
- require 'backports/rails/string'
4
+ require 'libis/tools/extend/string'
5
5
 
6
6
  require_relative 'parsers'
7
7
 
@@ -0,0 +1,122 @@
1
+ # encoding: utf-8
2
+
3
+ require 'libis/metadata/marc_record'
4
+ require 'libis/metadata/dublin_core_record'
5
+ require 'libis/tools/assert'
6
+
7
+ module Libis
8
+ module Metadata
9
+ module Mappers
10
+ # noinspection RubyResolve
11
+
12
+ # Mixin for {::Libis::Metadata::MarcRecord} to enable conversion into
13
+ # {Libis::Metadata::DublinCoreRecord}. This module implements the standard mapping for KU Leuven.
14
+ module Standard
15
+
16
+ # Main conversion method.
17
+ # @param [String] label optional extra identified to add to the DC record.
18
+ # @return [::Libis::Metadata::DublinCoreRecord]
19
+ def to_dc(label = nil)
20
+ assert(self.is_a? Libis::Metadata::MarcRecord)
21
+
22
+ doc = Libis::Metadata::DublinCoreRecord.new do |xml|
23
+ marc2dc_identifier(xml, label)
24
+ marc2dc_title(xml)
25
+ marc2dc_medium(xml)
26
+ marc2dc_rights(xml)
27
+ marc2dc_type(xml)
28
+ marc2dc_source(xml)
29
+ end
30
+
31
+ # deduplicate the XML
32
+ found = Set.new
33
+ doc.root.children.each {|node| node.unlink unless found.add?(node.to_xml)}
34
+
35
+ doc
36
+
37
+ end
38
+
39
+ protected
40
+
41
+ def marc2dc_identifier(xml, label = nil)
42
+ # DC:IDENTIFIER
43
+ marc2dc_identifier_label(label, xml)
44
+ marc2dc_identifier_001(xml)
45
+ end
46
+
47
+ def marc2dc_title(xml)
48
+ # DC:TITLE
49
+ marc2dc_title_245(xml)
50
+ end
51
+
52
+ def marc2dc_medium(xml)
53
+ # DCTERMS:MEDIUM
54
+ marc2dc_medium_340(xml)
55
+ end
56
+
57
+ def marc2dc_rights(xml)
58
+ # DC:RIGHTS
59
+ marc2dc_rights_542(xml)
60
+ end
61
+
62
+ def marc2dc_type(xml)
63
+ # DC:TYPE
64
+ marc2dc_type_653__6_a(xml)
65
+ end
66
+
67
+ def marc2dc_source(xml)
68
+ # DC: SOURCE
69
+ marc2dc_source_8528_(xml)
70
+ end
71
+
72
+ private
73
+
74
+ def marc2dc_identifier_label(label, xml)
75
+ # noinspection RubyResolve
76
+ xml['dc'].identifier label if label
77
+ end
78
+
79
+ def marc2dc_identifier_001(xml)
80
+ # "urn:ControlNumber:" [MARC 001]
81
+ all_tags('001') { |t|
82
+ xml['dc'].identifier(element(t.datas, prefix: 'urn:ControlNumber:'), 'xsi:type' => 'dcterms:URI')
83
+ }
84
+ end
85
+
86
+ def marc2dc_title_245(xml)
87
+ all_tags('245', 'a b') { |t|
88
+ xml['dc'].title(element(t._ab, join: ' : '))
89
+ }
90
+ end
91
+
92
+ def marc2dc_medium_340(xml)
93
+ # [MARC 340 ## $a $e]
94
+ all_tags('340', 'a e') { |t|
95
+ xml['dcterms'].medium list_s(t._ae)
96
+ }
97
+ end
98
+
99
+ def marc2dc_rights_542(xml)
100
+ # [MARC 542 ## $l / $n [$u]]
101
+ all_tags('542') { |t|
102
+ xml['dc'].rights list_s(element(t._ln, join: ' / '), element(t._u, fix: '[]'))
103
+ }
104
+ end
105
+
106
+ def marc2dc_type_653__6_a(xml)
107
+ # [MARC 653 #6 $a]
108
+ each_field('653#6', 'a') { |f| xml['dc'].type f }
109
+ end
110
+
111
+ def marc2dc_source_8528_(xml)
112
+ # [MARC 852 8_ $b $c, $h]
113
+ # first_tag('852', 'bch') { |t|
114
+ # xml['dc'].source list_c(element(t._bc, join(' '), t._h)
115
+ # }
116
+ end
117
+
118
+ end
119
+
120
+ end
121
+ end
122
+ end
@@ -1,6 +1,6 @@
1
1
  # coding: utf-8
2
2
 
3
- require 'uri'
3
+ require 'cgi'
4
4
 
5
5
  require 'libis/tools/extend/hash'
6
6
  require 'libis/tools/xml_document'
@@ -55,9 +55,9 @@ module Libis
55
55
 
56
56
  def url
57
57
  # self[:ows_EncodedAbsUrl]
58
- # 'https://www.groupware.kuleuven.be' + URI.escape(self[:ows_ServerUrl], Regexp.new("[^#{URI::PATTERN::UNRESERVED}]"))
59
- # 'https://www.groupware.kuleuven.be' + URI.escape(self[:ows_ServerUrl])
60
- URI.escape(URI.unescape(self[:ows_EncodedAbsUrl]))
58
+ # 'https://www.groupware.kuleuven.be' + CGI.escape(self[:ows_ServerUrl], Regexp.new("[^#{URI::PATTERN::UNRESERVED}]"))
59
+ # 'https://www.groupware.kuleuven.be' + CGI.escape(self[:ows_ServerUrl])
60
+ CGI.escape(CGI.unescape(self[:ows_EncodedAbsUrl]))
61
61
  end
62
62
 
63
63
  def relative_path
@@ -1,5 +1,5 @@
1
1
  module Libis
2
2
  module Metadata
3
- VERSION = '1.0.0'
3
+ VERSION = '1.0.4'
4
4
  end
5
5
  end
@@ -13,6 +13,7 @@ module Libis
13
13
  # Mappers implementations for converting MARC records to Dublin Core.
14
14
  module Mappers
15
15
 
16
+ autoload :Standard, 'libis/metadata/mappers/standard'
16
17
  autoload :Kuleuven, 'libis/metadata/mappers/kuleuven'
17
18
  autoload :Flandrica, 'libis/metadata/mappers/flandrica'
18
19
  autoload :Scope, 'libis/metadata/mappers/scope'
data/metadata.gemspec CHANGED
@@ -28,8 +28,8 @@ Gem::Specification.new do |spec|
28
28
  spec.add_runtime_dependency 'tty-prompt'
29
29
  spec.add_runtime_dependency 'thor'
30
30
 
31
- spec.add_development_dependency 'bundler', '~> 1.16'
32
- spec.add_development_dependency 'rake', '~> 10.0'
31
+ spec.add_development_dependency 'bundler', '~> 2.0'
32
+ spec.add_development_dependency 'rake', '~> 13.0'
33
33
  spec.add_development_dependency 'rspec', '~> 3.0'
34
34
  spec.add_development_dependency 'simplecov', '~> 0.9'
35
35
  spec.add_development_dependency 'coveralls', '~> 0.7'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: libis-metadata
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kris Dekeyser
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-10-01 00:00:00.000000000 Z
11
+ date: 2022-03-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: libis-tools
@@ -100,28 +100,28 @@ dependencies:
100
100
  requirements:
101
101
  - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: '1.16'
103
+ version: '2.0'
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
- version: '1.16'
110
+ version: '2.0'
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: rake
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
115
  - - "~>"
116
116
  - !ruby/object:Gem::Version
117
- version: '10.0'
117
+ version: '13.0'
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
122
  - - "~>"
123
123
  - !ruby/object:Gem::Version
124
- version: '10.0'
124
+ version: '13.0'
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: rspec
127
127
  requirement: !ruby/object:Gem::Requirement
@@ -223,6 +223,7 @@ files:
223
223
  - lib/libis/metadata/mappers/flandrica.rb
224
224
  - lib/libis/metadata/mappers/kuleuven.rb
225
225
  - lib/libis/metadata/mappers/scope.rb
226
+ - lib/libis/metadata/mappers/standard.rb
226
227
  - lib/libis/metadata/marc21_record.rb
227
228
  - lib/libis/metadata/marc_record.rb
228
229
  - lib/libis/metadata/parser/basic_parser.rb
@@ -258,8 +259,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
258
259
  - !ruby/object:Gem::Version
259
260
  version: '0'
260
261
  requirements: []
261
- rubyforge_project:
262
- rubygems_version: 2.5.1
262
+ rubygems_version: 3.2.15
263
263
  signing_key:
264
264
  specification_version: 4
265
265
  summary: All about metadata.