Class: Cogger::Formatters::JSON

Inherits:
Object
  • Object
show all
Defined in:
lib/cogger/formatters/json.rb

Overview

Formats as JSON output.

Constant Summary collapse

TEMPLATE =
nil

Instance Method Summary collapse

Constructor Details

#initialize(template = TEMPLATE, parser: Parsers::Individual.new, sanitizer: Kit::Sanitizer) ⇒ JSON

Returns a new instance of JSON.



12
13
14
15
16
17
# File 'lib/cogger/formatters/json.rb', line 12

def initialize template = TEMPLATE,
               parser: Parsers::Individual.new,
               sanitizer: Kit::Sanitizer
  @positions = template ? parser.call(template).last.keys : Core::EMPTY_ARRAY
  @sanitizer = sanitizer
end

Instance Method Details

#call(*input) ⇒ Object



19
20
21
22
23
24
25
26
# File 'lib/cogger/formatters/json.rb', line 19

def call(*input)
  attributes = sanitizer.call(*input).tagged_attributes.tap(&:compact!)
  format_date_time attributes

  return "#{attributes.to_json}\n" if positions.empty?

  "#{attributes.slice(*positions).merge!(attributes.except(*positions)).to_json}\n"
end