loc_mods 0.2.1 → 0.2.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.adoc +46 -1
- data/exe/loc-mods +6 -0
- data/lib/loc_mods/abstract.rb +2 -2
- data/lib/loc_mods/access_condition.rb +2 -2
- data/lib/loc_mods/alternative_name.rb +2 -2
- data/lib/loc_mods/area.rb +2 -2
- data/lib/loc_mods/base_mapper.rb +9 -0
- data/lib/loc_mods/cartographic_extension.rb +2 -2
- data/lib/loc_mods/cartographics.rb +2 -2
- data/lib/loc_mods/city_section.rb +2 -2
- data/lib/loc_mods/classification.rb +2 -2
- data/lib/loc_mods/cli.rb +101 -0
- data/lib/loc_mods/collection.rb +2 -2
- data/lib/loc_mods/comparable_mapper.rb +96 -0
- data/lib/loc_mods/copy_information.rb +2 -2
- data/lib/loc_mods/date.rb +2 -2
- data/lib/loc_mods/date_other.rb +2 -2
- data/lib/loc_mods/detail.rb +2 -2
- data/lib/loc_mods/edition.rb +2 -2
- data/lib/loc_mods/enumeration_and_chronology.rb +2 -2
- data/lib/loc_mods/extent.rb +2 -2
- data/lib/loc_mods/extent_definition.rb +2 -2
- data/lib/loc_mods/form.rb +2 -2
- data/lib/loc_mods/genre.rb +2 -2
- data/lib/loc_mods/geographic_code.rb +2 -2
- data/lib/loc_mods/hierarchical_geographic.rb +2 -2
- data/lib/loc_mods/hierarchical_part.rb +2 -2
- data/lib/loc_mods/holding_simple.rb +2 -2
- data/lib/loc_mods/identifier.rb +2 -2
- data/lib/loc_mods/item_identifier.rb +2 -2
- data/lib/loc_mods/language.rb +2 -2
- data/lib/loc_mods/language_term.rb +2 -2
- data/lib/loc_mods/location.rb +2 -2
- data/lib/loc_mods/name.rb +2 -2
- data/lib/loc_mods/name_part.rb +2 -2
- data/lib/loc_mods/non_sort.rb +2 -2
- data/lib/loc_mods/note.rb +2 -2
- data/lib/loc_mods/occupation.rb +2 -2
- data/lib/loc_mods/origin_info.rb +2 -2
- data/lib/loc_mods/part.rb +2 -2
- data/lib/loc_mods/physical_description.rb +2 -2
- data/lib/loc_mods/physical_description_note.rb +2 -2
- data/lib/loc_mods/physical_location.rb +2 -2
- data/lib/loc_mods/place.rb +2 -2
- data/lib/loc_mods/place_term.rb +2 -2
- data/lib/loc_mods/publisher.rb +2 -2
- data/lib/loc_mods/record.rb +2 -2
- data/lib/loc_mods/record_content_source.rb +2 -2
- data/lib/loc_mods/record_identifier.rb +2 -2
- data/lib/loc_mods/record_info.rb +2 -2
- data/lib/loc_mods/record_info_note.rb +2 -2
- data/lib/loc_mods/region.rb +2 -2
- data/lib/loc_mods/related_item.rb +2 -2
- data/lib/loc_mods/role.rb +2 -2
- data/lib/loc_mods/role_term.rb +2 -2
- data/lib/loc_mods/script_term.rb +2 -2
- data/lib/loc_mods/string_plus_language.rb +2 -2
- data/lib/loc_mods/string_plus_language_plus_authority.rb +2 -2
- data/lib/loc_mods/string_plus_language_plus_supplied.rb +2 -2
- data/lib/loc_mods/subject.rb +2 -2
- data/lib/loc_mods/subject_name.rb +2 -2
- data/lib/loc_mods/subject_title_info.rb +2 -2
- data/lib/loc_mods/table_of_contents.rb +2 -2
- data/lib/loc_mods/target_audience.rb +2 -2
- data/lib/loc_mods/temporal.rb +2 -2
- data/lib/loc_mods/text.rb +2 -2
- data/lib/loc_mods/title_info.rb +2 -2
- data/lib/loc_mods/type_of_resource.rb +2 -2
- data/lib/loc_mods/url.rb +2 -2
- data/lib/loc_mods/version.rb +1 -1
- metadata +22 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 66939abfdba314e93de07afbe306be58394fb4466de3d9203318e400b2a0f017
|
4
|
+
data.tar.gz: 5e9ffbdd0c405ac026e77138c5287c34d21cf93c84a7d98e94e5d6e987b015a0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9e0cec87a093a33c3785376aaba4cbe7b05b3ee8e916c1fa238faa659668e01468b56ec08afc9478123a01adb0076e497e1f09a8dcdc4f330965aa6f82fddcc2
|
7
|
+
data.tar.gz: f5ed1dc6d38e5c6afec2edd7872963433e1cc699502686acd6045198b4b37fec1d27720f7777c2f08a1a5f2234c15d98ccf2beefe2babfca3cf897007b7ee6c5
|
data/README.adoc
CHANGED
@@ -12,6 +12,8 @@ This gem is developed using the MODS 3.7 XSD schema.
|
|
12
12
|
|
13
13
|
== Usage
|
14
14
|
|
15
|
+
=== Ruby API
|
16
|
+
|
15
17
|
[source,ruby]
|
16
18
|
----
|
17
19
|
require 'loc_mods'
|
@@ -24,12 +26,55 @@ LocMods::Collection.from_xml(File.read("spec/fixtures/record_1.xml"))
|
|
24
26
|
LocMods::Collection.from_xml(File.read("reference/allrecords-MODS.xml"))
|
25
27
|
----
|
26
28
|
|
29
|
+
=== Command line interface
|
30
|
+
|
31
|
+
LocMods provides a command-line interface (CLI) for various operations. The main
|
32
|
+
executable is `loc-mods`.
|
33
|
+
|
34
|
+
==== Detect duplicates
|
35
|
+
|
36
|
+
The `detect-duplicates` command allows you to find duplicate MODS records based
|
37
|
+
on using a "primary ID" that is their DOI (Digital Object Identifier).
|
38
|
+
|
39
|
+
Usage:
|
40
|
+
|
41
|
+
[source,shell]
|
42
|
+
----
|
43
|
+
$ loc-mods detect-duplicates [OPTIONS] <file_or_directory_path>
|
44
|
+
----
|
45
|
+
|
46
|
+
Options:
|
47
|
+
|
48
|
+
* `-r, --recursive`: Search for MODS files recursively in subdirectories.
|
49
|
+
* `-v, --verbose`: Display more detailed output.
|
50
|
+
* `-o, --output FILE`: Write the results to a file instead of stdout.
|
51
|
+
|
52
|
+
Example:
|
53
|
+
|
54
|
+
[source,shell]
|
55
|
+
----
|
56
|
+
$ loc-mods detect-duplicates -r -v /path/to/mods/files
|
57
|
+
----
|
58
|
+
|
59
|
+
This command will:
|
60
|
+
|
61
|
+
. Search for MODS XML files in the specified directory (and subdirectories if `-r` is used).
|
62
|
+
. Parse each MODS file and extract the DOI.
|
63
|
+
. Group records with the same DOI.
|
64
|
+
. For each group of duplicates:
|
65
|
+
.. Display the shared DOI.
|
66
|
+
.. List the filenames of the duplicate records.
|
67
|
+
.. Show a detailed comparison of the differences between the records.
|
68
|
+
|
69
|
+
The output will highlight differences, removed elements, and missing elements
|
70
|
+
between the duplicate records, helping you identify discrepancies in the
|
71
|
+
metadata.
|
72
|
+
|
27
73
|
== Testing
|
28
74
|
|
29
75
|
[source,sh]
|
30
76
|
----
|
31
77
|
bin/update-nist-mods
|
32
|
-
|
33
78
|
----
|
34
79
|
|
35
80
|
== License
|
data/exe/loc-mods
ADDED
data/lib/loc_mods/abstract.rb
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
3
|
+
require_relative "base_mapper"
|
4
4
|
|
5
5
|
module LocMods
|
6
|
-
class Abstract <
|
6
|
+
class Abstract < BaseMapper
|
7
7
|
attribute :content, Shale::Type::String
|
8
8
|
attribute :display_label, Shale::Type::String
|
9
9
|
attribute :type, Shale::Type::String
|
@@ -1,9 +1,9 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
3
|
+
require_relative "base_mapper"
|
4
4
|
|
5
5
|
module LocMods
|
6
|
-
class AccessCondition <
|
6
|
+
class AccessCondition < BaseMapper
|
7
7
|
attribute :content, Shale::Type::String
|
8
8
|
attribute :display_label, Shale::Type::String
|
9
9
|
attribute :lang, Shale::Type::String
|
@@ -1,13 +1,13 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
3
|
+
require_relative "base_mapper"
|
4
4
|
|
5
5
|
require_relative "identifier"
|
6
6
|
require_relative "name_part"
|
7
7
|
require_relative "role"
|
8
8
|
|
9
9
|
module LocMods
|
10
|
-
class AlternativeName <
|
10
|
+
class AlternativeName < BaseMapper
|
11
11
|
attribute :lang, Shale::Type::String
|
12
12
|
attribute :script, Shale::Type::String
|
13
13
|
attribute :transliteration, Shale::Type::String
|
data/lib/loc_mods/area.rb
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
3
|
+
require_relative "base_mapper"
|
4
4
|
|
5
5
|
require_relative "hierarchical_part"
|
6
6
|
|
7
7
|
module LocMods
|
8
|
-
class Area <
|
8
|
+
class Area < BaseMapper
|
9
9
|
attribute :content, HierarchicalPart
|
10
10
|
attribute :area_type, Shale::Type::Value
|
11
11
|
|
@@ -1,9 +1,9 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
3
|
+
require_relative "base_mapper"
|
4
4
|
|
5
5
|
module LocMods
|
6
|
-
class CartographicExtension <
|
6
|
+
class CartographicExtension < BaseMapper
|
7
7
|
attribute :content, Shale::Type::String
|
8
8
|
attribute :display_label, Shale::Type::String
|
9
9
|
|
@@ -1,11 +1,11 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
3
|
+
require_relative "base_mapper"
|
4
4
|
|
5
5
|
require_relative "cartographic_extension"
|
6
6
|
|
7
7
|
module LocMods
|
8
|
-
class Cartographics <
|
8
|
+
class Cartographics < BaseMapper
|
9
9
|
attribute :authority, Shale::Type::String
|
10
10
|
attribute :authority_uri, Shale::Type::Value
|
11
11
|
attribute :value_uri, Shale::Type::Value
|
@@ -1,11 +1,11 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
3
|
+
require_relative "base_mapper"
|
4
4
|
|
5
5
|
require_relative "hierarchical_part"
|
6
6
|
|
7
7
|
module LocMods
|
8
|
-
class CitySection <
|
8
|
+
class CitySection < BaseMapper
|
9
9
|
attribute :content, HierarchicalPart
|
10
10
|
attribute :city_section_type, Shale::Type::Value
|
11
11
|
|
@@ -1,9 +1,9 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
3
|
+
require_relative "base_mapper"
|
4
4
|
|
5
5
|
module LocMods
|
6
|
-
class Classification <
|
6
|
+
class Classification < BaseMapper
|
7
7
|
attribute :content, Shale::Type::String
|
8
8
|
attribute :edition, Shale::Type::String
|
9
9
|
attribute :display_label, Shale::Type::String
|
data/lib/loc_mods/cli.rb
ADDED
@@ -0,0 +1,101 @@
|
|
1
|
+
# lib/loc_mods/cli.rb
|
2
|
+
require "thor"
|
3
|
+
require "loc_mods"
|
4
|
+
|
5
|
+
module LocMods
|
6
|
+
class Cli < Thor
|
7
|
+
desc "detect-duplicates PATH...", "Detect duplicate records in MODS XML files or directories"
|
8
|
+
|
9
|
+
def detect_duplicates(*paths)
|
10
|
+
all_records = []
|
11
|
+
paths.each do |path|
|
12
|
+
if File.directory?(path)
|
13
|
+
Dir.glob(File.join(path, "*.xml")).each do |file|
|
14
|
+
process_file(file, all_records)
|
15
|
+
end
|
16
|
+
elsif File.file?(path) && path.end_with?(".xml")
|
17
|
+
process_file(path, all_records)
|
18
|
+
else
|
19
|
+
puts "Warning: Skipping invalid path: #{path}"
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
records_by_url = {}
|
24
|
+
all_records.each do |record|
|
25
|
+
urls = record[:record].location.flat_map { |loc| loc.url.map(&:content) }.compact
|
26
|
+
if urls.any?
|
27
|
+
urls.each do |url|
|
28
|
+
records_by_url[url] ||= []
|
29
|
+
records_by_url[url] << record
|
30
|
+
end
|
31
|
+
else
|
32
|
+
puts "Warning: Record without URL found in file: #{record[:file]}"
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
duplicate_count = 0
|
37
|
+
records_by_url.each do |url, records|
|
38
|
+
if records.size > 1
|
39
|
+
duplicate_count += 1
|
40
|
+
puts "Duplicate set ##{duplicate_count} found for URL: #{url}"
|
41
|
+
records.combination(2).each_with_index do |(record1, record2), index|
|
42
|
+
puts " Comparison #{index + 1}:"
|
43
|
+
puts " File 1: #{record1[:file]}"
|
44
|
+
puts " File 2: #{record2[:file]}"
|
45
|
+
differences = record1[:record].compare(record2[:record])
|
46
|
+
if differences
|
47
|
+
puts " ----"
|
48
|
+
print_differences(differences)
|
49
|
+
puts " ----"
|
50
|
+
end
|
51
|
+
puts "\n"
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
private
|
58
|
+
|
59
|
+
def process_file(file, all_records)
|
60
|
+
xml_content = File.read(file)
|
61
|
+
collection = LocMods::Collection.from_xml(xml_content)
|
62
|
+
collection.mods.each do |record|
|
63
|
+
all_records << { record: record, file: file }
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
def print_differences(differences, prefix = "", path = [])
|
68
|
+
differences.each do |key, value|
|
69
|
+
current_path = path + [key]
|
70
|
+
if value.is_a?(Hash) && value.keys.all? { |k| k.is_a?(Integer) }
|
71
|
+
value.each do |index, sub_value|
|
72
|
+
print_differences(sub_value, prefix, current_path + [index])
|
73
|
+
end
|
74
|
+
elsif value.is_a?(Hash) && (value[:self] || value[:other])
|
75
|
+
puts " #{format_path(current_path)}:"
|
76
|
+
puts " #{prefix} Record 1: #{format_value(value[:self])}"
|
77
|
+
puts " #{prefix} Record 2: #{format_value(value[:other])}"
|
78
|
+
puts
|
79
|
+
elsif value.is_a?(Hash)
|
80
|
+
print_differences(value, prefix, current_path)
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
def format_path(path)
|
86
|
+
path.map.with_index do |part, index|
|
87
|
+
if index == 0
|
88
|
+
part.to_s
|
89
|
+
elsif part.is_a?(Integer)
|
90
|
+
"[#{part}]"
|
91
|
+
else
|
92
|
+
".#{part}"
|
93
|
+
end
|
94
|
+
end.join
|
95
|
+
end
|
96
|
+
|
97
|
+
def format_value(value)
|
98
|
+
value.nil? ? "(nil)" : "\"#{value}\""
|
99
|
+
end
|
100
|
+
end
|
101
|
+
end
|
data/lib/loc_mods/collection.rb
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
3
|
+
require_relative "base_mapper"
|
4
4
|
|
5
5
|
require_relative "record"
|
6
6
|
|
7
7
|
module LocMods
|
8
|
-
class Collection <
|
8
|
+
class Collection < BaseMapper
|
9
9
|
attribute :mods, Record, collection: true
|
10
10
|
attribute :schema_location, Shale::Type::String
|
11
11
|
|
@@ -0,0 +1,96 @@
|
|
1
|
+
# lib/loc_mods/comparable_mapper.rb
|
2
|
+
|
3
|
+
module LocMods
|
4
|
+
module ComparableMapper
|
5
|
+
# def self.included(base)
|
6
|
+
# base.extend(ClassMethods)
|
7
|
+
# end
|
8
|
+
|
9
|
+
# module ClassMethods
|
10
|
+
# def attribute_mapping
|
11
|
+
# @attribute_mapping ||= attributes.to_h do |name, attribute|
|
12
|
+
# [name, attribute.type]
|
13
|
+
# end
|
14
|
+
# end
|
15
|
+
# end
|
16
|
+
|
17
|
+
def compare(other)
|
18
|
+
return {} unless other.is_a?(self.class)
|
19
|
+
|
20
|
+
differences = {}
|
21
|
+
|
22
|
+
# puts "Debugging: Attributes for #{self.class.name}"
|
23
|
+
# pp self.class.attributes.keys
|
24
|
+
|
25
|
+
self.class.attributes.each_key do |attr|
|
26
|
+
self_value = self.send(attr)
|
27
|
+
other_value = other.send(attr)
|
28
|
+
|
29
|
+
# puts "Debugging: Comparing attribute '#{attr}'"
|
30
|
+
# puts " Self value: #{self_value.inspect}"
|
31
|
+
# puts " Other value: #{other_value.inspect}"
|
32
|
+
|
33
|
+
compared = compare_values(self_value, other_value)
|
34
|
+
if compared
|
35
|
+
# puts "DETECTED DIFFERENCE! #{compared.inspect}"
|
36
|
+
differences[attr] = compared
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
# unless differences.empty?
|
41
|
+
# puts "DIFFERENCES ARE"
|
42
|
+
# pp differences
|
43
|
+
# end
|
44
|
+
|
45
|
+
differences.empty? ? nil : differences
|
46
|
+
end
|
47
|
+
|
48
|
+
private
|
49
|
+
|
50
|
+
def compare_values(self_value, other_value)
|
51
|
+
# puts "compare_values (self_value: #{self_value}, other_value: #{other_value})"
|
52
|
+
case self_value
|
53
|
+
when Array
|
54
|
+
# puts "compare_values case 1"
|
55
|
+
compare_arrays(self_value, other_value)
|
56
|
+
when Shale::Mapper
|
57
|
+
# puts "compare_values case 2"
|
58
|
+
self_value.compare(other_value)
|
59
|
+
else
|
60
|
+
if self_value != other_value
|
61
|
+
# puts "compare_values case 3"
|
62
|
+
{ self: self_value, other: other_value }
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
def compare_arrays(self_array, other_array)
|
68
|
+
differences = {}
|
69
|
+
max_length = [self_array.size, other_array.size].max
|
70
|
+
|
71
|
+
max_length.times do |index|
|
72
|
+
self_item = self_array[index]
|
73
|
+
other_item = other_array[index]
|
74
|
+
|
75
|
+
if index >= self_array.size
|
76
|
+
compared = compare_values(other_item, nil)
|
77
|
+
differences[index] = { self: compared[:other], other: compared[:self] }
|
78
|
+
elsif index >= other_array.size
|
79
|
+
differences[index] = compare_values(self_item, nil)
|
80
|
+
else
|
81
|
+
compared = compare_values(self_item, other_item)
|
82
|
+
differences[index] = compared if compared
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
if self_array.size != other_array.size
|
87
|
+
differences[:array_size_difference] = {
|
88
|
+
self: self_array.size,
|
89
|
+
other: other_array.size,
|
90
|
+
}
|
91
|
+
end
|
92
|
+
|
93
|
+
differences.empty? ? nil : differences
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
3
|
+
require_relative "base_mapper"
|
4
4
|
|
5
5
|
require_relative "enumeration_and_chronology"
|
6
6
|
require_relative "form"
|
@@ -8,7 +8,7 @@ require_relative "item_identifier"
|
|
8
8
|
require_relative "note"
|
9
9
|
|
10
10
|
module LocMods
|
11
|
-
class CopyInformation <
|
11
|
+
class CopyInformation < BaseMapper
|
12
12
|
attribute :form, Form
|
13
13
|
attribute :sub_location, Shale::Type::String, collection: true
|
14
14
|
attribute :shelf_locator, Shale::Type::String, collection: true
|
data/lib/loc_mods/date.rb
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
3
|
+
require_relative "base_mapper"
|
4
4
|
|
5
5
|
module LocMods
|
6
|
-
class Date <
|
6
|
+
class Date < BaseMapper
|
7
7
|
attribute :content, Shale::Type::String
|
8
8
|
attribute :encoding, Shale::Type::String
|
9
9
|
attribute :qualifier, Shale::Type::String
|
data/lib/loc_mods/date_other.rb
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
3
|
+
require_relative "base_mapper"
|
4
4
|
|
5
5
|
require_relative "date"
|
6
6
|
|
7
7
|
module LocMods
|
8
|
-
class DateOther <
|
8
|
+
class DateOther < BaseMapper
|
9
9
|
attribute :content, Shale::Type::String
|
10
10
|
attribute :type, Shale::Type::String
|
11
11
|
|
data/lib/loc_mods/detail.rb
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
3
|
+
require_relative "base_mapper"
|
4
4
|
|
5
5
|
module LocMods
|
6
|
-
class Detail <
|
6
|
+
class Detail < BaseMapper
|
7
7
|
attribute :type, Shale::Type::String
|
8
8
|
attribute :level, Shale::Type::Integer
|
9
9
|
attribute :number, Shale::Type::String, collection: true
|
data/lib/loc_mods/edition.rb
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
3
|
+
require_relative "base_mapper"
|
4
4
|
|
5
5
|
module LocMods
|
6
6
|
# LocMods::StringPlusLanguagePlusSupplied
|
7
|
-
class Edition <
|
7
|
+
class Edition < BaseMapper
|
8
8
|
attribute :content, Shale::Type::String
|
9
9
|
attribute :supplied, Shale::Type::String
|
10
10
|
|
@@ -1,9 +1,9 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
3
|
+
require_relative "base_mapper"
|
4
4
|
|
5
5
|
module LocMods
|
6
|
-
class EnumerationAndChronology <
|
6
|
+
class EnumerationAndChronology < BaseMapper
|
7
7
|
attribute :content, Shale::Type::String
|
8
8
|
attribute :unit_type, Shale::Type::String
|
9
9
|
|
data/lib/loc_mods/extent.rb
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
3
|
+
require_relative "base_mapper"
|
4
4
|
|
5
5
|
module LocMods
|
6
|
-
class ExtentDefinition <
|
6
|
+
class ExtentDefinition < BaseMapper
|
7
7
|
attribute :unit, Shale::Type::String
|
8
8
|
attribute :start, Shale::Type::String
|
9
9
|
attribute :end, Shale::Type::String
|
data/lib/loc_mods/form.rb
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
3
|
+
require_relative "base_mapper"
|
4
4
|
|
5
5
|
module LocMods
|
6
|
-
class Form <
|
6
|
+
class Form < BaseMapper
|
7
7
|
attribute :content, Shale::Type::String
|
8
8
|
attribute :type, Shale::Type::String
|
9
9
|
attribute :authority, Shale::Type::String
|
data/lib/loc_mods/genre.rb
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
3
|
+
require_relative "base_mapper"
|
4
4
|
|
5
5
|
module LocMods
|
6
|
-
class Genre <
|
6
|
+
class Genre < BaseMapper
|
7
7
|
attribute :content, Shale::Type::String
|
8
8
|
attribute :type, Shale::Type::String
|
9
9
|
attribute :display_label, Shale::Type::String
|
@@ -1,9 +1,9 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
3
|
+
require_relative "base_mapper"
|
4
4
|
|
5
5
|
module LocMods
|
6
|
-
class GeographicCode <
|
6
|
+
class GeographicCode < BaseMapper
|
7
7
|
attribute :content, Shale::Type::String
|
8
8
|
attribute :authority_uri, Shale::Type::Value
|
9
9
|
attribute :value_uri, Shale::Type::Value
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
3
|
+
require_relative "base_mapper"
|
4
4
|
|
5
5
|
require_relative "area"
|
6
6
|
require_relative "city_section"
|
@@ -8,7 +8,7 @@ require_relative "hierarchical_part"
|
|
8
8
|
require_relative "region"
|
9
9
|
|
10
10
|
module LocMods
|
11
|
-
class HierarchicalGeographic <
|
11
|
+
class HierarchicalGeographic < BaseMapper
|
12
12
|
attribute :authority, Shale::Type::String
|
13
13
|
attribute :authority_uri, Shale::Type::Value
|
14
14
|
attribute :value_uri, Shale::Type::Value
|
@@ -1,9 +1,9 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
3
|
+
require_relative "base_mapper"
|
4
4
|
|
5
5
|
module LocMods
|
6
|
-
class HierarchicalPart <
|
6
|
+
class HierarchicalPart < BaseMapper
|
7
7
|
attribute :content, Shale::Type::String
|
8
8
|
attribute :level, Shale::Type::Value
|
9
9
|
attribute :period, Shale::Type::Value
|
@@ -1,11 +1,11 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
3
|
+
require_relative "base_mapper"
|
4
4
|
|
5
5
|
require_relative "copy_information"
|
6
6
|
|
7
7
|
module LocMods
|
8
|
-
class HoldingSimple <
|
8
|
+
class HoldingSimple < BaseMapper
|
9
9
|
attribute :copy_information, CopyInformation, collection: true
|
10
10
|
|
11
11
|
xml do
|
data/lib/loc_mods/identifier.rb
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
3
|
+
require_relative "base_mapper"
|
4
4
|
|
5
5
|
module LocMods
|
6
|
-
class Identifier <
|
6
|
+
class Identifier < BaseMapper
|
7
7
|
attribute :content, Shale::Type::String
|
8
8
|
attribute :display_label, Shale::Type::String
|
9
9
|
attribute :type, Shale::Type::String
|
data/lib/loc_mods/language.rb
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
3
|
+
require_relative "base_mapper"
|
4
4
|
|
5
5
|
require_relative "language_term"
|
6
6
|
require_relative "script_term"
|
7
7
|
|
8
8
|
module LocMods
|
9
|
-
class Language <
|
9
|
+
class Language < BaseMapper
|
10
10
|
attribute :object_part, Shale::Type::String
|
11
11
|
attribute :lang, Shale::Type::String
|
12
12
|
attribute :script, Shale::Type::String
|