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.



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

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

Instance Attribute Details

#packageObject (readonly)

Returns the value of attribute package.



5
6
7
# File 'lib/glossarist/glossary_store.rb', line 5

def package
  @package
end

Instance Method Details

#add_concept(managed_concept) ⇒ Object



75
76
77
78
79
80
# File 'lib/glossarist/glossary_store.rb', line 75

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



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

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

#bibliographyObject

── Bibliography ──



120
121
122
# File 'lib/glossarist/glossary_store.rb', line 120

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

#bibliography=(value) ⇒ Object



124
125
126
127
128
129
# File 'lib/glossarist/glossary_store.rb', line 124

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 ──



154
155
156
157
158
159
160
# File 'lib/glossarist/glossary_store.rb', line 154

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

#concept(uuid) ⇒ Object



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

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

#concept_countObject



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

def concept_count
  @package.model_count(@concept_document_class)
end

#concept_exists?(uuid) ⇒ Boolean

Returns:

  • (Boolean)


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

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

#conceptsObject

── Concepts ──



66
67
68
# File 'lib/glossarist/glossary_store.rb', line 66

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

#image(path) ⇒ Object

── Images ──



133
134
135
# File 'lib/glossarist/glossary_store.rb', line 133

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

#image_pathsObject



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

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

#load(path, format: nil) ⇒ Object



44
45
46
47
48
49
50
51
# File 'lib/glossarist/glossary_store.rb', line 44

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 ──



14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/glossarist/glossary_store.rb', line 14

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



29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/glossarist/glossary_store.rb', line 29

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 ──



96
97
98
# File 'lib/glossarist/glossary_store.rb', line 96

def 
  @package&.
end

#metadata=(value) ⇒ Object



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

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

#register_dataObject

── Register Data ──



107
108
109
# File 'lib/glossarist/glossary_store.rb', line 107

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

#register_data=(value) ⇒ Object



111
112
113
114
115
116
# File 'lib/glossarist/glossary_store.rb', line 111

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



82
83
84
# File 'lib/glossarist/glossary_store.rb', line 82

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

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

── Save ──



55
56
57
58
# File 'lib/glossarist/glossary_store.rb', line 55

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

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



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

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

#statsObject

── Stats ──



148
149
150
# File 'lib/glossarist/glossary_store.rb', line 148

def stats
  @package&.stats
end