glossarist 2.8.7 → 2.8.11

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 (54) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +2 -0
  3. data/.rubocop_todo.yml +128 -11
  4. data/CLAUDE.md +34 -3
  5. data/Gemfile +1 -0
  6. data/lib/glossarist/cli/compare_command.rb +2 -2
  7. data/lib/glossarist/cli/export_command.rb +1 -3
  8. data/lib/glossarist/collection.rb +1 -1
  9. data/lib/glossarist/collections/bibliography_collection.rb +1 -1
  10. data/lib/glossarist/concept_data.rb +3 -2
  11. data/lib/glossarist/concept_reference.rb +7 -1
  12. data/lib/glossarist/concept_set.rb +5 -1
  13. data/lib/glossarist/concept_source.rb +2 -2
  14. data/lib/glossarist/concept_validator.rb +3 -1
  15. data/lib/glossarist/dataset_validator.rb +1 -1
  16. data/lib/glossarist/{error.rb → errors/base.rb} +3 -1
  17. data/lib/glossarist/errors/cache_version_mismatch_error.rb +12 -0
  18. data/lib/glossarist/errors/invalid_language_code_error.rb +19 -0
  19. data/lib/glossarist/errors/invalid_type_error.rb +8 -0
  20. data/lib/glossarist/errors/load_error.rb +22 -0
  21. data/lib/glossarist/errors/parse_error.rb +24 -0
  22. data/lib/glossarist/errors.rb +14 -0
  23. data/lib/glossarist/gcr_package.rb +4 -2
  24. data/lib/glossarist/glossary_store.rb +175 -1
  25. data/lib/glossarist/managed_concept.rb +31 -17
  26. data/lib/glossarist/managed_concept_collection.rb +52 -8
  27. data/lib/glossarist/reference_extractor.rb +22 -2
  28. data/lib/glossarist/reference_resolver.rb +38 -3
  29. data/lib/glossarist/resolution_adapter/bibliography.rb +22 -0
  30. data/lib/glossarist/resolution_adapter.rb +1 -0
  31. data/lib/glossarist/schema_migration/v0_to_v1.rb +200 -0
  32. data/lib/glossarist/schema_migration/v2_to_v3.rb +50 -0
  33. data/lib/glossarist/schema_migration.rb +10 -224
  34. data/lib/glossarist/sts/importer.rb +11 -12
  35. data/lib/glossarist/sts/term_extractor.rb +105 -6
  36. data/lib/glossarist/transforms/concept_to_gloss_transform.rb +1 -1
  37. data/lib/glossarist/v2/managed_concept.rb +2 -4
  38. data/lib/glossarist/v3/managed_concept.rb +2 -4
  39. data/lib/glossarist/validation/asset_index.rb +1 -1
  40. data/lib/glossarist/validation/rules/asciidoc_xref_rule.rb +11 -21
  41. data/lib/glossarist/validation/rules/cite_ref_integrity_rule.rb +74 -0
  42. data/lib/glossarist/validation/rules/concept_context.rb +24 -0
  43. data/lib/glossarist/validation/rules/concept_mention_rule.rb +1 -3
  44. data/lib/glossarist/validation/rules/image_reference_rule.rb +10 -21
  45. data/lib/glossarist/version.rb +1 -1
  46. data/lib/glossarist.rb +5 -13
  47. data/scripts/upgrade_dataset_to_v3.rb +1 -1
  48. metadata +13 -9
  49. data/lib/glossarist/concept_collector.rb +0 -231
  50. data/lib/glossarist/concept_manager.rb +0 -183
  51. data/lib/glossarist/error/cache_version_mismatch_error.rb +0 -8
  52. data/lib/glossarist/error/invalid_language_code_error.rb +0 -15
  53. data/lib/glossarist/error/invalid_type_error.rb +0 -4
  54. data/lib/glossarist/error/parse_error.rb +0 -16
