Sha256: 0dbaf9a2c7faf4264a1f82b7949b390a6633dc72d86e284b8492aae51cd610b8

Contents?: true

Size: 1.23 KB

Versions: 29

Compression:

Stored size: 1.23 KB

Contents

class Lono::Template
  module Evaluate
    def evaluate_template_path(path)
      return unless File.exist?(path)

      begin
        instance_eval(File.read(path), path)
      rescue Exception => e
        template_evaluation_error(e)
        puts "\nFull error:"
        raise
      end
    end

    # Prints out a user friendly task_definition error message
    def template_evaluation_error(e)
      lines = e.backtrace.reject { |l| l.include?("/lib/lono/") }
      error_info = lines.first
      path, line_no, _ = error_info.split(':')
      line_no = line_no.to_i
      puts "Error evaluating #{path}:".color(:red)
      puts e.message
      puts "Here's the line in #{path} with the error:\n\n"

      contents = IO.read(path)
      content_lines = contents.split("\n")
      context = 5 # lines of context
      top, bottom = [line_no-context-1, 0].max, line_no+context-1
      spacing = content_lines.size.to_s.size
      content_lines[top..bottom].each_with_index do |line_content, index|
        line_number = top+index+1
        if line_number == line_no
          printf("%#{spacing}d %s\n".color(:red), line_number, line_content)
        else
          printf("%#{spacing}d %s\n", line_number, line_content)
        end
      end
    end
  end
end

Version data entries

29 entries across 29 versions & 1 rubygems

Version Path
lono-7.5.2 lib/lono/template/evaluate.rb
lono-7.5.1 lib/lono/template/evaluate.rb
lono-7.5.0 lib/lono/template/evaluate.rb
lono-7.4.11 lib/lono/template/evaluate.rb
lono-7.4.10 lib/lono/template/evaluate.rb
lono-7.4.9 lib/lono/template/evaluate.rb
lono-7.4.8 lib/lono/template/evaluate.rb
lono-7.4.7 lib/lono/template/evaluate.rb
lono-7.4.6 lib/lono/template/evaluate.rb
lono-7.4.5 lib/lono/template/evaluate.rb
lono-7.4.4 lib/lono/template/evaluate.rb
lono-7.4.3 lib/lono/template/evaluate.rb
lono-7.4.2 lib/lono/template/evaluate.rb
lono-7.4.1 lib/lono/template/evaluate.rb
lono-7.4.0 lib/lono/template/evaluate.rb
lono-7.3.2 lib/lono/template/evaluate.rb
lono-7.3.1 lib/lono/template/evaluate.rb
lono-7.3.0 lib/lono/template/evaluate.rb
lono-7.2.3 lib/lono/template/evaluate.rb
lono-7.2.2 lib/lono/template/evaluate.rb