class Gibier::StaticGenerator

Public Class Methods

new(data_dir, target_dir) click to toggle source
# File lib/gibier/static_generator.rb, line 5
def initialize(data_dir, target_dir)
  @data_dir = data_dir
  @target_dir = target_dir
  @slide_loader = Gibier::SlideLoader.new
end

Public Instance Methods

generate_page(name, assets_path = 'assets', slide_dir = nil) click to toggle source
# File lib/gibier/static_generator.rb, line 20
def generate_page(name, assets_path = 'assets', slide_dir = nil)
  @slide_loader.init_slide(name)
  src_dir = "#{@data_dir}/#{name}"

  slide_dir =  "#{@target_dir}/#{name}" unless slide_dir
  FileUtils.mkdir_p slide_dir
  slide_haml = File.expand_path('../views/slide.haml', @data_dir)
  convert_html(slide_haml, "#{slide_dir}/index.html", slide_name: name, static: true, assets_path: assets_path)

  assets_dir = "#{@target_dir}/assets/#{name}"
  FileUtils.mkdir_p assets_dir

  FileUtils.cp_r("#{src_dir}/css", assets_dir)
  FileUtils.cp_r("#{src_dir}/images", assets_dir)

  js_dir =  "#{@target_dir}/assets/#{name}/javascripts"
  FileUtils.mkdir_p js_dir
  build(name, "#{js_dir}/application.js")
end
generate_pages(assets_path = 'assets') click to toggle source
# File lib/gibier/static_generator.rb, line 11
def generate_pages(assets_path = 'assets')
  Gibier::SlideHelper.each_slides(@data_dir) do |name|
    generate_page(name, assets_path)
  end

  convert_html(File.expand_path('../views/index.haml', @data_dir), "docs/index.html", slides: @slide_loader.slides)
  FileUtils.cp_r(File.expand_path('../assets', @data_dir), "docs")
end

Private Instance Methods

build(name, filename) click to toggle source
# File lib/gibier/static_generator.rb, line 42
def build(name, filename)
  builder = Opal::Builder.new

  use_gem(builder, 'opal-router', 'opal')

  builder.append_paths './app'
  builder.use_gem 'hyalite'
  builder.use_gem 'opal-websocket'
  builder.use_gem 'gibier'
  builder.build "./app/slides/#{name}/app.rb"

  File.open(filename, 'w') do |file|
    file.write builder.to_s
  end

end
use_gem(builder, name, opal_path) click to toggle source
# File lib/gibier/static_generator.rb, line 59
def use_gem(builder, name, opal_path)
  spec = Gem::Specification.find_by_name name
  lib_path = Pathname.new spec.full_require_paths.first
  opal_path = lib_path.parent + opal_path
  builder.append_paths opal_path.to_s
end