@@ -7,6 +7,7 @@ module Glossarist
7
7
  raw = File.read(xml_path)
8
8
  @standard = ::Sts::IsoSts::Standard.from_xml(raw)
9
9
  @source_ref = extract_source_ref
10
+ @std_prefix = extract_std_prefix(@source_ref)
10
11
  end
11
12
 
12
13
  def extract
@@ -90,27 +91,104 @@ module Glossarist
90
91
  )
91
92
  end
92
93
 
94
+ ELEMENT_NAME_TO_ATTR = {
95
+ "entailedTerm" => :entailed_term,
96
+ "xref" => :xref,
97
+ "italic" => :italic,
98
+ "bold" => :bold,
99
+ "sup" => :sup,
100
+ "sub" => :sub,
101
+ "monospace" => :monospace,
102
+ "std" => :std,
103
+ "math" => :math,
104
+ "inline-formula" => :inline_formula,
105
+ "list" => :list,
106
+ "styled-content" => :styled_content,
107
+ "ext-link" => :ext_link,
108
+ }.freeze
109
+
93
110
  def extract_definition_text(lang_set)
94
111
  definitions = lang_set.definition
95
112
  return "" unless definitions&.any?
96
113
 
97
- definitions.first.value&.join.to_s.strip
114
+ extract_mixed_text(definitions.first)
98
115
  end
99
116
 
100
117
  def extract_note_texts(lang_set)
101
118
  lang_set.note.filter_map do |n|
102
- text = n.value&.join.to_s.strip
119
+ text = extract_mixed_text(n)
103
120
  text unless text.empty?
104
121
  end
105
122
  end
106
123
 
107
124
  def extract_example_texts(lang_set)
108
125
  lang_set.example.filter_map do |e|
109
- text = e.value&.join.to_s.strip
126
+ text = extract_mixed_text(e)
110
127
  text unless text.empty?
111
128
  end
112
129
  end
113
130
 
131
+ def extract_mixed_text(mixed_element)
132
+ indices = Hash.new(0)
133
+ parts = []
134
+
135
+ mixed_element.element_order.each do |elem|
136
+ if elem.node_type == :text
137
+ parts << elem.text_content.to_s
138
+ else
139
+ attr_name = ELEMENT_NAME_TO_ATTR[elem.name]
140
+ next unless attr_name
141
+
142
+ collection = mixed_element.class.attributes.key?(attr_name) &&
143
+ mixed_element.public_send(attr_name)
144
+ next unless collection
145
+
146
+ child = collection[indices[elem.name]]
147
+ if child
148
+ if elem.name == "entailedTerm"
149
+ parts << format_entailed_term(child)
150
+ else
151
+ text = child_value_text(child)
152
+ parts << text if text
153
+ end
154
+ end
155
+ indices[elem.name] += 1
156
+ end
157
+ end
158
+
159
+ normalize_whitespace(parts.join)
160
+ end
161
+
162
+ # entailedTerm → "{{19135:2026:3.5.1,concept}}"
163
+ # format: {{concept_id, render_text}}
164
+ def format_entailed_term(entailed)
165
+ raw_text = entailed.value.to_s
166
+ designation = raw_text.gsub(/\s+\(\d[\d.]*\)\s*\z/, "").strip
167
+ section = extract_section_from_target(entailed.target)
168
+
169
+ if @std_prefix && section
170
+ "{{#{@std_prefix}:#{section},#{designation}}}"
171
+ else
172
+ raw_text.strip
173
+ end
174
+ end
175
+
176
+ # "term_3.5.1" → "3.5.1", "term_3.8.2-1" → "3.8.2"
177
+ def extract_section_from_target(target)
178
+ return nil unless target
179
+
180
+ match = target.match(/term_(\d+(?:\.\d+)*)/)
181
+ match ? match[1] : nil
182
+ end
183
+
184
+ def child_value_text(child)
185
+ val = child.value
186
+ case val
187
+ when Array then val.join.to_s
188
+ when String then val
189
+ end
190
+ end
191
+
114
192
  def extract_source_texts(lang_set)
