Class: Pocketbook::BookRenderer

Inherits:
Object
  • Object
show all
Defined in:
lib/pocketbook/book_renderer.rb,
lib/pocketbook/book_renderer/pdf.rb,
lib/pocketbook/book_renderer/toc.rb,
lib/pocketbook/book_renderer/chapter.rb,
lib/pocketbook/book_renderer/metadata.rb,
lib/pocketbook/book_renderer/front_matter.rb

Defined Under Namespace

Classes: Chapter, FrontMatter, Metadata, Pdf, Toc

Constant Summary collapse

DEFAULT_METADATA =
Metadata::DEFAULT_VALUES

Instance Method Summary collapse

Constructor Details

#initialize(inputs:, theme:, output_path: nil, metadata: {}) ⇒ BookRenderer

Returns a new instance of BookRenderer.



16
17
18
19
20
21
# File 'lib/pocketbook/book_renderer.rb', line 16

def initialize(inputs:, theme:, output_path: nil, metadata: {})
  @inputs = inputs
  @theme = theme
  @output_path = output_path
  @cli_metadata = symbolize_keys()
end

Instance Method Details

#renderObject

Raises:

  • (ArgumentError)


23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/pocketbook/book_renderer.rb', line 23

def render
  raise ArgumentError, "Output PDF path is required" if blank?(@output_path)

  validate_paths!

  chapters, front_matter = chapter_compiler.compile(inputs: @inputs)
   = (front_matter)

  toc_targets = toc_builder.targets(chapters: chapters)
  html_without_toc_pages = build_document_html(chapters, , toc_page_numbers: {})
  toc_page_numbers = resolve_toc_page_numbers(html_without_toc_pages, toc_targets)
  html = build_document_html(chapters, , toc_page_numbers: toc_page_numbers)

  FileUtils.mkdir_p(File.dirname(@output_path))
  generate_pdf_to_path(html, @output_path)

  @output_path
end

#render_htmlObject



42
43
44
45
46
47
48
49
# File 'lib/pocketbook/book_renderer.rb', line 42

def render_html
  validate_paths!

  chapters, front_matter = chapter_compiler.compile(inputs: @inputs)
   = (front_matter)

  build_document_html(chapters, , toc_page_numbers: {})
end