Browse Source

Extract Petrify class into its own gem

adrianshort/petrify
main
Adrian Short 5 years ago
parent
commit
04205641b7
5 changed files with 10 additions and 63 deletions
  1. +1
    -1
      Gemfile
  2. +8
    -1
      Gemfile.lock
  3. +0
    -1
      bin/petrify
  4. +0
    -60
      lib/petrify.rb
  5. +1
    -0
      lib/site.rb

+ 1
- 1
Gemfile View File

@@ -3,4 +3,4 @@ source 'https://rubygems.org'
ruby '2.3.1'

gem 'scraperwiki', :git => 'https://github.com/openaustralia/scraperwiki-ruby/', :branch => 'morph_defaults'
gem 'haml'
gem 'petrify', :git => 'https://github.com/adrianshort/petrify/'

+ 8
- 1
Gemfile.lock View File

@@ -1,3 +1,10 @@
GIT
remote: https://github.com/adrianshort/petrify/
revision: 4f949558e20767fc88acd18e523c2e95a4173475
specs:
petrify (0.1.0)
haml

GIT
remote: https://github.com/openaustralia/scraperwiki-ruby/
revision: fc50176812505e463077d5c673d504a6a234aa78
@@ -24,7 +31,7 @@ PLATFORMS
ruby

DEPENDENCIES
haml
petrify!
scraperwiki!

RUBY VERSION


+ 0
- 1
bin/petrify View File

@@ -1,7 +1,6 @@
#!/usr/bin/env ruby

require_relative '../lib/helpers'
require_relative '../lib/petrify'
require_relative '../lib/site'

Petrify.setup


+ 0
- 60
lib/petrify.rb View File

@@ -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


+ 1
- 0
lib/site.rb View File

@@ -1,4 +1,5 @@
require 'scraperwiki'
require 'petrify'

class Site
def self.generate


Loading…
Cancel
Save