class Wright::Util::FileRenderer

File renderer.

@example

filename = 'template.erb'
template = "foo is <%= foo %>."
hash = { foo: :bar }
File.write(filename, template)
renderer = Wright::Util::FileRenderer.new(hash)
renderer.render(filename)
# => "foo is bar."

Constants

FILE_RENDERERS

Attributes

hash[R]

Public Class Methods

new(hash) click to toggle source

Initializes a FileTemplate. @param hash [Hash] the attribute hash of the template

# File lib/wright/util/file_renderer.rb, line 19
def initialize(hash)
  @hash = hash
end

Public Instance Methods

render(filename) click to toggle source

Renders a template file. @param filename [String] the filename of the template @raise [ArgumentError] if the given file type is not supported

# File lib/wright/util/file_renderer.rb, line 26
def render(filename)
  renderer = renderer_for_file(filename)
  template = ::File.read(::File.expand_path(filename))
  renderer.render(template)
end

Private Instance Methods

renderer_for_file(filename) click to toggle source
# File lib/wright/util/file_renderer.rb, line 41
def renderer_for_file(filename)
  file_extension = ::File.extname(filename)
  rendering_class = FILE_RENDERERS[file_extension]
  unknown_template_type = "unknown template type '#{file_extension}'"
  fail ArgumentError, unknown_template_type unless rendering_class
  rendering_class.new(hash)
end