Sha256: b3d0eaeba022491f3fbec66816ddb2f50e5503a1dfee034e4e620039ae9b6604
Contents?: true
Size: 1.19 KB
Versions: 3
Compression:
Stored size: 1.19 KB
Contents
require "json" require_relative "child_form" module Formalist module ChildForms class Builder attr_reader :embedded_forms MissingFormDefinitionError = Class.new(StandardError) def initialize(embedded_form_collection) @embedded_forms = embedded_form_collection end def call(input) return input if input.nil? input.map { |node| visit(node) } end alias_method :[], :call private def visit(node) name, data = node.values_at(:name, :data) embedded_form = embedded_forms[name] if embedded_form.nil? raise MissingFormDefinitionError, "Form +#{embedded_forms[name]}+ is missing from the embeddable forms collection" end child_form(name, embedded_form).fill(input: data) end def child_form(name, embedded_form) ChildForm.build( name: name, attributes: { label: embedded_form.label, form: embedded_form.form, schema: embedded_form.schema, input_processor: embedded_form.input_processor, preview_image_url: embedded_form.preview_image_url } ) end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
formalist-0.9.0 | lib/formalist/child_forms/builder.rb |
formalist-0.8.0 | lib/formalist/child_forms/builder.rb |
formalist-0.7.0 | lib/formalist/child_forms/builder.rb |