Class: RDaux::Web::Site::Generator

Inherits:
Object
  • Object
show all
Includes:
Notifier
Defined in:
lib/rdaux/web/site/generator.rb

Instance Method Summary collapse

Methods included from Notifier

#add_listener, #broadcast, #notifier_initialize

Constructor Details

#initialize(markdown, views_dir, static_dir, ditaa_jar, target_dir) ⇒ Generator

Returns a new instance of Generator.



10
11
12
13
14
15
16
17
18
19
# File 'lib/rdaux/web/site/generator.rb', line 10

def initialize(markdown, views_dir, static_dir, ditaa_jar, target_dir)
  @markdown   = markdown
  @views_dir  = views_dir
  @static_dir = static_dir
  @ditaa_jar  = ditaa_jar
  @target_dir = target_dir

  @cached_templates = {}
  notifier_initialize
end

Instance Method Details

#generate_static(website) ⇒ Object



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/rdaux/web/site/generator.rb', line 21

def generate_static(website)
  with_duplicate_static_dir do |dir|
    File.open("#{dir}/index.html", 'w+') do |f|
      f.write(erb(:site, :locals => {:site => website}))
    end

    Dir.glob("#{dir}/img/ditaa/*.txt").each do |txt_path|
      Process::waitpid(POSIX::Spawn.spawn("java", '-jar', @ditaa_jar, txt_path))
      File.unlink(txt_path)
    end

    if File.directory?(@target_dir)
      FileUtils.cp_r("#{dir}/.", @target_dir)
    else
      FileUtils.mv(dir, @target_dir)
    end
  end
end