module Petrify
Constants
- VERSION
Public Class Methods
create_path(path_items)
click to toggle source
# File lib/petrify.rb, line 69 def self.create_path(path_items) dir = File.join(@@output_dir, path_items) FileUtils.mkdir_p(dir) @@log.debug dir dir end
csv(path_items, filename, data)
click to toggle source
Write a CSV file from an array of hashes (or an empty array)
# File lib/petrify.rb, line 33 def self.csv(path_items, filename, data) dir = create_path(path_items) fn = File.join(dir, filename + '.csv') if data.size > 0 csv_string = CSV.generate do |csv| csv << data.first.keys # header row data.each { |row| csv << row.values } end else # There's no data so write an empty file (no header row either) csv_string = '' end File.write(fn, csv_string) @@log.info fn end
file(path_items, filename, data)
click to toggle source
Write an arbitrary file to output (eg a JSON file)
# File lib/petrify.rb, line 52 def self.file(path_items, filename, data) dir = create_path(path_items) fn = File.join(dir, filename) File.write(fn, data) @@log.info fn end
page(path_items, template, locals = {})
click to toggle source
Write an HTML page using a specified template and optional data
# File lib/petrify.rb, line 17 def self.page(path_items, template, locals = {}) dir = create_path(path_items) fn = File.join(dir, 'index.html') # https://stackoverflow.com/questions/6125265/using-layouts-in-haml-files-independently-of-rails html = Haml::Engine.new(File.read(@@layout_fn)).render(Object.new, locals) do Haml::Engine.new(File.read(File.join(@@views_dir, "#{template}.haml"))).render(Object.new, locals) end File.write(fn, html) @@log.info fn # TODO - add page to sitemap.xml or sitemap.txt # https://support.google.com/webmasters/answer/183668?hl=en&ref_topic=4581190 end
setup()
click to toggle source
# File lib/petrify.rb, line 59 def self.setup # Recursively delete working directory to ensure no redundant files are left behind from previous builds. # But preserve dot-files (especially .git directory) FileUtils.rm_r(Dir.glob(File.join(@@working_dir, '*'))) Dir.mkdir(@@working_dir) unless File.directory?(@@working_dir) # Copy `public` dir to output dir FileUtils.copy_entry('public', @@working_dir) end