sentientmonkey/flue

View on GitHub
lib/flue/renderer.rb

Summary

Maintainability
A
0 mins
Test Coverage
require 'fileutils'
require 'yaml'

module Flue
  class Renderer
    include Flue::Benchmark
    include Flue::Logger

    attr_reader :metadata, :filter_register, :dir, :basefile_class

    def initialize(metadata = Metadata.new, filter_register = FilterRegister, dir = Dir, basefile_class = Basefile)
      @metadata = metadata
      @filter_register = filter_register
      @dir = dir
      @basefile_class = basefile_class
    end

    def files
      dir["site/[^_]*"] - dir["site/*.yml"]
    end

    def basefiles
      files.map do |file|
        basefile_class.new(file)
      end
    end

    def render_files
      basefiles.each do |basefile|
        render_file basefile
      end
    end

    def render_file(basefile)
      open(basefile.outfile_name, "w") do |file|
        benchmark "#{basefile.basename} => #{basefile.outfile_name}" do
          options = {:variables => basefile.variables}
          file.write filter_register.run(basefile.exts, basefile.content, options)
        end
      end
      metadata.update_checksum(basefile)
    end

  end
end