Class: Hamlit::HamlHelpers::ErrorReturn

Inherits:
Object
  • Object
show all
Defined in:
lib/hamlit/parser/haml_helpers.rb,
lib/hamlit/parser/haml_xss_mods.rb

Overview

An object that raises an error when #to_s is called. It’s used to raise an error when the return value of a helper is used when it shouldn’t be.

Instance Method Summary collapse

Constructor Details

#initialize(method) ⇒ ErrorReturn

Returns a new instance of ErrorReturn.



17
18
19
20
21
22
23
# File 'lib/hamlit/parser/haml_helpers.rb', line 17

def initialize(method)
  @message = <<MESSAGE
#{method} outputs directly to the Haml template.
Disregard its return value and use the - operator,
or use capture_haml to get the value as a String.
MESSAGE
end

Instance Method Details

#inspectString

Returns A human-readable string representation.

Returns:

  • (String)

    A human-readable string representation



48
49
50
# File 'lib/hamlit/parser/haml_helpers.rb', line 48

def inspect
  "::Hamlit::HamlHelpers::ErrorReturn(#{@message.inspect})"
end

#to_sObject Also known as: html_safe, html_safe?, html_safe!

Raises an error.

Raises:

  • (Haml::Error)

    The error



28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/hamlit/parser/haml_helpers.rb', line 28

def to_s
  raise ::Hamlit::HamlError.new(@message)
rescue ::Hamlit::HamlError => e
  e.backtrace.shift

  # If the ErrorReturn is used directly in the template,
  # we don't want Haml's stuff to get into the backtrace,
  # so we get rid of the format_script line.
  #
  # We also have to subtract one from the Haml line number
  # since the value is passed to format_script the line after
  # it's actually used.
  if e.backtrace.first =~ /^\(eval\):\d+:in `format_script/
    e.backtrace.shift
    e.backtrace.first.gsub!(/^\(haml\):(\d+)/) {|s| "(haml):#{$1.to_i - 1}"}
  end
  raise e
end