|
|
@@ -1,60 +0,0 @@ |
|
|
|
require 'haml' |
|
|
|
require 'csv' |
|
|
|
require 'logger' |
|
|
|
|
|
|
|
class Petrify |
|
|
|
@@output_dir = '_site' |
|
|
|
@@working_dir = File.join(Dir.pwd, @@output_dir) |
|
|
|
@@views_dir = 'views' |
|
|
|
@@layout_fn = File.join(@@views_dir, 'layout.haml') |
|
|
|
|
|
|
|
# https://stackoverflow.com/questions/917566/ruby-share-logger-instance-among-module-classes#6768164 |
|
|
|
@@log = Logger.new($stdout) |
|
|
|
@@log.level = Logger::INFO |
|
|
|
|
|
|
|
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 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 |
|
|
|
|
|
|
|
def self.csv(path_items, filename, data) |
|
|
|
dir = create_path(path_items) |
|
|
|
fn = File.join(dir, filename + '.csv') |
|
|
|
|
|
|
|
csv_string = CSV.generate do |csv| |
|
|
|
csv << data.first.keys # header row |
|
|
|
data.each { |row| csv << row.values } |
|
|
|
end |
|
|
|
|
|
|
|
File.write(fn, csv_string) |
|
|
|
@@log.info fn |
|
|
|
end |
|
|
|
|
|
|
|
def self.setup |
|
|
|
# Recursively delete working directory to ensure no redundant files are left behind from previous builds. |
|
|
|
# FileUtils.rm_rf(@working_dir) |
|
|
|
Dir.mkdir(@@working_dir) unless File.directory?(@@working_dir) |
|
|
|
# Dir.chdir(@working_dir) |
|
|
|
|
|
|
|
# Copy `public` dir to output dir |
|
|
|
FileUtils.copy_entry('public', @@working_dir) |
|
|
|
end |
|
|
|
|
|
|
|
def self.create_path(path_items) |
|
|
|
dir = File.join(@@output_dir, path_items) |
|
|
|
FileUtils.mkdir_p(dir) |
|
|
|
@@log.debug dir |
|
|
|
dir |
|
|
|
end |
|
|
|
end |
|
|
|
|