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


48
49
50
51
52
53
54
# File 'lib/contracts/formatters.rb', line 48

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


76
77
78
# File 'lib/contracts/formatters.rb', line 76

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.


58
59
60
# File 'lib/contracts/formatters.rb', line 58

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.


67
68
69
70
71
72
73
74
# File 'lib/contracts/formatters.rb', line 67

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.


81
82
83
# File 'lib/contracts/formatters.rb', line 81

def to_s
  inspect
end