Exception: TemplateError

Inherits:
StandardError
  • Object
show all
Defined in:
lib/texas/template/template_error.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(template, message, original = nil) ⇒ TemplateError

Returns a new instance of TemplateError.



4
5
6
7
8
# File 'lib/texas/template/template_error.rb', line 4

def initialize(template, message, original = nil)
  super(message)
  self.template = template
  self.original = original
end

Instance Attribute Details

#originalObject

Returns the value of attribute original.



2
3
4
# File 'lib/texas/template/template_error.rb', line 2

def original
  @original
end

#templateObject

Returns the value of attribute template.



2
3
4
# File 'lib/texas/template/template_error.rb', line 2

def template
  @template
end

Instance Method Details

#filenameObject



10
11
12
# File 'lib/texas/template/template_error.rb', line 10

def filename
  template.filename.gsub(template.build_path, '')
end

#messageObject



31
32
33
# File 'lib/texas/template/template_error.rb', line 31

def message
  super + "\n#{origin}".cyan
end

#originObject



26
27
28
29
# File 'lib/texas/template/template_error.rb', line 26

def origin
  parse_backtrace_for_origin
  "#{filename}:#{@line_number}:in `#{@method_name}'"
end

#parse_backtrace_for_originObject



14
15
16
17
18
19
20
21
22
23
24
# File 'lib/texas/template/template_error.rb', line 14

def parse_backtrace_for_origin
  arr = original ? original.backtrace : backtrace
  arr.each_with_index do |line, index| 
    if line =~ /\(erb\):(\d+)/ 
      @line_number = $1.to_i
      line_before = backtrace[index-1]
      @method_name = line_before =~ /\d+:in\s+`([^\)]+)'/ && $1
      return
    end
  end
end