115
193
  lang_set.source.filter_map do |s|
116
194
  text = s.value&.join.to_s.strip
@@ -175,12 +253,33 @@ module Glossarist
175
253
  end
176
254
 
177
255
  def extract_ref_text(ref)
178
- if ref.value.is_a?(String)
179
- ref.value.to_s.strip
256
+ case ref
257
+ when ::Sts::IsoSts::StdRef
258
+ normalize_whitespace(ref.content.join.to_s)
259
+ when ::Sts::NisoSts::StandardRef
260
+ normalize_whitespace(ref.value.to_s)
180
261
  else
181
- ref.content&.join.to_s.strip
262
+ ""
182
263
  end
183
264
  end
265
+
266
+ def normalize_whitespace(text)
267
+ text.gsub(/[\s\u00a0]+/, " ").strip
268
+ end
269
+
270
+ # "ISO 19101-1:2014" → "19101-1:2014", "ISO/TS 19130-2:2014" → "TS-19130-2:2014"
271
+ def extract_std_prefix(source_ref)
272
+ return nil unless source_ref
273
+
274
+ match = source_ref.match(/\AISO(?:\/(\p{Upper}+))? (\d+(?:-\d+)?):(\d+)\z/)
275
+ return nil unless match
276
+
277
+ type_part = match[1]
278
+ number = match[2]
279
+ year = match[3]
280
+
281
+ type_part ? "#{type_part}-#{number}:#{year}" : "#{number}:#{year}"
282
+ end
184
283
  end
185
284
  end
186
285
  end
@@ -122,7 +122,7 @@ module Glossarist
122
122
 
123
123
  dd_attrs = if data
124
124
  data.class.detailed_definition_fields.to_h do |field|
125
- [field, build_gloss_definitions(data.send(field))]
125
+ [field, build_gloss_definitions(data.public_send(field))]
126
126
  end
127
127
  else
128
128
  { definition: [], notes: [], examples: [] }
@@ -9,15 +9,13 @@ module Glossarist
9
9
 
10
10
  key_value do
11
11
  map :data, to: :data
12
- map :id, with: { to: :identifier_to_yaml, from: :identifier_from_yaml }
13
- map :identifier,
14
- with: { to: :identifier_to_yaml, from: :identifier_from_yaml }
15
12
  map :related, to: :related
16
13
  map :dates, to: :dates
17
14
  map %i[date_accepted dateAccepted],
18
15
  with: { from: :date_accepted_from_yaml, to: :date_accepted_to_yaml }
19
16
  map :status, to: :status
20
- map :uuid, to: :uuid, with: { from: :uuid_from_yaml, to: :uuid_to_yaml }
17
+ map %i[id uuid], to: :uuid,
18
+ with: { from: :uuid_from_yaml, to: :uuid_to_yaml }
21
19
  map :sources, to: :sources
22
20
  end
23
21
  end
@@ -9,15 +9,13 @@ module Glossarist
9
9
 
10
10
  key_value do
11
11
  map :data, to: :data
12
- map :id, with: { to: :identifier_to_yaml, from: :identifier_from_yaml }
13
- map :identifier,
14
- with: { to: :identifier_to_yaml, from: :identifier_from_yaml }
15
12
  map :related, to: :related
16
13
  map :dates, to: :dates
17
14
  map %i[date_accepted dateAccepted],
18
15
  with: { from: :date_accepted_from_yaml, to: :date_accepted_to_yaml }
19
16
  map :status, to: :status
20
- map :uuid, to: :uuid, with: { from: :uuid_from_yaml, to: :uuid_to_yaml }
17
+ map %i[id uuid], to: :uuid,
18
+ with: { from: :uuid_from_yaml, to: :uuid_to_yaml }
21
19
  map :schema_version, to: :schema_version
22
20
  map :sources, to: :sources
