loc_mods 0.2.3 → 0.2.5

Sign up to get free protection for your applications and to get access to all the features.
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