Class: Glossarist::ConceptSet

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

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(concepts, assets, options = {}) ⇒ ConceptSet

Returns a new instance of ConceptSet.



20
21
22
23
24
25
26
27
28
# File 'lib/glossarist/concept_set.rb', line 20

def initialize(concepts, assets, options = {})
  @concepts = read_concepts(concepts)
  @assets = Glossarist::Collections::AssetCollection.new(assets)
  @bibliographies = Glossarist::Collections::BibliographyCollection.new(
    @concepts,
    options.dig(:bibliography, :global_cache),
    options.dig(:bibliography, :local_cache),
  )
end

Instance Attribute Details

#assetsObject

an ‘Collections::Asset` object



14
15
16
# File 'lib/glossarist/concept_set.rb', line 14

def assets
  @assets
end

#bibliographiesObject

a ‘BibliographyCollection` object



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

def bibliographies
  @bibliographies
end

#conceptsObject

a ‘Glossarist::ManagedConceptCollection` object



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

def concepts
  @concepts
end

Instance Method Details

#concept_mapObject



74
75
76
77
78
# File 'lib/glossarist/concept_set.rb', line 74

def concept_map
  @concept_map ||= concepts.managed_concepts.map do |concept|
    [concept.default_designation.downcase, concept]
  end.to_h
end

#latex_template(concept) ⇒ Object



58
59
60
61
62
63
64
65
66
# File 'lib/glossarist/concept_set.rb', line 58

def latex_template(concept)
  <<~TEMPLATE
    \\newglossaryentry{#{concept.default_designation.tr('_', '-')}}
    {
    name={#{concept.default_designation.gsub('_', '\_')}}
    description={#{normalize_definition(concept.default_definition)}}
    }
  TEMPLATE
end

#normalize_definition(definition) ⇒ Object



68
69
70
71
72
# File 'lib/glossarist/concept_set.rb', line 68

def normalize_definition(definition)
  definition.gsub(/{{([^}]*)}}/) do |_match|
    "\\textbf{\\gls{#{Regexp.last_match[1].tr('_', '-')}}}"
  end
end

#read_concepts(concepts) ⇒ Object



50
51
52
53
54
55
56
# File 'lib/glossarist/concept_set.rb', line 50

def read_concepts(concepts)
  return concepts if concepts.is_a?(Glossarist::ManagedConceptCollection)

  collection = Glossarist::ManagedConceptCollection.new
  collection.load_from_files(concepts)
  collection
end

#to_latex(filename = nil) ⇒ Object



30
31
32
33
34
35
36
# File 'lib/glossarist/concept_set.rb', line 30

def to_latex(filename = nil)
  return to_latex_from_file(filename) if filename

  @concepts.map do |concept|
    latex_template(concept)
  end.join("\n")
end

#to_latex_from_file(entries_file) ⇒ Object



38
39
40
41
42
43
44
45
46
47
48
# File 'lib/glossarist/concept_set.rb', line 38

def to_latex_from_file(entries_file)
  File.readlines(entries_file).map do |concept_name|
    concept = concept_map[concept_name.strip.downcase]

    if concept.nil?
      puts "  [Not Found]: #{concept_name.strip}"
    else
      latex_template(concept)
    end
  end.compact.join("\n")
end