Sha256: d420a31b7fae9aa352708128695088dd8443d1bea151241b4738424424e73dc1
Contents?: true
Size: 1.17 KB
Versions: 1
Compression:
Stored size: 1.17 KB
Contents
# frozen_string_literal: true module Phlexi module Form module Structure class NamespaceCollection < Node include Enumerable def initialize(key, parent:, collection: nil, &block) raise ArgumentError, "block is required" unless block.present? super(key, parent: parent) @collection = collection @block = block each(&block) end def extract_input(params) namespace = build_namespace(0) @block.call(namespace) inputs = params[key].map { |param| namespace.extract_input([param]) } {key => inputs} end private def each(&) namespaces.each(&) end # Builds and memoizes namespaces for the collection. # # @return [Array<Hash>] An array of namespace hashes. def namespaces @namespaces ||= @collection.map.with_index do |object, key| build_namespace(key, object: object) end end def build_namespace(index, **) parent.class.new(index, parent: self, builder_klass: parent.builder_klass, **) end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
phlexi-form-0.3.0.rc1 | lib/phlexi/form/structure/namespace_collection.rb |