class Bookery::Publishers::HTMLPublisher

Constants

DEFAULTS

Attributes

options[R]
processors[R]

Public Class Methods

new(options = {}) click to toggle source
# File lib/bookery/publishers/html_publisher.rb, line 13
def initialize(options = {})
  @options = DEFAULTS.merge(options)

  includes_path = File.join(options[:project_dir], 'assets', 'includes')
  @processors = [
    Processors::IncludeProcessor.new(includes_path)
  ]
end

Public Instance Methods

pre_publish(book) click to toggle source
# File lib/bookery/publishers/html_publisher.rb, line 35
def pre_publish(book)
  erb = ERB.new(File.read(book.template))
  bound_object = TemplateObject.new(book)
  options[:template] = "string://#{erb.result(bound_object.get_binding)}"
end
publish(book) click to toggle source
# File lib/bookery/publishers/html_publisher.rb, line 22
def publish(book)
  markdown = process_content(book.content)

  pre_publish(book)
  output = Kramdown::Document.new(markdown, options).to_html

  output_dir = File.join(options[:project_dir], 'output', book.language)
  ::FileUtils.mkdir_p(output_dir)
  File.write(File.join(output_dir, 'index.html'), output)

  output
end

Private Instance Methods

process_content(content) click to toggle source
# File lib/bookery/publishers/html_publisher.rb, line 43
def process_content(content)
  result = content.dup
  processors.each do |processor|
    result = processor.process(result)
  end

  result
end