Class: Glossarist::GlossaryStore

Inherits:
Object
  • Object
show all
Defined in:
lib/glossarist/glossary_store.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeGlossaryStore

Returns a new instance of GlossaryStore.



10
11
12
13
# File 'lib/glossarist/glossary_store.rb', line 10

def initialize
  @package = nil
  @concept_document_class = V3::ConceptDocument
end

Instance Attribute Details

#packageObject (readonly)

Returns the value of attribute package.



8
9
10
# File 'lib/glossarist/glossary_store.rb', line 8

def package
  @package
end

Instance Method Details

#add_concept(managed_concept) ⇒ Object



78
79
80
81
82
83
# File 'lib/glossarist/glossary_store.rb', line 78

def add_concept(managed_concept)
  ensure_package
  doc = @concept_document_class.from_managed_concept(managed_concept)
  doc.id = managed_concept.uuid
  @package.add_model(doc)
end

#add_image(path, content) ⇒ Object



140
141
142
143
# File 'lib/glossarist/glossary_store.rb', line 140

def add_image(path, content)
  ensure_package
  @package.add_asset(path, content)
end

#bibliographyObject

── Bibliography ──



123
124
125
# File 'lib/glossarist/glossary_store.rb', line 123

def bibliography
  @package.models_for(BibliographyData).first
end

#bibliography=(value) ⇒ Object



127
128
129
130
131
132
# File 'lib/glossarist/glossary_store.rb', line 127

def bibliography=(value)
  ensure_package
  existing = bibliography
  @package.remove_model(BibliographyData, existing.shortname) if existing
  @package.add_model(value)
end

#build_metadata(shortname:, version:, **opts) ⇒ Object

── Convenience ──



157
158
159
160
161
162
163
# File 'lib/glossarist/glossary_store.rb', line 157

def (shortname:, version:, **opts)
  GcrMetadata.from_concepts(concepts, register_data: register_data, options: {
                              shortname: shortname,
                              version: version,
                              **opts,
                            })
end

#concept(uuid) ⇒ Object



73
74
75
76
# File 'lib/glossarist/glossary_store.rb', line 73

def concept(uuid)
  doc = @package.fetch_model(@concept_document_class, uuid)
  doc&.to_managed_concept
end

#concept_countObject



89
90
91
# File 'lib/glossarist/glossary_store.rb', line 89

def concept_count
  @package.model_count(@concept_document_class)
end

#concept_exists?(uuid) ⇒ Boolean

Returns:

  • (Boolean)


93
94
95
# File 'lib/glossarist/glossary_store.rb', line 93

def concept_exists?(uuid)
  @package.model_exists?(@concept_document_class, uuid)
end

#conceptsObject

── Concepts ──



69
70
71
# File 'lib/glossarist/glossary_store.rb', line 69

def concepts
  @package.models_for(@concept_document_class).map(&:to_managed_concept)
end

#image(path) ⇒ Object

── Images ──



136
137
138
# File 'lib/glossarist/glossary_store.rb', line 136

def image(path)
  @package.asset(path)
end

#image_pathsObject



145
146
147
# File 'lib/glossarist/glossary_store.rb', line 145

def image_paths
  @package.asset_paths.select { |p| p.start_with?("images/") }
end

#load(path, format: nil) ⇒ Object



47
48
49
50
51
52
53
54
# File 'lib/glossarist/glossary_store.rb', line 47

def load(path, format: nil)
  ext = File.extname(path).downcase
  if [".gcr", ".zip"].include?(ext)
    load_zip(path, format: format)
  else
    load_directory(path, format: format)
  end
end

#load_directory(path, format: nil) ⇒ Object

── Load ──



17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/glossarist/glossary_store.rb', line 17

def load_directory(path, format: nil)
   = (path)
  @concept_document_class = resolve_concept_document_class()

  definition = GcrPackageDefinition.definition(
    concept_document_class: @concept_document_class,
  )
  @package = Lutaml::Store::PackageStore.load(
    definition, path, transport: :directory, format: format
  )

  ()
  self
end

#load_zip(path, format: nil) ⇒ Object



32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/glossarist/glossary_store.rb', line 32

def load_zip(path, format: nil)
   = (path)
  @concept_document_class = resolve_concept_document_class()

  definition = GcrPackageDefinition.definition(
    concept_document_class: @concept_document_class,
  )
  @package = Lutaml::Store::PackageStore.load(
    definition, path, transport: :zip, format: format
  )

  ()
  self
end

#metadataObject

── Metadata ──



99
100
101
# File 'lib/glossarist/glossary_store.rb', line 99

def 
  @package&.
end

#metadata=(value) ⇒ Object



103
104
105
106
# File 'lib/glossarist/glossary_store.rb', line 103

def metadata=(value)
  ensure_package
  @package. = value
end

#register_dataObject

── Register Data ──



110
111
112
# File 'lib/glossarist/glossary_store.rb', line 110

def register_data
  @package.models_for(RegisterData).first
end

#register_data=(value) ⇒ Object



114
115
116
117
118
119
# File 'lib/glossarist/glossary_store.rb', line 114

def register_data=(value)
  ensure_package
  existing = register_data
  @package.remove_model(RegisterData, existing.key) if existing
  @package.add_model(value)
end

#remove_concept(uuid) ⇒ Object



85
86
87
# File 'lib/glossarist/glossary_store.rb', line 85

def remove_concept(uuid)
  @package.remove_model(@concept_document_class, uuid)
end

#save_directory(path, format: nil, formats: {}) ⇒ Object

── Save ──



58
59
60
61
# File 'lib/glossarist/glossary_store.rb', line 58

def save_directory(path, format: nil, formats: {})
  @package.save(path, transport: :directory, format: format,
                      formats: formats)
end

#save_zip(path, format: nil, formats: {}) ⇒ Object



63
64
65
# File 'lib/glossarist/glossary_store.rb', line 63

def save_zip(path, format: nil, formats: {})
  @package.save(path, transport: :zip, format: format, formats: formats)
end

#statsObject

── Stats ──



151
152
153
# File 'lib/glossarist/glossary_store.rb', line 151

def stats
  @package&.stats
end