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
11
12
# File 'lib/glossarist/glossary_store.rb', line 7

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

Instance Attribute Details

#localized_concepts_dir_nameObject (readonly)

Returns the value of attribute localized_concepts_dir_name.



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

def localized_concepts_dir_name
  @localized_concepts_dir_name
end

#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



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

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



168
169
170
171
# File 'lib/glossarist/glossary_store.rb', line 168

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

#bibliographyObject

── Bibliography ──



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

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

#bibliography=(value) ⇒ Object



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

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



185
186
187
188
189
190
191
# File 'lib/glossarist/glossary_store.rb', line 185

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

#concept(uuid) ⇒ Object



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

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

#concept_countObject



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

def concept_count
  @package.model_count(@concept_document_class)
end

#concept_exists?(uuid) ⇒ Boolean

Returns:

  • (Boolean)


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

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

#conceptsObject

── Concepts ──



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

def concepts
  return @v1_concepts if @v1_concepts

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

#each_concept(&block) ⇒ Object



89
90
91
92
93
94
95
96
97
98
99
# File 'lib/glossarist/glossary_store.rb', line 89

def each_concept(&block)
  return enum_for(:each_concept) unless block

  if @v1_concepts
    @v1_concepts.each(&block)
  else
    @package.models_for(@concept_document_class).each do |doc|
      yield doc.to_managed_concept
    end
  end
end

#image(path) ⇒ Object

── Images ──



164
165
166
# File 'lib/glossarist/glossary_store.rb', line 164

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

#image_pathsObject



173
174
175
# File 'lib/glossarist/glossary_store.rb', line 173

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

#load(path, format: nil) ⇒ Object



61
62
63
64
65
66
67
68
# File 'lib/glossarist/glossary_store.rb', line 61

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



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/glossarist/glossary_store.rb', line 16

def load_directory(path, format: nil)
  if v1_dataset?(path)
    load_v1_fallback(path)
    return self
  end

  if legacy_managed_layout?(path)
    load_legacy_managed(path)
    return self
  end

  if grouped_at_root?(path)
    load_grouped_at_root(path)
    return self
  end

   = (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



46
47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/glossarist/glossary_store.rb', line 46

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



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

def 
  @package&.
end

#metadata=(value) ⇒ Object



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

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

#register_dataObject

── Register Data ──



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

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

#register_data=(value) ⇒ Object



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

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



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

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

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

── Save ──



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

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

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



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

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

#statsObject

── Stats ──



179
180
181
# File 'lib/glossarist/glossary_store.rb', line 179

def stats
  @package&.stats
end