module ScriptLocator

Public Instance Methods

errors() click to toggle source
# File lib/script_executor/script_locator.rb, line 9
def errors
  @errors ||= []
end
evaluate_script_body(content, env, type=:erb) click to toggle source
# File lib/script_executor/script_locator.rb, line 27
def evaluate_script_body(content, env, type=:erb)
  content = content.join("\n") if content.kind_of? Array

  case type
    when :erb
      template = ERB.new content
      template.result(env).strip
    else
      interpolator = TextInterpolator.new

      result = interpolator.interpolate content, env

      if interpolator.errors.size > 0
        puts interpolator.errors

        @errors = interpolator.errors
      end

      result
  end
end
scripts(file) click to toggle source
# File lib/script_executor/script_locator.rb, line 13
def scripts(file)
  data = extract_data file

  begin
    scripts_parser = ScriptsParser.new
    parsed_content = scripts_parser.parse data

    transformer = ScriptsTransform.new
    transformer.transform(parsed_content)
  rescue Parslet::ParseFailed => failure
    puts failure.cause.ascii_tree
  end
end

Private Instance Methods

extract_data(file) click to toggle source
# File lib/script_executor/script_locator.rb, line 51
def extract_data(file)
  content = File.read(file)

  index = content.index("__END__\n")

  index.nil? ? content : content[index+9..-1]
end