class Hyaslide::SlideLoader

Attributes

slides[R]

Public Class Methods

load_slide(name) click to toggle source
# File lib/hyaslide/slide_loader.rb, line 33
def self.load_slide(name)
  File.open("#{src_path(name)}/pages.rb", "w+") do |f|
    data = File.read("data/#{name}/slide.md")
    markdown = Redcarpet::Markdown.new(Hyaslide::Renderer.create(name), fenced_code_blocks: true)
    f.write markdown.render(data)
  end

  if File.exist?("data/#{name}/script.md")
    File.open("#{script_path(name)}/script.html", "w+") do |f|
      script = File.read("data/#{name}/script.md")
      markdown = Redcarpet::Markdown.new(Redcarpet::Render::HTML.new(hard_wrap: true), autolink: true, fenced_code_blocks: true)
      f.write markdown.render(script)
    end
  end

  File.open("#{src_path(name)}/app.rb", "w+") do |f|
    f.write Tilt::StringTemplate.new(File.expand_path('../../../template/app.rb', __FILE__)).render(Object.new, name: name)
  end

  File.open("#{src_path(name)}/script.rb", "w+") do |f|
    f.write Tilt::StringTemplate.new(File.expand_path('../../../template/script.rb', __FILE__)).render(Object.new, name: name)
  end
end
new() click to toggle source
# File lib/hyaslide/slide_loader.rb, line 13
def initialize
  @slides = []
end
script_path(name) click to toggle source
# File lib/hyaslide/slide_loader.rb, line 61
def self.script_path(name)
  "app/scripts/#{name}"
end
src_path(name) click to toggle source
# File lib/hyaslide/slide_loader.rb, line 57
def self.src_path(name)
  "app/slides/#{name}"
end

Public Instance Methods

add_slide(name) click to toggle source
# File lib/hyaslide/slide_loader.rb, line 65
def add_slide(name)
  init_slide(name)

  EM.defer do
    FSSM.monitor("data/#{name}", %w(slide.md script.md)) do
      update {|base, relative| Hyaslide::SlideLoader.load_slide(name) }
      delete {|base, relative|}
      create {|base, relative|}
    end
  end
end
init_slide(name) click to toggle source
# File lib/hyaslide/slide_loader.rb, line 17
def init_slide(name)
  Dir.mkdir('app/slides') unless Dir.exist?('app/slides')
  Dir.mkdir('app/scripts') unless Dir.exist?('app/scripts')
  Dir.mkdir(SlideLoader.src_path(name)) unless Dir.exist?(SlideLoader.src_path(name))
  Dir.mkdir(SlideLoader.script_path(name)) unless Dir.exist?(SlideLoader.script_path(name))

  File.foreach("data/#{name}/slide.md") do |line|
    if line =~ /\A# (.+)/
      @slides << {name: name, title: $1}
      break
    end
  end

  SlideLoader.load_slide(name)
end