class RDaux::Web::Site::Generator
Public Class Methods
new(markdown, views_dir, static_dir, ditaa_jar, target_dir)
click to toggle source
# 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
Public Instance Methods
generate_static(website)
click to toggle source
# 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
Private Instance Methods
erb(view, options)
click to toggle source
# File lib/rdaux/web/site/generator.rb, line 51 def erb(view, options) unless @cached_templates.has_key?(view) @cached_templates[view] = Tilt[:erb].new("#{@views_dir}/#{view}.erb", 1, { :default_encoding => 'UTF-8' }) end @cached_templates[view].render(self, options.fetch(:locals, {})) end
render_markdown(markup)
click to toggle source
# File lib/rdaux/web/site/generator.rb, line 60 def render_markdown(markup) @markdown.render(markup) end
with_duplicate_static_dir() { |dir| ... }
click to toggle source
# File lib/rdaux/web/site/generator.rb, line 42 def with_duplicate_static_dir dir = Dir.mktmpdir('rdaux') FileUtils.cp_r("#{@static_dir}/.", dir) yield(dir) ensure FileUtils.remove_entry_secure(dir) if File.directory?(dir) end