loc_mods 0.2.3 → 0.2.5

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 (75) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +2 -0
  3. data/.rubocop_todo.yml +83 -0
  4. data/README.adoc +48 -6
  5. data/lib/loc_mods/abstract.rb +9 -9
  6. data/lib/loc_mods/access_condition.rb +11 -11
  7. data/lib/loc_mods/alternative_name.rb +10 -10
  8. data/lib/loc_mods/area.rb +3 -3
  9. data/lib/loc_mods/cartographic_extension.rb +4 -4
  10. data/lib/loc_mods/cartographics.rb +8 -8
  11. data/lib/loc_mods/city_section.rb +3 -3
  12. data/lib/loc_mods/classification.rb +8 -8
  13. data/lib/loc_mods/cli.rb +48 -80
  14. data/lib/loc_mods/collection.rb +3 -3
  15. data/lib/loc_mods/copy_information.rb +5 -5
  16. data/lib/loc_mods/date.rb +8 -8
  17. data/lib/loc_mods/date_other.rb +4 -4
  18. data/lib/loc_mods/detail.rb +7 -7
  19. data/lib/loc_mods/edition.rb +4 -4
  20. data/lib/loc_mods/enumeration_and_chronology.rb +4 -4
  21. data/lib/loc_mods/extent.rb +4 -4
  22. data/lib/loc_mods/extent_definition.rb +7 -7
  23. data/lib/loc_mods/form.rb +5 -5
  24. data/lib/loc_mods/genre.rb +8 -8
  25. data/lib/loc_mods/geographic_code.rb +6 -6
  26. data/lib/loc_mods/hierarchical_geographic.rb +6 -6
  27. data/lib/loc_mods/hierarchical_part.rb +8 -8
  28. data/lib/loc_mods/holding_simple.rb +2 -2
  29. data/lib/loc_mods/identifier.rb +8 -8
  30. data/lib/loc_mods/item_identifier.rb +4 -4
  31. data/lib/loc_mods/language.rb +9 -9
  32. data/lib/loc_mods/language_term.rb +7 -7
  33. data/lib/loc_mods/location.rb +8 -8
  34. data/lib/loc_mods/name.rb +19 -19
  35. data/lib/loc_mods/name_part.rb +4 -4
  36. data/lib/loc_mods/non_sort.rb +4 -4
  37. data/lib/loc_mods/note.rb +7 -7
  38. data/lib/loc_mods/occupation.rb +6 -6
  39. data/lib/loc_mods/origin_info.rb +10 -10
  40. data/lib/loc_mods/part.rb +10 -10
  41. data/lib/loc_mods/physical_description.rb +10 -10
  42. data/lib/loc_mods/physical_description_note.rb +7 -7
  43. data/lib/loc_mods/physical_location.rb +5 -5
  44. data/lib/loc_mods/place.rb +3 -3
  45. data/lib/loc_mods/place_term.rb +7 -7
  46. data/lib/loc_mods/publisher.rb +6 -6
  47. data/lib/loc_mods/record.rb +4 -4
  48. data/lib/loc_mods/record_content_source.rb +4 -4
  49. data/lib/loc_mods/record_identifier.rb +4 -4
  50. data/lib/loc_mods/record_info.rb +9 -9
  51. data/lib/loc_mods/record_info_note.rb +8 -8
  52. data/lib/loc_mods/region.rb +3 -3
  53. data/lib/loc_mods/related_item.rb +10 -10
  54. data/lib/loc_mods/role.rb +2 -2
  55. data/lib/loc_mods/role_term.rb +4 -4
  56. data/lib/loc_mods/script_term.rb +4 -4
  57. data/lib/loc_mods/string_plus_language.rb +6 -6
  58. data/lib/loc_mods/string_plus_language_plus_authority.rb +6 -6
  59. data/lib/loc_mods/string_plus_language_plus_supplied.rb +4 -4
  60. data/lib/loc_mods/subject.rb +15 -15
  61. data/lib/loc_mods/subject_name.rb +14 -14
  62. data/lib/loc_mods/subject_title_info.rb +16 -16
  63. data/lib/loc_mods/table_of_contents.rb +9 -9
  64. data/lib/loc_mods/target_audience.rb +5 -5
  65. data/lib/loc_mods/temporal.rb +5 -5
  66. data/lib/loc_mods/text.rb +5 -5
  67. data/lib/loc_mods/title_info.rb +22 -22
  68. data/lib/loc_mods/type_of_resource.rb +8 -8
  69. data/lib/loc_mods/url.rb +8 -8
  70. data/lib/loc_mods/version.rb +1 -1
  71. data/lib/loc_mods.rb +7 -6
  72. data/references/allrecords-MODS.xml +1 -1
  73. metadata +5 -6
  74. data/lib/loc_mods/base_mapper.rb +0 -26
  75. data/lib/loc_mods/comparable_mapper.rb +0 -110
data/lib/loc_mods.rb CHANGED
@@ -1,14 +1,15 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative "loc_mods/version"
3
+ require "lutaml/model"
4
+
5
+ Lutaml::Model::Config.configure do |config|
6
+ require "lutaml/model/xml_adapter/nokogiri_adapter"
7
+ config.xml_adapter = Lutaml::Model::XmlAdapter::NokogiriAdapter
8
+ end
4
9
 
5
10
  module LocMods
6
11
  class Error < StandardError; end
7
- # Your code goes here...
8
12
  end
9
13
 
10
- require "shale"
11
- require "shale/adapter/nokogiri"
12
- Shale.xml_adapter = Shale::Adapter::Nokogiri
13
-
14
+ require_relative "loc_mods/version"
14
15
  require_relative "loc_mods/collection"
@@ -1863916,4 +1863916,4 @@
1863916
1863916
  </languageOfCataloging>
