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