Class: Glossarist::Validation::Rules::ConceptContext

Inherits:
Object
  • Object
show all
Defined in:
lib/glossarist/validation/rules/concept_context.rb

Overview

Shared context for concept-scoped validation rules.

Provides lazy-memoized access to extracted references so that multiple rules examining the same concept share one extraction pass (DRY, single source of truth). Rules ask the context for references rather than instantiating their own ReferenceExtractor.

In V3, n-ary relations (PartitiveHyperedge, GenericHyperedge) are per-file (see Glossarist::V3::RelationLoader). Each concept's relations are looked up via the relations lookup passed here. Pass an explicit relations: list when constructing the context — the loader does not run on demand so the validator behaviour is fully deterministic given the load.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(concept, file_name:, collection_context:, relations: []) ⇒ ConceptContext

Returns a new instance of ConceptContext.



22
23
24
25
26
27
# File 'lib/glossarist/validation/rules/concept_context.rb', line 22

def initialize(concept, file_name:, collection_context:, relations: [])
  @concept = concept
  @file_name = file_name
  @collection_context = collection_context
  @relations = Array(relations)
end

Instance Attribute Details

#collection_contextObject (readonly)

Returns the value of attribute collection_context.



20
21
22
# File 'lib/glossarist/validation/rules/concept_context.rb', line 20

def collection_context
  @collection_context
end

#conceptObject (readonly)

Returns the value of attribute concept.



20
21
22
# File 'lib/glossarist/validation/rules/concept_context.rb', line 20

def concept
  @concept
end

#file_nameObject (readonly)

Returns the value of attribute file_name.



20
21
22
# File 'lib/glossarist/validation/rules/concept_context.rb', line 20

def file_name
  @file_name
end

#relationsObject (readonly)

Returns the value of attribute relations.



20
21
22
# File 'lib/glossarist/validation/rules/concept_context.rb', line 20

def relations
  @relations
end

Instance Method Details

#asset_indexObject



55
56
57
# File 'lib/glossarist/validation/rules/concept_context.rb', line 55

def asset_index
  @collection_context.asset_index
end

#asset_referencesObject

All asset references (NonVerbRep, GraphicalSymbol) extracted from the concept's model attributes. Memoized — extracted once per concept, shared across all rules.



46
47
48
49
# File 'lib/glossarist/validation/rules/concept_context.rb', line 46

def asset_references
  @asset_references ||= ReferenceExtractor.new
    .extract_asset_refs_from_concept(@concept)
end

#bibliography_indexObject



51
52
53
# File 'lib/glossarist/validation/rules/concept_context.rb', line 51

def bibliography_index
  @collection_context.bibliography_index
end

#concept_idObject



29
30
31
# File 'lib/glossarist/validation/rules/concept_context.rb', line 29

def concept_id
  @concept.data&.id&.to_s
end

#concept_idsObject



59
60
61
# File 'lib/glossarist/validation/rules/concept_context.rb', line 59

def concept_ids
  @collection_context.concept_ids
end

#declared_languagesObject



63
64
65
# File 'lib/glossarist/validation/rules/concept_context.rb', line 63

def declared_languages
  @collection_context.declared_languages
end

#gcr?Boolean

Returns:

  • (Boolean)


71
72
73
# File 'lib/glossarist/validation/rules/concept_context.rb', line 71

def gcr?
  @collection_context.gcr?
end

#metadataObject



67
68
69
# File 'lib/glossarist/validation/rules/concept_context.rb', line 67

def 
  @collection_context.
end

#referencesObject

All references extracted from the concept's text fields (definitions, notes, examples) via {...} mentions, <>, and image::...[] references. Includes ConceptReference, BibliographicReference, and AssetReference objects. Memoized — extracted once per concept, shared across all rules.



38
39
40
41
# File 'lib/glossarist/validation/rules/concept_context.rb', line 38

def references
  @references ||= ReferenceExtractor.new
    .extract_from_managed_concept(@concept)
end