Module: Contracts::Formatters::InspectWrapper

Included in:
ClassInspectWrapper, ObjectInspectWrapper
Defined in:
lib/contracts/formatters.rb

Overview

A wrapper class to produce correct inspect behaviour for different contract values - constants, Class contracts, instance contracts etc.

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.create(value, full: true) ⇒ ClassInspectWrapper, ObjectInspectWrapper

InspectWrapper is a factory, will never be an instance



51
52
53
54
55
56
57
# File 'lib/contracts/formatters.rb', line 51

def self.create(value, full: true)
  if value.instance_of?(Class)
    ClassInspectWrapper
  else
    ObjectInspectWrapper
  end.new(value, full)
end

Instance Method Details

#delim(value) ⇒ Object



79
80
81
# File 'lib/contracts/formatters.rb', line 79

def delim(value)
  @full ? "(#{value})" : "#{value}"
end

#initialize(value, full) ⇒ Object

Parameters:

  • full (Boolean)

    if false only unique ‘to_s` values will be output, non unique values become empty string.



61
62
63
# File 'lib/contracts/formatters.rb', line 61

def initialize(value, full)
  @value, @full = value, full
end

#inspectObject

Inspect different types of contract values. Contracts module prefix will be removed from classes. Custom to_s messages will be wrapped in round brackets to differentiate from standard Strings. Primitive values e.g. 42, true, nil will be left alone.



70
71
72
73
74
75
76
77
# File 'lib/contracts/formatters.rb', line 70

def inspect
  return "" unless full?
  return @value.inspect if empty_val?
  return @value.to_s if plain?
  return delim(@value.to_s) if useful_to_s?

  useful_inspect
end

#to_sObject

Eliminates eronious quotes in output that plain inspect includes.



84
85
86
# File 'lib/contracts/formatters.rb', line 84

def to_s
  inspect
end