class Copypasta::Entry::ERB

Attributes

locals[R]
source[R]

Public Class Methods

new(filename, directory:, locals: {}, source: nil, only_if: nil) click to toggle source
# File lib/copypasta/entry/erb.rb, line 11
def initialize(filename, directory:, locals: {}, source: nil, only_if: nil)
  raise "filename must be a string." unless filename.is_a?(String)
  raise "only_if must be null or a Proc." if !only_if.nil? && !only_if.is_a?(Proc)
  raise "locals must be a Hash." unless locals.is_a?(Hash)

  @filename = filename.dup.freeze
  @directory = directory.dup.freeze
  @locals = locals.dup.freeze
  @source = (source || "#{filename}.erb").dup.freeze
  @only_if = only_if
end

Private Instance Methods

do_apply(destination, parameters) click to toggle source
# File lib/copypasta/entry/erb.rb, line 25
def do_apply(destination, parameters)
  template = Tilt::ERBTemplate.new("#{@directory}/#{@source}")
  output = template.render(Object.new, @locals.merge(parameters: parameters))

  IO.write(target_file(destination), output)
end