class Estatic::Generator

Public Class Methods

new() click to toggle source
# File lib/estatic/generator.rb, line 3
def initialize
  site_path = "#{Dir.pwd}/estatic_site".freeze

  unless File.directory?(site_path)
    FileUtils.mkdir_p site_path
  end
end

Public Instance Methods

run() click to toggle source
# File lib/estatic/generator.rb, line 11
def run
  generate_home_page if config.featured

  config.categories.each do |config_category|
    category = fetch_category(config_category)
    generate_product_listings_pages(category)

    unless category.has_subcategories?
      generate_product_pages(category) if config.include_product_page
    else
      category.subcategories.each do |subcategory|
        generate_product_listings_pages(subcategory)
        generate_product_pages(subcategory) if config.include_product_page
      end
    end
  end

  copy_assets_folder
end

Private Instance Methods

assets() click to toggle source
# File lib/estatic/generator.rb, line 54
def assets
  Dir.chdir('blueprints') do
    Dir.glob('*').select { |f| File.directory?(f) && !%w(csv shared).include?(f) }
  end
end
config() click to toggle source
# File lib/estatic/generator.rb, line 33
def config
  @config ||= Estatic.configuration
end
copy_assets_folder() click to toggle source
# File lib/estatic/generator.rb, line 47
def copy_assets_folder
  assets.each do |asset|
    asset_folder = "#{config.project_path}/blueprints/#{asset}/"
    FileUtils.cp_r asset_folder, "#{config.estatic_site_path}/#{asset}" if Dir.glob(asset_folder).any?
  end
end
fetch_category(category) click to toggle source
# File lib/estatic/generator.rb, line 37
def fetch_category(category)
  if category.is_a? Hash
    category_name = category.keys.first.to_s
    subcategories = category.values.first
    Category.new(category_name, subcategories)
  else
    Category.new(category)
  end
end
generate_home_page() click to toggle source
# File lib/estatic/generator.rb, line 60
def generate_home_page
  Estatic.logger.info 'Generating home page'
  featured = Category.new(config.featured)
  home_page = HomePage.new(featured)
  PageGenerator.new(home_page, config.estatic_site_path).generate
end
generate_product_listings_pages(resource) click to toggle source
# File lib/estatic/generator.rb, line 67
def generate_product_listings_pages(resource)
  Estatic.logger.info "Generating `#{resource.proper_name}`"
  (1..resource.total_chunks).each do |page_number|
    product_listings_page = ProductListingsPage.new(resource, page_number)
    Estatic.logger.info "- page #{page_number}"
    PageGenerator.new(product_listings_page, resource.directory).generate
  end
end
generate_product_pages(resource) click to toggle source
# File lib/estatic/generator.rb, line 76
def generate_product_pages(resource)
  resource.products.each do |product|
    product_page = ProductPage.new(resource, product)
    Estatic.logger.info "Generating `#{product.name}` page"
    PageGenerator.new(product_page, resource.directory).generate
  end
end