Class: AdminSuite::Renderers::KeyValueRenderer
- Inherits:
-
AdminSuite::Renderer
- Object
- AdminSuite::Renderer
- AdminSuite::Renderers::KeyValueRenderer
- Defined in:
- lib/admin_suite/renderers/key_value_renderer.rb
Overview
Label/value list panel. source: returns a Hash or an Array of
[key, value] pairs.
Unlike data_table, the key_value_list primitive has no empty:
option (see Task 4 report for why) — emptiness is handled here instead.
Instance Attribute Summary
Attributes inherited from AdminSuite::Renderer
Instance Method Summary collapse
Methods inherited from AdminSuite::Renderer
Constructor Details
This class inherits a constructor from AdminSuite::Renderer
Instance Method Details
#render ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/admin_suite/renderers/key_value_renderer.rb', line 11 def render value = source_value({}) pairs = case value when Hash then value.to_a when Array then value when nil then [] else # A Hash is handled above; anything else that coerces via #to_a # (AR relations, Sets, ...) is supported the same way `Array(value)` # supported it before this guard existed — only reject things # that genuinely aren't enumerable. unless value.respond_to?(:to_a) raise ArgumentError, "key_value expects a Hash or an Array of pairs, got #{value.class}" end value.to_a end return empty_state([:empty] || "Nothing to display.") if pairs.blank? unless pairs.all? { |pair| pair.is_a?(Array) && pair.size == 2 } raise ArgumentError, "key_value expects a Hash or an Array of [key, value] pairs, " \ "got an Array containing non-pair elements" end key_value_list(pairs.map { |k, v| [ k.to_s.humanize, v ] }) end |