class Photish::Render::Site

Attributes

config[R]

Public Class Methods

new(config) click to toggle source
# File lib/photish/render/site.rb, line 4
def initialize(config)
  @config = config
end

Public Instance Methods

all_for(collection) click to toggle source
# File lib/photish/render/site.rb, line 8
def all_for(collection)
  delete_unknown_files(collection.all_url_parts)
  delete_empty_folders
  move_non_ignored_site_contents
  collection_template.render(collection)
  render_asset_pages(collection)
end

Private Instance Methods

asset_page_paths() click to toggle source
# File lib/photish/render/site.rb, line 35
def asset_page_paths
  Dir["#{site_dir}/**/*.#{page_extension}"].reject do |dir|
    dir.include? "#{File::SEPARATOR}_"
  end
end
collection_template() click to toggle source
# File lib/photish/render/site.rb, line 68
def collection_template
  Template.new(layout_file,
               template_collection_file,
               output_dir)
end
delete_empty_folders() click to toggle source
# File lib/photish/render/site.rb, line 47
def delete_empty_folders
  Dir["#{output_dir}/**/"].reverse_each do |d|
    FileUtils.rm_rf(d) if empty_dir?(d)
  end
end
delete_unknown_files(url_parts) click to toggle source
# File lib/photish/render/site.rb, line 59
def delete_unknown_files(url_parts)
  keep = Set.new(url_parts.map { |url| File.join(output_dir, url) }
                          .map(&:to_s))
  files_to_delete = Dir["#{output_dir}/**/*"].select do |f|
    File.file?(f) && !keep.include?(f)
  end
  FileUtils.rm_rf(files_to_delete)
end
empty_dir?(dir) click to toggle source
# File lib/photish/render/site.rb, line 53
def empty_dir?(dir)
  Dir.entries(dir)
     .reject { |d| File.basename(d).starts_with?('.') }
     .empty?
end
layout_file() click to toggle source
# File lib/photish/render/site.rb, line 78
def layout_file
  File.join(site_dir, templates_dir, templates.layout)
end
move_non_ignored_site_contents() click to toggle source
# File lib/photish/render/site.rb, line 41
def move_non_ignored_site_contents
  FileUtils.mkdir_p(output_dir)
  FileUtils.cp_r(non_ignored_site_contents,
                 File.join([output_dir, url.base].compact))
end
non_ignored_site_contents() click to toggle source
# File lib/photish/render/site.rb, line 74
def non_ignored_site_contents
  Dir.glob(File.join(site_dir, '[!_]*'))
end
render_asset_pages(collection) click to toggle source
# File lib/photish/render/site.rb, line 28
def render_asset_pages(collection)
  AssetPage.new(collection,
                output_dir,
                site_dir,
                url).render(asset_page_paths)
end
template_collection_file() click to toggle source
# File lib/photish/render/site.rb, line 82
def template_collection_file
  File.join(site_dir, templates_dir, templates.collection)
end
templates_dir() click to toggle source
# File lib/photish/render/site.rb, line 86
def templates_dir
  '_templates'
end