class BetterErrors::InspectableValue

Attributes

original_value[R]

Public Class Methods

new(value) click to toggle source
# File lib/better_errors/inspectable_value.rb, line 8
def initialize(value)
  @original_value = value
end

Public Instance Methods

to_html() click to toggle source
# File lib/better_errors/inspectable_value.rb, line 12
def to_html
  raise ValueLargerThanConfiguredMaximum unless value_small_enough_to_inspect?
  value_as_html
end

Private Instance Methods

value() click to toggle source
# File lib/better_errors/inspectable_value.rb, line 25
def value
  @value ||= begin
    if original_value.respond_to? :inspect
      original_value.inspect
    else
      original_value
    end
  end
end
value_as_html() click to toggle source
# File lib/better_errors/inspectable_value.rb, line 21
def value_as_html
  @value_as_html ||= CGI.escapeHTML(value)
end
value_small_enough_to_inspect?() click to toggle source
# File lib/better_errors/inspectable_value.rb, line 35
def value_small_enough_to_inspect?
  return true if BetterErrors.maximum_variable_inspect_size.nil?

  if defined?(ObjectSpace) && defined?(ObjectSpace.memsize_of) && ObjectSpace.memsize_of(value)
    ObjectSpace.memsize_of(value) <= BetterErrors.maximum_variable_inspect_size
  else
    value_as_html.length <= BetterErrors.maximum_variable_inspect_size
  end
end