class Expansions::TemplateVisitor

Constants

DOT_FILE_PATTERN

Attributes

file[R]
processors[R]

Public Class Methods

new(args = {}) click to toggle source
# File lib/expansions/template_visitor.rb, line 7
def initialize(args = {})
  @processors = args.fetch(:processor_registry, TemplateProcessors.instance)
  @file = args.fetch(:file, File)
end

Public Instance Methods

get_file_names(file_name) click to toggle source
# File lib/expansions/template_visitor.rb, line 26
def get_file_names(file_name)
    base_name = File.basename(file_name, File.extname(file_name))
    dir_name = File.dirname(file_name)
    generated_name = base_name.gsub(DOT_FILE_PATTERN, "") 
    generated_name = ".#{generated_name}" if (DOT_FILE_PATTERN =~ file_name) 
    output_file_name = File.join(dir_name, generated_name)
    settings_file = File.join(dir_name, "#{base_name}.settings")

    {
      settings_file: settings_file,
      output_file_name: output_file_name
    }
end
load_settings_file(settings_file) click to toggle source
# File lib/expansions/template_visitor.rb, line 40
def load_settings_file(settings_file)
  load settings_file if File.exist?(settings_file)
end
run_using(file_name) click to toggle source
# File lib/expansions/template_visitor.rb, line 12
def run_using(file_name)
  processor = processors.get_processor_for(file_name)
  names = get_file_names(file_name)
  load_settings_file(names[:settings_file])
  output = names[:output_file_name]
  file.delete(output) if file.exists?(output)

  begin
    processor.process(:input => file_name,:output => output)
  rescue Exception => e
    raise "Error processing template file: #{file_name}"
  end
end