1863917
1863917
  </recordInfo>
1863918
1863918
  </mods>
1863919
- </modsCollection>
1863919
+ </modsCollection>
metadata CHANGED
@@ -1,17 +1,17 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: loc_mods
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.3
4
+ version: 0.2.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-07-14 00:00:00.000000000 Z
11
+ date: 2024-08-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: nokogiri
14
+ name: lutaml-model
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - ">="
@@ -25,7 +25,7 @@ dependencies:
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
- name: shale
28
+ name: nokogiri
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - ">="
@@ -132,6 +132,7 @@ extra_rdoc_files: []
132
132
  files:
133
133
  - ".rspec"
134
134
  - ".rubocop.yml"
135
+ - ".rubocop_todo.yml"
135
136
  - CODE_OF_CONDUCT.md
136
137
  - README.adoc
137
138
  - Rakefile
@@ -141,14 +142,12 @@ files:
141
142
  - lib/loc_mods/access_condition.rb
142
143
  - lib/loc_mods/alternative_name.rb
143
144
  - lib/loc_mods/area.rb
144
- - lib/loc_mods/base_mapper.rb
145
145
  - lib/loc_mods/cartographic_extension.rb
146
146
  - lib/loc_mods/cartographics.rb
147
147
  - lib/loc_mods/city_section.rb
148
148
  - lib/loc_mods/classification.rb
149
149
  - lib/loc_mods/cli.rb
150
150
  - lib/loc_mods/collection.rb
151
- - lib/loc_mods/comparable_mapper.rb
152
151
  - lib/loc_mods/copy_information.rb
153
152
  - lib/loc_mods/date.rb
154
153
  - lib/loc_mods/date_other.rb
@@ -1,26 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # lib/loc_mods/base_mapper.rb
4
- require "shale"
5
- require_relative "comparable_mapper"
6
-
7
- module LocMods
8
- # Base class for all object definitions
9
- class BaseMapper < Shale::Mapper
10
- include ComparableMapper
11
- end
12
-
13
- # Nil class substitute for comparison
14
- class ComparableNil < BaseMapper
15
- end
16
-
17
- # Comparison of two values for ComparableMapper
18
- class Comparison
19
- attr_accessor :original, :updated
20
-
21
- def initialize(original:, updated:)
22
- @original = original
23
- @updated = updated
24
- end
25
- end
26
- end
@@ -1,110 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # lib/loc_mods/comparable_mapper.rb
4
-
5
- module LocMods
6
- # Enable comparison of two class models solely based on attribute values in
7
- # a recursive manner.
8
- module ComparableMapper
9
- # TODO: Implement Comparable
10
- # include Comparable
11
- # def <=>(other)
12
- # attributes.foo <=> other.attributes.foo
13
- # end
14
- # def inspect
15
- # @foo
16
- # end
17
-
18
- def eql?(other)
19
- other.class == self.class &&
20
- self.class.attributes.all? do |attr|
21
- send(attr) == other.send(attr)
22
- end
23
- end
24
-
25
- alias == eql?
26
-
27
- def hash
28
- ([self.class] + self.class.attributes.map(&:hash)).hash
29
- end
30
-
31
- def compare(other)
32
- differences = {}
33
-
34
- # puts "Debugging: Attributes for #{self.class.name}"
35
- # pp self.class.attributes.keys
36
-
37
- self.class.attributes.each_key do |attr|
38
- self_value = respond_to?(attr) ? send(attr) : nil
39
- other_value = other.respond_to?(attr) ? other.send(attr) : nil
40
-
41
- # puts "Debugging: Comparing attribute '#{attr}'"
42
- # puts " Self value: #{self_value.inspect}"
43
- # puts " Other value: #{other_value.inspect}"
44
-
45
- compared = compare_values(self_value, other_value)
46
- if compared
47
- # puts "DETECTED DIFFERENCE! #{compared.inspect}"
48
- differences[attr] = compared
49
- end
50
- end
51
-
52
- # unless differences.empty?
53
- # puts "DIFFERENCES ARE"
54
- # pp differences
55
- # end
56
-
57
- differences.empty? ? nil : differences
58
- end
59
-
60
- private
61
-
62
- def compare_values(self_value, other_value)
63
- # puts "compare_values (self_value: #{self_value}, other_value: #{other_value})"
64
- case self_value
65
- when Array
66
- # puts "compare_values case 1"
67
- compare_arrays(self_value, other_value || [])
68
- when ComparableMapper
69
- # puts "compare_values case 2"
70
- self_value.compare(other_value)
71
- else
72
- if self_value != other_value
73
- # puts "compare_values case 3"
74
- Comparison.new(original: self_value, updated: other_value)
75
- end
76
- end
77
- end
78
-
79
- def compare_arrays(self_array, other_array)
80
- differences = {}
81
- max_length = [self_array.size, other_array.size].max
82
-
83
- max_length.times do |index|
84
- self_item = self_array[index] || ComparableNil.new
85
- other_item = other_array[index] || ComparableNil.new
86
-
87
- compared = compare_values(self_item, other_item)
88
- differences[index] = compared if compared
89
-
90
- # if index >= self_array.size
91
- # puts "case 1 #{compared}"
92
- # # differences[index] = compared
93
- # elsif index >= other_array.size
94
- # puts "case 2.1 #{self_item}"
95
- # puts "case 2.2 #{compared}"
96
- # # differences[index] = compared
97
- # end
98
- end
99
-
100
- if self_array.size != other_array.size
101
- differences[:_array_size_difference] = Comparison.new(
102
- original: self_array.size,
103
- updated: other_array.size
104
- )
105
- end
106
-
107
- differences.empty? ? nil : differences
108
- end
109
- end
110
- end