lib/supa/commands/collection.rb in supa-0.2.3 vs lib/supa/commands/collection.rb in supa-0.3.0

- old
+ new

@@ -1,17 +1,37 @@ -require 'supa/command' - module Supa module Commands class Collection < Supa::Command def represent - tree[name] = [] + return if hide? - Array(dynamic_value).each do |element| - tree[name] << {} + define_tree + return unless value - Supa::Builder.new(representer: representer, context: element, tree: tree[name][-1]).instance_exec(&block) + value.each do |element| + @tree[@name] << {} + + Supa::Builder.new(element, + representer: @representer, tree: @tree[@name][-1]).instance_exec(&@block) end + end + + private + + def apply_render_flags(val) + return [] if !val && empty_when_nil? + val + end + + def hide? + return hide_when_empty? unless value + return false unless value.is_a?(Array) + + value.any? ? false : hide_when_empty? + end + + def define_tree + @tree[@name] = !value ? nil : [] end end end end