libis-metadata 1.0.0 → 1.0.4

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