Class: ActiveAdmin::CepAutoComplete::Renderer

Inherits:
Object
  • Object
show all
Defined in:
lib/active_admin/cep_auto_complete/renderer.rb

Instance Method Summary collapse

Constructor Details

#initializeRenderer

Returns a new instance of Renderer.



4
5
6
7
# File 'lib/active_admin/cep_auto_complete/renderer.rb', line 4

def initialize
  @default_renderers = DEFAULT_FIELDS.map { |field| [field, default_renderer_for(field)] }.to_h.with_indifferent_access
  @custom_renderers = {}.with_indifferent_access
end

Instance Method Details

#field(field_name, &block) ⇒ Object



9
10
11
12
13
14
15
16
# File 'lib/active_admin/cep_auto_complete/renderer.rb', line 9

def field(field_name, &block)
  @custom_renderers[field_name] =
    if block_given?
      block
    else
      default_renderer_for(field_name)
    end
end

#render(query) ⇒ Object



18
19
20
21
22
23
24
25
26
# File 'lib/active_admin/cep_auto_complete/renderer.rb', line 18

def render(query)
  [@default_renderers, @custom_renderers].reduce(build_object(query)) do |object, renderers|
    renderers.keys.each do |field|
      value = renderers[field].call(object)
      object.tap { object.public_send("#{field}=", value) }
    end
    object
  end.to_h
end