class Spage::Serializers::Component

Serializer for the Component resource

Public Class Methods

new(component, update: false) click to toggle source
# File lib/spage/serializers/component.rb, line 8
def initialize(component, update: false)
  @component = component
  @ivars = ivars(update)
end

Public Instance Methods

as_json() click to toggle source
# File lib/spage/serializers/component.rb, line 17
def as_json
  to_hash
end
to_hash() click to toggle source
# File lib/spage/serializers/component.rb, line 21
def to_hash
  {
    'component' => Hash[
      @ivars.map do |name|
        [name[1..-1], @component.instance_variable_get(name)]
      end
    ]
  }
end
to_json(obj = nil) click to toggle source
# File lib/spage/serializers/component.rb, line 13
def to_json(obj = nil)
  as_json.to_json(obj)
end

Private Instance Methods

ivars(update) click to toggle source
# File lib/spage/serializers/component.rb, line 33
def ivars(update)
  if update
    @component.instance_variables.select do |name|
      processed_name = name[1..-1]
      update_attrs.include?(processed_name) &&
        !@component.send(processed_name).nil?
    end
  else
    @component.instance_variables
  end
end
update_attrs() click to toggle source
# File lib/spage/serializers/component.rb, line 45
def update_attrs
  %w[
    description
    status
    name
    only_show_if_degraded
    group_id
    showcase
  ]
end