libis-tools 0.9.65 → 1.0.0

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.
Files changed (41) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +5 -23
  3. data/lib/libis/tools.rb +0 -1
  4. data/lib/libis/tools/version.rb +1 -1
  5. data/libis-tools.gemspec +1 -1
  6. metadata +4 -51
  7. data/lib/libis/tools/metadata.rb +0 -25
  8. data/lib/libis/tools/metadata/dublin_core_record.rb +0 -116
  9. data/lib/libis/tools/metadata/field_format.rb +0 -121
  10. data/lib/libis/tools/metadata/fix_field.rb +0 -35
  11. data/lib/libis/tools/metadata/mapper.rb +0 -81
  12. data/lib/libis/tools/metadata/mappers/flandrica.rb +0 -76
  13. data/lib/libis/tools/metadata/mappers/kuleuven.rb +0 -1929
  14. data/lib/libis/tools/metadata/mappers/scope.rb +0 -46
  15. data/lib/libis/tools/metadata/marc21_record.rb +0 -51
  16. data/lib/libis/tools/metadata/marc_record.rb +0 -287
  17. data/lib/libis/tools/metadata/parser/basic_parser.rb +0 -120
  18. data/lib/libis/tools/metadata/parser/dublin_core_parser.rb +0 -37
  19. data/lib/libis/tools/metadata/parser/marc21_parser.rb +0 -207
  20. data/lib/libis/tools/metadata/parser/marc_format_parser.rb +0 -53
  21. data/lib/libis/tools/metadata/parser/marc_rules.rb +0 -36
  22. data/lib/libis/tools/metadata/parser/marc_select_parser.rb +0 -26
  23. data/lib/libis/tools/metadata/parser/patch.rb +0 -22
  24. data/lib/libis/tools/metadata/parser/subfield_criteria_parser.rb +0 -72
  25. data/lib/libis/tools/metadata/parsers.rb +0 -12
  26. data/lib/libis/tools/metadata/sharepoint_mapping.rb +0 -119
  27. data/lib/libis/tools/metadata/sharepoint_record.rb +0 -262
  28. data/lib/libis/tools/metadata/var_field.rb +0 -242
  29. data/spec/data/MetadataMapping.xlsx +0 -0
  30. data/spec/metadata/123456789.marc +0 -18
  31. data/spec/metadata/8389207.marc +0 -117
  32. data/spec/metadata/BE_942855_1927_4898_corrected.XML +0 -11
  33. data/spec/metadata/BE_942855_1927_4898_md.XML +0 -11
  34. data/spec/metadata/dublin_core_parser_spec.rb +0 -48
  35. data/spec/metadata/dublin_core_spec.rb +0 -81
  36. data/spec/metadata/marc21_parser_data.rb +0 -382
  37. data/spec/metadata/marc21_parser_spec.rb +0 -67
  38. data/spec/metadata/marc21_spec.rb +0 -178
  39. data/spec/metadata/metadata_mapper_spec.rb +0 -23
  40. data/spec/metadata/scope_mapper_spec.rb +0 -29
  41. data/test.rb +0 -61
