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



40
41
42
# File 'lib/contracts/formatters.rb', line 40

def self.create(value, full = true)
  inspector_klass(value).new(value, full)
end

.inspector_klass(value) ⇒ Object



44
45
46
47
# File 'lib/contracts/formatters.rb', line 44

def self.inspector_klass(value)
  return ClassInspectWrapper if value.class == Class
  ObjectInspectWrapper
end

Instance Method Details

#delim(value) ⇒ Object



69
70
71
# File 'lib/contracts/formatters.rb', line 69

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

#initialize(value, full) ⇒ Object

Parameters:

  • full (Boolean)

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



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

def initialize(value, full)
  @value = value
  @full  = 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.



61
62
63
64
65
66
67
# File 'lib/contracts/formatters.rb', line 61

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 erroneous quotes in output that plain inspect includes.



74
75
76
# File 'lib/contracts/formatters.rb', line 74

def to_s
  inspect
end