Class: Keydown::Tasks

Inherits:
Thor
  • Object
show all
Includes:
Thor::Actions
Defined in:
lib/keydown/tasks/base.rb,
lib/keydown/tasks/slides.rb,
lib/keydown/tasks/generate.rb

Constant Summary collapse

@@source_root =
File.join(File.dirname(__FILE__), '..', '..', '..')

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#presentation_nameObject (readonly)

Returns the value of attribute presentation_name.



3
4
5
# File 'lib/keydown/tasks/generate.rb', line 3

def presentation_name
  @presentation_name
end

Class Method Details

.source_rootObject



7
8
9
# File 'lib/keydown/tasks/base.rb', line 7

def self.source_root
  @@source_root
end

.template_dirObject



11
12
13
# File 'lib/keydown/tasks/base.rb', line 11

def self.template_dir
  @@template_dir
end

Instance Method Details

#generate(name) ⇒ Object



7
8
9
10
11
12
13
14
# File 'lib/keydown/tasks/generate.rb', line 7

def generate(name)
  @presentation_name = name # instance variable used when the directory is copied
  directory "templates/generate", name

  copy_file "templates/generate/deck.js/themes/transition/horizontal-slide.css", "#{name}/css/horizontal-slide.css"
  copy_file "templates/generate/deck.js/themes/style/swiss.css", "#{name}/css/swiss.css"
  copy_file "templates/generate/deck.js/extensions/codemirror/themes/default.css", "#{name}/css/default.css"
end

#slides(file) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/keydown/tasks/slides.rb', line 6

def slides(file)

  file += '.md' unless file.match(/\.md$/)

  unless File.exist?(file)
    say "#{file} not found. Please call with a KeyDown Markdown file: keydown slides my_file.md", :red
    return
  end

  @@template_dir = File.join(Keydown::Tasks.source_root, 'templates', 'deck.js')

  say "Creating Keydown presentation from #{file}", :yellow

  slide_deck = SlideDeck.new(File.new(file).read)
  backgrounds = slide_deck.slides.collect do |slide|
    slide.background_image unless slide.background_image.empty?
  end.compact

  css_template = File.new(File.join(Tasks.template_dir, '..', 'keydown.css.erb'))
  create_file 'css/keydown.css', :force => true do
    ERB.new(css_template.read).result(binding)
  end

  presentation = file.gsub('md', 'html')

  create_file presentation, :force => true do
    slide_deck.to_html
  end
end