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