Class: Playgroundbook::GlossaryGenerator

Inherits:
Object
  • Object
show all
Defined in:
lib/renderer/glossary_generator.rb

Instance Method Summary collapse

Instance Method Details

#generate(parsed_chapters, chapter_names, glossary) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/renderer/glossary_generator.rb', line 7

def generate(parsed_chapters, chapter_names, glossary)
  glossary_plist = {
    "Terms" => {}
  }

  glossary.each do |term, definition|
    glossary_plist["Terms"][term] = { "Definition" => definition }
    escaped_term = URI.escape(term)
    parsed_chapters.each_with_index do |chapter, i|
      pages = chapter[:page_contents]
      page_names = chapter[:page_names]
      chapter_name = URI.escape(chapter_names[i])

      pages.each_with_index do |page, j|
        page_name = URI.escape(page_names[j])
        next if page.scan("](glossary://#{escaped_term})").empty?
        glossary_plist["Terms"][term]["FirstUse"] = {
            "Title" => page_names[j],
            "PageReference" => "#{chapter_name}/#{page_name}"
          }
        break
      end

      # Break if we found the first use.
      break unless glossary_plist["Terms"][term]["FirstUse"].nil?
    end
  end

  File.open(glossary_file_name, "w") do |file|
    file.write(glossary_plist.to_plist)
  end
end

#glossary_file_nameObject



40
41
42
# File 'lib/renderer/glossary_generator.rb', line 40

def glossary_file_name
  "#{ContentsDirectoryName}/#{ResourcesDirectoryName}/#{GlossaryFileName}"
end