23
21
  end
@@ -28,7 +28,7 @@ module Glossarist
28
28
  end
29
29
 
30
30
  def self.build_from_directory(dataset_path)
31
- concepts = ConceptCollector.collect(dataset_path)
31
+ concepts = GlossaryStore.new.tap { |s| s.load(dataset_path) }.concepts
32
32
  build_from_concepts(concepts, dataset_path)
33
33
  end
34
34
 
@@ -14,30 +14,20 @@ module Glossarist
14
14
  end
15
15
 
16
16
  def check(context)
17
- concept = context.concept
18
17
  fname = context.file_name
19
- extractor = ReferenceExtractor.new
20
18
  issues = []
21
19
 
22
- concept.localizations.each do |l10n|
23
- lang = l10n.language_code || "unknown"
24
-
25
- l10n.text_content.each do |text|
26
- next unless text
27
-
28
- extractor.extract_from_text(text).each do |ref|
29
- next unless ref.is_a?(BibliographicReference)
30
- next if context.bibliography_index.resolve?(ref.anchor)
31
-
32
- issues << issue(
33
- "unresolved bibliography reference <<#{ref.anchor}>>",
34
- code: code, severity: severity,
35
- location: "#{fname}/#{lang}",
36
- suggestion: "add '#{ref.anchor}' as a source, " \
37
- "or verify it exists in bibliography.yaml"
38
- )
39
- end
40
- end
20
+ context.references.each do |ref|
21
+ next unless ref.is_a?(BibliographicReference)
22
+ next if context.bibliography_index.resolve?(ref.anchor)
23
+
24
+ issues << issue(
25
+ "unresolved bibliography reference <<#{ref.anchor}>>",
26
+ code: code, severity: severity,
27
+ location: fname,
28
+ suggestion: "add '#{ref.anchor}' as a source, " \
29
+ "or verify it exists in bibliography.yaml"
30
+ )
41
31
  end
42
32
 
43
33
  issues
@@ -0,0 +1,74 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Glossarist
4
+ module Validation
5
+ module Rules
6
+ class CiteRefIntegrityRule < Base
7
+ def code = "GLS-110"
8
+ def category = :references
9
+ def severity = "warning"
10
+ def scope = :concept
11
+
12
+ def applicable?(context)
13
+ context.concept.localizations&.any?
14
+ end
15
+
16
+ def check(context)
17
+ concept = context.concept
18
+ fname = context.file_name
19
+ issues = []
20
+
21
+ check_unique_source_ids(concept, fname, issues)
22
+ check_unresolved_mentions(context, concept, fname, issues)
23
+
24
+ issues
25
+ end
26
+
27
+ private
28
+
29
+ def check_unique_source_ids(concept, fname, issues)
30
+ seen = Hash.new { |h, k| h[k] = [] }
31
+ concept.all_sources.each do |source|
32
+ next unless source.id
33
+
34
+ seen[source.id] << source
35
+ end
36
+
37
+ seen.each do |id, sources|
38
+ next if sources.length <= 1
39
+
40
+ issues << issue(
41
+ "duplicate source id '#{id}' appears #{sources.length} times",
42
+ code: "GLS-110", severity: severity,
43
+ location: fname,
44
+ suggestion: "source ids must be unique within a concept"
45
+ )
46
+ end
47
+ end
48
+
49
+ def check_unresolved_mentions(context, concept, fname, issues)
50
+ keys = cite_mention_keys(context)
51
+ return if keys.empty?
52
+
53
+ known_ids = concept.all_sources.filter_map(&:id).to_set
54
+ keys.each do |key|
55
+ next if known_ids.include?(key)
56
+
57
+ issues << issue(
58
+ "inline {{cite:#{key}}} does not resolve to any source",
59
+ code: "GLS-110", severity: severity,
60
+ location: fname,
61
+ suggestion: "add a source with id '#{key}' or fix the reference"
62
+ )
63
+ end
64
+ end
65
+
66
+ def cite_mention_keys(context)
67
+ context.references
68
+ .select(&:cite?)
69
+ .filter_map(&:concept_id)
70
+ end
71
+ end
72
+ end
73
+ end
74
+ end
@@ -3,6 +3,12 @@
3
3
  module Glossarist
