class Blab::Formatter

Constants

DEFAULT_MAX_LENGTH
ELLIPSIS

Attributes

max_length[R]

Public Class Methods

new(max_length = DEFAULT_MAX_LENGTH) click to toggle source
# File lib/blab/formatter.rb, line 10
def initialize(max_length = DEFAULT_MAX_LENGTH)
  @max_length = max_length
end

Public Instance Methods

format(object) click to toggle source
# File lib/blab/formatter.rb, line 14
def format(object)
  formatted = prepare_for_inspection(object).inspect
  return formatted if formatted.length < max_length

  beginning = truncate(formatted, 0, max_length / 2)
  ending = truncate(formatted, -max_length / 2, -1)
  "#{beginning}#{ELLIPSIS}#{ending}"
end
prepare_array(array) click to toggle source
# File lib/blab/formatter.rb, line 34
def prepare_array(array)
  array.map { |element| prepare_for_inspection(element) }
end
prepare_for_inspection(object) click to toggle source
# File lib/blab/formatter.rb, line 23
def prepare_for_inspection(object)
  case object
  when Array
    prepare_array(object)
  when Hash
    prepare_hash(object)
  else
    object
  end
end
prepare_hash(input_hash) click to toggle source
# File lib/blab/formatter.rb, line 38
def prepare_hash(input_hash)
  input_hash.inject({}) do |output_hash, key_and_value|
    key, value = key_and_value.map { |element| prepare_for_inspection(element) }
    output_hash[key] = value
    output_hash
  end
end

Private Instance Methods

truncate(str, start_ind, end_ind) click to toggle source
# File lib/blab/formatter.rb, line 48
def truncate(str, start_ind, end_ind)
  str[start_ind..end_ind].sub(/\e\[\d+$/, '')
end