Module: Cistern::Formatter::Formatador

Defined in:
lib/cistern/formatter/formatador.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.call(model) ⇒ Object



4
5
6
7
8
9
10
11
# File 'lib/cistern/formatter/formatador.rb', line 4

def self.call(model)
  case model
  when Cistern::Collection then collection_inspect(model)
  when Cistern::Model then model_inspect(model)
  when Cistern::Singular then model_inspect(model)
  else model.inspect
  end
end

.collection_inspect(collection) ⇒ Object



26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/cistern/formatter/formatador.rb', line 26

def self.collection_inspect(collection)
  Thread.current[:formatador] ||= Formatador.new
  data = "#{Thread.current[:formatador].indentation}<#{collection.class.name}\n"
  Thread.current[:formatador].indent do
    unless collection.class.attributes.empty?
      data << "#{Thread.current[:formatador].indentation}"
      data << collection.class.attributes.map { |attribute| "#{attribute}=#{send(attribute).inspect}" }.join(",\n#{Thread.current[:formatador].indentation}")
      data << "\n"
    end
    data << "#{Thread.current[:formatador].indentation}["
    unless collection.empty?
      data << "\n"
      Thread.current[:formatador].indent do
        data << collection.map(&:inspect).join(",\n")
        data << "\n"
      end
      data << Thread.current[:formatador].indentation
    end
    data << "]\n"
  end
  data << "#{Thread.current[:formatador].indentation}>"
  data
end

.model_inspect(model) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/cistern/formatter/formatador.rb', line 13

def self.model_inspect(model)
  Thread.current[:formatador] ||= Formatador.new
  data = "#{Thread.current[:formatador].indentation}<#{model.class.name}"
  Thread.current[:formatador].indent do
    unless model.class.attributes.empty?
      data << "\n#{Thread.current[:formatador].indentation}"
      data << model.class.attributes.map { |attribute, _| "#{attribute}=#{model.send(attribute).inspect}" }.join(",\n#{Thread.current[:formatador].indentation}")
    end
  end
  data << "\n#{Thread.current[:formatador].indentation}>"
  data
end

Instance Method Details

#table(attributes = nil) ⇒ Object



50
51
52
# File 'lib/cistern/formatter/formatador.rb', line 50

def table(attributes = nil)
  Formatador.display_table(map(&:attributes), attributes)
end