4
4
  module Validation
5
5
  module Rules
6
+ # Shared context for concept-scoped validation rules.
7
+ #
8
+ # Provides lazy-memoized access to extracted references so that multiple
9
+ # rules examining the same concept share one extraction pass (DRY,
10
+ # single source of truth). Rules ask the context for references rather
11
+ # than instantiating their own ReferenceExtractor.
6
12
  class ConceptContext
7
13
  attr_reader :concept, :file_name, :collection_context
8
14
 
@@ -16,6 +22,24 @@ module Glossarist
16
22
  @concept.data&.id&.to_s
17
23
  end
18
24
 
25
+ # All references extracted from the concept's text fields
26
+ # (definitions, notes, examples) via {{...}} mentions, <<xrefs>>,
27
+ # and image::...[] references. Includes ConceptReference,
28
+ # BibliographicReference, and AssetReference objects.
29
+ # Memoized — extracted once per concept, shared across all rules.
30
+ def references
31
+ @references ||= ReferenceExtractor.new
32
+ .extract_from_managed_concept(@concept)
33
+ end
34
+
35
+ # All asset references (NonVerbRep, GraphicalSymbol) extracted
36
+ # from the concept's model attributes.
37
+ # Memoized — extracted once per concept, shared across all rules.
38
+ def asset_references
39
+ @asset_references ||= ReferenceExtractor.new
40
+ .extract_asset_refs_from_concept(@concept)
41
+ end
42
+
19
43
  def bibliography_index
20
44
  @collection_context.bibliography_index
21
45
  end
@@ -14,12 +14,10 @@ module Glossarist
14
14
  end
15
15
 
16
16
  def check(context)
17
- concept = context.concept
18
17
  fname = context.file_name
19
- extractor = ReferenceExtractor.new
20
18
  issues = []
21
19
 
22
- refs = extractor.extract_from_managed_concept(concept)
20
+ refs = context.references
23
21
  .select { |r| r.is_a?(ConceptReference) && r.local? }
24
22
 
25
23
  refs.each do |ref|
@@ -14,33 +14,22 @@ module Glossarist
14
14
  end
15
15
 
16
16
  def check(context)
17
- concept = context.concept
18
17
  fname = context.file_name
19
- extractor = ReferenceExtractor.new
20
18
  issues = []
21
19
 
22
- concept.localizations.each do |l10n|
23
- lang = l10n.language_code || "unknown"
24
-
25
- l10n.text_content.each do |text|
26
- next unless text
27
-
28
- extractor.extract_from_text(text).each do |ref|
29
- next unless ref.is_a?(AssetReference)
30
- next if context.asset_index.resolve?(ref.path)
20
+ context.references.each do |ref|
21
+ next unless ref.is_a?(AssetReference)
22
+ next if context.asset_index.resolve?(ref.path)
31
23
 
32
- issues << issue(
33
- "unresolved image reference #{ref.path}",
34
- code: "GLS-103", severity: severity,
35
- location: "#{fname}/#{lang}",
36
- suggestion: "add '#{ref.path}' to the dataset's images/ directory"
37
- )
38
- end
39
- end
24
+ issues << issue(
25
+ "unresolved image reference #{ref.path}",
26
+ code: "GLS-103", severity: severity,
27
+ location: fname,
28
+ suggestion: "add '#{ref.path}' to the dataset's images/ directory"
29
+ )
40
30
  end
41
31
 
42
- asset_refs = extractor.extract_asset_refs_from_concept(concept)
43
- asset_refs.each do |ref|
32
+ context.asset_references.each do |ref|
44
33
  next if context.asset_index.resolve?(ref.path)
