Sha256: 6df9484c8de6b18b8f015b7f1b74cf33b89769e8fc0e4414a8781b7770cc8de8
Contents?: true
Size: 1.36 KB
Versions: 2
Compression:
Stored size: 1.36 KB
Contents
require "dry/configurable" require "dry/core/constants" require "formalist/elements" require "formalist/definition" module Formalist class Form extend Dry::Configurable include Dry::Core::Constants setting :elements_container, default: Elements class << self attr_reader :definition def define(&block) @definition = block end end attr_reader :elements attr_reader :input attr_reader :errors attr_reader :dependencies def initialize(elements: Undefined, input: {}, errors: {}, **dependencies) @input = input @errors = errors @elements = if elements == Undefined Definition.new(self, self.class.config, &self.class.definition).elements else elements end @dependencies = dependencies end def fill(input: {}, errors: {}) return self if input == @input && errors == @errors self.class.new( elements: @elements.map { |element| element.fill(input: input, errors: errors) }, input: input, errors: errors, **@dependencies, ) end def with(**new_dependencies) self.class.new( elements: @elements, input: @input, errors: @errors, **@dependencies.merge(new_dependencies) ) end def to_ast elements.map(&:to_ast) end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
formalist-0.9.0 | lib/formalist/form.rb |
formalist-0.8.0 | lib/formalist/form.rb |