@@ -1,67 +0,0 @@
1
- # encoding: utf-8
2
- require_relative '../spec_helper'
3
- require 'libis/tools/metadata/parser/marc21_parser'
4
- require 'parslet/convenience'
5
- require 'pp'
6
-
7
- require_relative 'marc21_parser_data'
8
-
9
- describe 'MARC 21 parser' do
10
- subject(:parser) { Libis::Tools::Metadata::Marc21Parser.new }
11
-
12
- context 'Syntax parser' do
13
-
14
- marc21_parser_testdata.each do |expectation|
15
-
16
- next unless expectation.has_key?(:tree)
17
-
18
- if expectation[:tree] != :failure
19
- it "parses #{expectation[:title]}" do
20
- expect {
21
- # noinspection RubyArgCount,RubyUnusedLocalVariable
22
- tree = parser.select.parse(expectation[:input]) if expectation[:title] =~ /^select /
23
- # noinspection RubyArgCount,RubyUnusedLocalVariable
24
- tree = parser.format.parse(expectation[:input]) if expectation[:title] =~ /^format /
25
- # pp tree
26
- expect(tree).to be_a Hash
27
- expect(tree).to match expectation[:tree]
28
- }.to_not raise_error
29
- end
30
- else
31
- it "does not parse #{expectation[:title]}" do
32
- expect {
33
- # noinspection RubyArgCount,RubyUnusedLocalVariable
34
- tree = parser.select.parse(expectation[:input]) if expectation[:title] =~ /^select /
35
- # noinspection RubyArgCount,RubyUnusedLocalVariable
36
- tree = parser.format.parse(expectation[:input]) if expectation[:title] =~ /^format /
37
- # pp tree
38
- }.to raise_error(Parslet::ParseFailed)
39
- end
40
- end
41
-
42
- end
43
- end
44
-
45
- context 'Transformer' do
46
-
47
- let(:transformer) { parser.transformer }
48
-
49
- it 'can be created' do
50
- expect(transformer).to be_a Libis::Tools::Metadata::Marc21Parser::Transformer
51
- end
52
-
53
- marc21_parser_testdata.each do |expectation|
54
-
55
- next unless expectation.has_key?(:transform)
56
-
57
- it "transforms #{expectation[:title]}" do
58
- tree = parser.parse(expectation[:input])
59
- # pp tree
60
- expect(transformer.apply(tree)).to eq expectation[:transform]
61
- end
62
-
63
- end
64
-
65
- end
66
-
67
- end
@@ -1,178 +0,0 @@
1
- # encoding: utf-8
2
- require_relative '../spec_helper'
3
- require 'libis/tools/metadata/marc21_record'
4
- require 'libis/tools/xml_document'
5
-
6
- require 'rspec/matchers'
7
- require 'equivalent-xml'
8
- require 'libis/tools/extend/string'
9
-
10
- describe 'Marc21Record' do
11
-
12
- subject(:record) { Libis::Tools::Metadata::Marc21Record.new(data) {} }
13
- let(:data) { xml.root }
14
-
15
- context '8389207' do
16
- let(:xml) { Libis::Tools::XmlDocument.open(File.join(File.dirname(__FILE__), '8389207.marc')) }
17
-
18
- it 'load from xml' do
19
- expect(record.marc_dump).to eq <<-STR.align_left
20
- LDR:'01068nam 2200241u 4500'
21
- 005:'20150701153710.0'
22
- 008:'000608m17221724xx |||| | 000|0 lat c'
23
- 001:'9921543960101471'
24
- 035: : :
25
- \ta:["(BeLVLBS)002154396LBS01-Aleph"]
26
- 035: : :
27
- \ta:["8389207"]
28
- 245:0:0:
29
- \ta:["Anecdota Graeca, sacra et profana /"]
30
- \tc:["ex codicibus manu exaratis nunc primum in lucem edita, versione Latina donata, et notis\\n illustrata a Io. Christophoro Wolfio ... Tom. I [-IIII]\\n "]
31
- 264: :1:
32
- \ta:["Hamburgi"]
33
- \tb:["apud Theodorum Christophorum Felginer,"]
34
- \tc:["1722-1724"]
35
- 300: : :
36
- \ta:["8o: 4 v.; [22], 298, [8]; [16], 354, [1]; [16], 299, [7]; [16], 271, [5] p."]
37
- 336: : :
38
- \ta:["text"]
39
- \t2:["rdacontent"]
40
- 337: : :
41
- \ta:["unmediated"]
42
- \t2:["rdamedia"]
43
- 338: : :
44
- \ta:["volume"]
45
- \t2:["rdacarrier"]
46
- 500: : :
47
- \ta:["Ded. Petrus Theodorus Seelmann; Erdmannus Neumeister; Thomas Claussen; Joannes Grammius\\n "]
48
- 500: : :
49
- \ta:["Elk deel heeft eigen titelp. in roodzwartdruk, met drukkersmerk"]
50
- 650: :7:
51
- \t2:["UDC"]
52
- \ta:["276 =75"]
53
- \tx:["Griekse patrologie"]
54
- 650: :7:
55
- \t2:["KADOC"]
56
- \ta:["Bisdom Antwerpen (1961-heden)"]
57
- \t6:["(ODIS-ORG)9284"]
58
- 650: :7:
59
- \t2:["KADOC"]
60
- \ta:["Studiecentrum voor Zielzorg en Predicatie"]
61
- \t6:["(ODIS-ORG)24894"]
62
- 650: :7:
63
- \t2:["KADOC"]
64
- \ta:["Antwerpen [deelgemeente in gemeente Antwerpen - BE]"]
65
- \t6:["(ODIS-GEO)10560000006504"]
66
- 650: :7:
67
- \t2:["KADOC"]
68
- \ta:["C1"]
69
- \tx:["Kerken en religie"]
70
- \t6:["(ODIS-HT)"]
71
- 653: :6:
72
- \ta:["Books before 1840"]
73
- 700:1: :
74
- \ta:["Wolf, Johann Christoph"]
75
- \td:["1683-1739"]
76
- \t4:["aut"]
77
- 953: : :
78
- \ta:["1701-1750"]
79
- 998: : :
80
- \ta:["LBS01"]
81
- \tb:["bib_200501.mrc.2.av"]
82
- INST: : :
83
- \ta:["32KUL_LIBIS_NETWORK"]
84
- \tb:["P"]
85
- \tc:["71134440820001471"]
86
- INST: : :
87
- \ta:["32KUL_KUL"]
88
- \tb:["P"]
89
- \tc:["21304345390001488"]
90
- AVA: : :
91
- \ta:["32KUL_KUL"]
92
- \tb:["GBIB"]
93
- \tc:["GBIB: Godgeleerdheid"]
94
- \td:["276.030.4 WOLF Anec"]
95
- \te:["available"]
96
- \tf:["1"]
97
- \tg:["0"]
98
- \tj:["GBIB"]
99
- \tp:["1"]
100
- MMS: : :
101
- \tb:["9921543960101471"]
102
- \ta:["32KUL_LIBIS_NETWORK"]
103
- MMS: : :
104
- \tb:["9921543960101488"]
105
- \ta:["32KUL_KUL"]
106
- STR
107
- end
108
-
109
- it 'convert to dublin core' do
110
- record.extend Libis::Tools::Metadata::Mappers::Kuleuven
111
- xml_doc = Libis::Tools::XmlDocument.parse <<STR
112
- <?xml version="1.0" encoding="utf-8"?>
113
- <dc:record xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/">
114
- <dc:identifier>urn:ControlNumber:9921543960101471</dc:identifier>
115
- <dc:identifier>(BeLVLBS)002154396LBS01-Aleph</dc:identifier>
116
- <dc:identifier>8389207</dc:identifier>
117
- <dc:title>Anecdota Graeca, sacra et profana /</dc:title>
118
- <dc:creator>Wolf, Johann Christoph, 1683-1739, (author)</dc:creator>
119
- <dc:subject xsi:type="http://purl.org/dc/terms/UDC">276 =75 Griekse patrologie</dc:subject>
120
- <dc:subject xsi:type="dcterms:URI">http://www.odis.be/lnk/or_9284#Bisdom+Antwerpen+%281961-heden%29</dc:subject>
121
- <dc:subject xsi:type="dcterms:URI">http://www.odis.be/lnk/or_24894#Studiecentrum+voor+Zielzorg+en+Predicatie</dc:subject>
122
- <dc:temporal>1701-1750</dc:temporal>
123
- <dc:description>Ded. Petrus Theodorus Seelmann; Erdmannus Neumeister; Thomas Claussen; Joannes Grammius\n \nElk deel heeft eigen titelp. in roodzwartdruk, met drukkersmerk</dc:description>
124
- <dc:date>1722 - 1724</dc:date>
125
- <dc:type xml:lang="en">Books before 1840</dc:type>
126
- <dcterms:extent>8o: 4 v.; [22], 298, [8]; [16], 354, [1]; [16], 299, [7]; [16], 271, [5] p.</dcterms:extent>
127
- <dc:language>la</dc:language>
128
- <dc:coverage>Antwerpen [deelgemeente in gemeente Antwerpen - BE] [(ODIS-GEO)10560000006504]</dc:coverage>
129
- </dc:record>
130
- STR
131
- record.to_dc.root.elements.each_with_index do |element, i|
132
- expect(element).to be_equivalent_to(xml_doc.root.elements[i])
133
- end
134
- end
135
- end
136
-
137
- context '123456789' do
138
- let(:xml) { Libis::Tools::XmlDocument.open(File.join(File.dirname(__FILE__), '123456789.marc')) }
139
-
140
- it 'load from xml' do
141
- # puts record.marc_dump
142
- expect(record.marc_dump).to eq <<-STR.align_left
143
- LDR:'01068nam 2200241u 4500'
144
- 005:'20150701153710.0'
145
- 008:'000608m17221724xx |||| | 000|0 lat c'
146
- 001:'9901234567890471'
147
- 035: : :
148
- \ta:["(BeLVLBS)123456789LBS01-Aleph"]
149
- 035: : :
150
- \ta:["123456789"]
151
- 245:0:0:
152
- \ta:["Title with special chars: 'éÄçñåúðäíö' / \\\"ߥ²¤€®©œøæ’×½¼þ«»¶ǽµ¢ŒÆØŒ§Ð\\\" < & % $ # >"]
153
- \tc:["subtitle with special chars: \\\"ߥ²¤€®©œøæ’×½¼þ«»¶ǽµ¢ŒÆØŒ§Ð\\\" < & % $ # >"]
154
- STR
155
- end
156
-
157
- it 'convert to dublin core' do
158
- record.extend Libis::Tools::Metadata::Mappers::Kuleuven
159
- xml_doc = Libis::Tools::XmlDocument.parse <<STR
160
- <?xml version="1.0" encoding="utf-8"?>
161
- <dc:record xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/">
162
- <dc:identifier>urn:ControlNumber:9901234567890471</dc:identifier>
163
- <dc:identifier>(BeLVLBS)123456789LBS01-Aleph</dc:identifier>
164
- <dc:identifier>123456789</dc:identifier>
165
- <dc:title>Title with special chars: &apos;éÄçñåúðäíö&apos; / &quot;ߥ²¤€®©œøæ’×½¼þ«»¶ǽµ¢ŒÆØŒ§Ð&quot; &lt; &amp; % $ # &gt;</dc:title>
166
- <dc:date>1722 - 1724</dc:date>
167
- <dc:language>la</dc:language>
168
- </dc:record>
169
- STR
170
- # puts puts record.to_dc.to_xml
171
- record.to_dc.root.elements.each_with_index do |element, i|
172
- expect(element).to be_equivalent_to(xml_doc.root.elements[i])
173
- end
174
- end
175
- end
176
-
177
- end
178
-
@@ -1,23 +0,0 @@
1
- # encoding: utf-8
2
- require_relative '../spec_helper'
3
- require 'libis/tools/metadata/mapper'
4
- require 'libis/tools/metadata/parsers'
5
- require 'parslet'
6
- require 'parslet/convenience'
7
- require 'pp'
8
-
9
- $DEBUG = false
10
-
11
- describe 'Metadata Mapper' do
12
-
13
- subject(:mapper) { Libis::Tools::Metadata::Mapper.new(
14
- Libis::Tools::Metadata::Marc21Parser.new,
15
- Libis::Tools::Metadata::DublinCoreParser.new,
16
- Libis::Tools::Metadata::Marc21Parser.new,
17
- File.join(File.dirname(__FILE__), '..', 'data', 'MetadataMapping.xlsx')) }
18
-
19
- it 'Initialization' do
20
- expect(mapper).to_not be_nil
21
- end
22
-
23
- end
@@ -1,29 +0,0 @@
1
- require_relative '../spec_helper'
2
- require 'libis/tools'
3
-
4
- require 'rspec/matchers'
5
- require 'equivalent-xml'
6
-
7
- describe 'ScopeMapper' do
8
-
9
- let(:input) { File.join(File.dirname(__FILE__), 'BE_942855_1927_4898_md.XML')}
10
- let(:output) { File.join(File.dirname(__FILE__), 'BE_942855_1927_4898_corrected.XML')}
11
-
12
- it 'Correct Scope output' do
13
-
14
- input_dc = Libis::Tools::Metadata::DublinCoreRecord.new(input)
15
- expect(input_dc).to be_a Libis::Tools::Metadata::DublinCoreRecord
16
-
17
- output_dc = Libis::Tools::Metadata::DublinCoreRecord.new(output)
18
- expect(output_dc).to be_a Libis::Tools::Metadata::DublinCoreRecord
19
-
20
- input_dc.extend Libis::Tools::Metadata::Mappers::Scope
21
- converted_dc = input_dc.to_dc
22
- expect(converted_dc).to be_a Libis::Tools::Metadata::DublinCoreRecord
23
-
24
- converted_dc.root.elements.each_with_index do |element, i|
25
- expect(element).to be_equivalent_to(output_dc.root.elements[i])
26
- end
27
-
28
- end
29
- end
data/test.rb DELETED
@@ -1,61 +0,0 @@
1
- require 'libis-tools'
2
- require 'parslet'
3
- require 'parslet/convenience'
4
-
5
- # noinspection RubyResolve
6
- class FieldSpecParser < Libis::Tools::Metadata::BasicParser
7
-
8
- root(:criteria)
9
-
10
- rule(:criteria) { selection >> ( spaces >> selection ).repeat }
11
-
12
- rule(:selection) { must >> must_not.maybe }
13
-
14
- rule(:must) { names.as(:must).maybe >> (one_of | only_one_of).maybe }
15
- rule(:must_not) { minus >> must.as(:not) }
16
-
17
- rule(:one_of) { lrparen >> names.as(:one_of) >> rrparen }
18
- rule(:only_one_of) { lcparen >> names.as(:only_one_of) >> rcparen }
19
-
20
- rule(:names) { (character | number).repeat(1) }
21
-
22
- def self.criteria_to_s(criteria)
23
- case criteria
24
- when Array
25
- # leave as is
26
- when Hash
27
- criteria = [criteria]
28
- else
29
- return criteria
30
- end
31
- criteria.map { |selection| selection_to_s(selection) }.join(' ')
32
- end
33
-
34
- def self.selection_to_s(selection)
35
- return selection unless selection.is_a? Hash
36
- result = "#{selection[:must]}"
37
- result += "(#{selection[:one_of]})" if selection[:one_of]
38
- result += "{#{selection[:only_one_of]}}" if selection[:only_one_of]
39
- result += "-#{selection_to_s(selection[:not])}" if selection[:not]
40
- result
41
- end
42
-
43
- end
44
-
45
- require 'awesome_print'
46
-
47
- def parse(string)
48
- tree = FieldSpecParser.new.parse_with_debug(string)
49
- puts "parse '#{FieldSpecParser.criteria_to_s(tree)}'"
50
- ap tree
51
- end
52
-
53
- parse ''
54
- parse 'abc'
55
- parse 'abc-de'
56
- parse 'abc(de)'
57
- parse 'abc{de}'
58
- parse 'a(bc)-de'
59
- parse 'a-b c-d'
60
- parse 'a-(bc)'
61
- parse 'a-{bc}'