class OrigenDocHelpers::PDF

Constants

WKHTMLTOPDF

Attributes

filename[R]
index[R]
root[R]
title[R]

Public Class Methods

enabled?() click to toggle source
# File lib/origen_doc_helpers/pdf.rb, line 19
def self.enabled?
  Origen.running_on_linux? && File.exist?(WKHTMLTOPDF)
end
new(options) click to toggle source
# File lib/origen_doc_helpers/pdf.rb, line 23
def initialize(options)
  @title = options[:pdf_title]
  @index = options[:index]
  @root = Pathname.new(options[:root])
  if @root.absolute?
    if File.exist?("#{Origen.root}/app/")
      @root = @root.relative_path_from(Pathname.new("#{Origen.root}/app/templates/web"))
    else
      @root = @root.relative_path_from(Pathname.new("#{Origen.root}/templates/web"))
    end
  end
  require 'nokogiri'
end
register(options) click to toggle source

This is called by the searchable doc layout template

# File lib/origen_doc_helpers/pdf.rb, line 10
def self.register(options)
  if options[:pdf_title] && enabled?
    @doc_pdfs ||= {}
    name = options[:pdf_title].to_s.symbolize
    @doc_pdfs[name] ||= new(options)
    @doc_pdfs[name].filename
  end
end

Public Instance Methods

before_deploy_site() click to toggle source

This is a callback handler to have the PDF creation invoked prior to deploying a pre-built website

# File lib/origen_doc_helpers/pdf.rb, line 39
def before_deploy_site
  create
end
create() click to toggle source
# File lib/origen_doc_helpers/pdf.rb, line 47
def create
  puts ''
  puts "Generating PDF: #{filename}..."
  puts ''
  create_topic_pages
  generate_pdf
  delete_topic_pages
end
create_topic_pages() click to toggle source
# File lib/origen_doc_helpers/pdf.rb, line 89
def create_topic_pages
  topic_dirs do |topic, pages, topic_dir|
    topic_page = "#{topic_dir}/topic_page.html"
    page_str = "<h1>#{topic}</h1>\n"
    pages.each do |page_path, _page_heading|
      page_file = page_path.to_s.split('_').last
      page_file = "#{topic_dir}/#{page_file}/index.html"
      doc = Nokogiri::HTML(File.read(page_file))
      page_str += doc.xpath('//article').to_html
      page_str += "\n"
    end
    File.open(topic_page, 'w') do |file|
      file.puts topic_wrapper_string.sub('SUB_TOPIC_CONTENT_HERE', page_str)
    end
  end
end
delete_topic_pages() click to toggle source
# File lib/origen_doc_helpers/pdf.rb, line 106
def delete_topic_pages
  topic_dirs do |_topic, _pages, topic_dir|
    FileUtils.rm_f("#{topic_dir}/topic_page.html")
  end
end
generate_pdf() click to toggle source
# File lib/origen_doc_helpers/pdf.rb, line 60
def generate_pdf
  cmd =  "#{WKHTMLTOPDF} --print-media-type "
  cmd += "--footer-line --footer-font-size 8 --footer-left 'Freescale Internal Use Only' --footer-right [page] "
  cmd += "--header-left '#{title} (#{version})' --header-line --header-font-size 8 "
  index.each do |topic, pages|
    dir = "#{Origen.root}/web/output/#{root}"
    if topic
      topic_dir = pages.keys.first.to_s.split('_').first
      file = "#{dir}/#{topic_dir}/topic_page.html"
      cmd += "#{file} "
    else
      pages.each do |page_path, _page_heading|
        file = "#{dir}/#{page_path}/index.html"
        cmd += "#{file} "
      end
    end
  end
  cmd += "#{pdf_output_dir}/#{filename}"
  system cmd
end
pdf_output_dir() click to toggle source
# File lib/origen_doc_helpers/pdf.rb, line 81
def pdf_output_dir
  @pdf_output_dir ||= begin
    dir = "#{Origen.root}/web/output/doc_helpers/pdfs"
    FileUtils.mkdir_p(dir) unless File.exist?(dir)
    dir
  end
end
topic_dirs() { |topic, pages, topic_dir| ... } click to toggle source
# File lib/origen_doc_helpers/pdf.rb, line 112
def topic_dirs
  index.each do |topic, pages|
    if topic
      topic_dir = pages.keys.first.to_s.split('_').first
      topic_dir = "#{Origen.root}/web/output/#{root}/#{topic_dir}"
      yield topic, pages, topic_dir
    end
  end
end
topic_wrapper_string() click to toggle source
# File lib/origen_doc_helpers/pdf.rb, line 122
def topic_wrapper_string
  if File.exist?("#{Origen.root}/app/")
    @topic_wrapper_string ||= File.read("#{Origen.root!}/app/templates/pdf/topic_wrapper.html")
  else
    @topic_wrapper_string ||= File.read("#{Origen.root!}/templates/pdf/topic_wrapper.html")
  end
end
version() click to toggle source
# File lib/origen_doc_helpers/pdf.rb, line 56
def version
  Origen.app.name == :origen ? Origen.version : Origen.app.version
end