45
34
 
46
35
  issues << issue(
@@ -4,5 +4,5 @@
4
4
  #
5
5
 
6
6
  module Glossarist
7
- VERSION = "2.8.7"
7
+ VERSION = "2.8.11"
8
8
  end
data/lib/glossarist.rb CHANGED
@@ -27,35 +27,27 @@ module Glossarist
27
27
  autoload :ReferenceResolver, "glossarist/reference_resolver"
28
28
  autoload :ResolutionAdapter, "glossarist/resolution_adapter"
29
29
  autoload :ConceptDate, "glossarist/concept_date"
30
- autoload :ConceptManager, "glossarist/concept_manager"
31
30
  autoload :ConceptSet, "glossarist/concept_set"
32
31
  autoload :ConceptSource, "glossarist/concept_source"
33
32
  autoload :ConceptStore, "glossarist/concept_store"
34
33
  autoload :ConceptValidator, "glossarist/concept_validator"
35
- autoload :ConceptCollector, "glossarist/concept_collector"
36
34
  autoload :ConceptComparator, "glossarist/concept_comparator"
37
- autoload :ContextConfiguration, "glossarist/context_configuration"
35
+ autoload :ContextConfiguration, "glossarist/context_configuration"
38
36
  autoload :ComparisonResult, "glossarist/comparison_result"
39
37
  autoload :ConceptDiff, "glossarist/concept_diff"
40
38
  autoload :ConceptDocument, "glossarist/concept_document"
41
- autoload :ConceptEnricher, "glossarist/concept_enricher"
39
+ autoload :ConceptEnricher, "glossarist/concept_enricher"
42
40
  autoload :Config, "glossarist/config"
43
41
  autoload :DatasetValidator, "glossarist/dataset_validator"
44
42
  autoload :CustomLocality, "glossarist/custom_locality"
45
43
  autoload :DetailedDefinition, "glossarist/detailed_definition"
46
44
  autoload :Designation, "glossarist/designation"
47
- autoload :Error, "glossarist/error"
45
+ autoload :Errors, "glossarist/errors"
48
46
  autoload :GcrPackage, "glossarist/gcr_package"
49
47
  autoload :GcrPackageDefinition, "glossarist/gcr_package_definition"
50
48
  autoload :GcrMetadata, "glossarist/gcr_metadata"
51
49
  autoload :GcrStatistics, "glossarist/gcr_statistics"
52
50
  autoload :GcrValidator, "glossarist/gcr_validator"
53
- autoload :InvalidTypeError, "glossarist/error/invalid_type_error"
54
- autoload :InvalidLanguageCodeError,
55
- "glossarist/error/invalid_language_code_error"
56
- autoload :ParseError, "glossarist/error/parse_error"
57
- autoload :CacheVersionMismatchError,
58
- "glossarist/error/cache_version_mismatch_error"
59
51
  autoload :Locality, "glossarist/locality"
60
52
  autoload :LocalizedConcept, "glossarist/localized_concept"
61
53
  autoload :ManagedConcept, "glossarist/managed_concept"
@@ -72,8 +64,8 @@ module Glossarist
72
64
  autoload :Utilities, "glossarist/utilities"
73
65
  autoload :Validation, "glossarist/validation"
74
66
  autoload :RegisterData, "glossarist/register_data"
75
- autoload :Section, "glossarist/section"
76
- autoload :DatasetRegister, "glossarist/dataset_register"
67
+ autoload :Section, "glossarist/section"
68
+ autoload :DatasetRegister, "glossarist/dataset_register"
77
69
  autoload :ValidationResult, "glossarist/validation_result"
78
70
  autoload :V1, "glossarist/v1"
79
71
  autoload :V2, "glossarist/v2"
@@ -32,7 +32,7 @@ manager.load_from_files(collection: collection)
32
32
 
33
33
  count = 0
34
34
  collection.each do |concept|
35
- Glossarist::SchemaMigration.migrate_concept(concept)
35
+ Glossarist::SchemaMigration::V2ToV3.migrate_concept(concept)
36
36
  count += 1
37
37
  end
38
38
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: glossarist
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.8.7
4
+ version: 2.8.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2026-06-09 00:00:00.000000000 Z
11
+ date: 2026-06-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: lutaml-model
@@ -199,14 +199,12 @@ files:
199
199
  - lib/glossarist/collections/typed_collection.rb
200
200
  - lib/glossarist/comparison_result.rb
201
201
  - lib/glossarist/concept.rb
202
- - lib/glossarist/concept_collector.rb
203
202
  - lib/glossarist/concept_comparator.rb
204
203
  - lib/glossarist/concept_data.rb
205
204
  - lib/glossarist/concept_date.rb
206
205
  - lib/glossarist/concept_diff.rb
207
206
  - lib/glossarist/concept_document.rb
208
207
  - lib/glossarist/concept_enricher.rb
209
- - lib/glossarist/concept_manager.rb
210
208
  - lib/glossarist/concept_ref.rb
211
209
  - lib/glossarist/concept_reference.rb
212
210
  - lib/glossarist/concept_set.rb
@@ -230,11 +228,13 @@ files:
230
228
  - lib/glossarist/designation/suffix.rb
231
229
  - lib/glossarist/designation/symbol.rb
232
230
  - lib/glossarist/detailed_definition.rb
233
- - lib/glossarist/error.rb
234
- - lib/glossarist/error/cache_version_mismatch_error.rb
235
- - lib/glossarist/error/invalid_language_code_error.rb
236
- - lib/glossarist/error/invalid_type_error.rb
237
- - lib/glossarist/error/parse_error.rb
231
+ - lib/glossarist/errors.rb
232
+ - lib/glossarist/errors/base.rb
233
+ - lib/glossarist/errors/cache_version_mismatch_error.rb
234
+ - lib/glossarist/errors/invalid_language_code_error.rb
235
+ - lib/glossarist/errors/invalid_type_error.rb
236
+ - lib/glossarist/errors/load_error.rb
237
+ - lib/glossarist/errors/parse_error.rb
238
238
  - lib/glossarist/gcr_metadata.rb
239
239
  - lib/glossarist/gcr_package.rb
240
240
  - lib/glossarist/gcr_package_definition.rb
@@ -281,11 +281,14 @@ files:
281
281
  - lib/glossarist/register_data.rb
282
282
  - lib/glossarist/related_concept.rb
283
283
  - lib/glossarist/resolution_adapter.rb
284
+ - lib/glossarist/resolution_adapter/bibliography.rb
284
285
  - lib/glossarist/resolution_adapter/local.rb
285
286
  - lib/glossarist/resolution_adapter/package.rb
286
287
  - lib/glossarist/resolution_adapter/remote.rb
287
288
  - lib/glossarist/resolution_adapter/route.rb
288
289
  - lib/glossarist/schema_migration.rb
290
+ - lib/glossarist/schema_migration/v0_to_v1.rb
291
+ - lib/glossarist/schema_migration/v2_to_v3.rb
289
292
  - lib/glossarist/section.rb
290
293
  - lib/glossarist/sts.rb
291
294
  - lib/glossarist/sts/extracted_designation.rb
@@ -343,6 +346,7 @@ files:
343
346
  - lib/glossarist/validation/rules/base.rb
344
347
  - lib/glossarist/validation/rules/bibliography_yaml_rule.rb
345
348
  - lib/glossarist/validation/rules/citation_completeness_rule.rb
349
+ - lib/glossarist/validation/rules/cite_ref_integrity_rule.rb
346
350
  - lib/glossarist/validation/rules/concept_context.rb
347
351
  - lib/glossarist/validation/rules/concept_count_rule.rb
348
352
  - lib/glossarist/validation/rules/concept_id_rule.rb