module Formalism::Form::Fields

Extend some module or class with this module for fields

Public Instance Methods

fields(for_merge: false) click to toggle source
# File lib/formalism/form/fields.rb, line 108
def fields(for_merge: false)
        @fields ||= {}

        return @fields unless for_merge

        select_for_merge(:fields)
end
to_params() click to toggle source
# File lib/formalism/form/fields.rb, line 116
def to_params
        fields.merge(
                nested_forms.each_with_object({}) do |(name, nested_form), result|
                        result.merge! nested_form_to_params name, nested_form
                end
        )
end

Private Instance Methods

fields_and_nested_forms(for_merge: true) click to toggle source
# File lib/formalism/form/fields.rb, line 130
def fields_and_nested_forms(for_merge: true)
        merging_nested_forms =
                for_merge ? select_for_merge(:nested_forms) : nested_forms

        fields(for_merge: for_merge).merge(
                merging_nested_forms
                        .map { |name, _nested_form| [name, public_send(name)] }
                        .to_h
        )
end
nested_form_to_params(name_of_nested_form, nested_form) click to toggle source
# File lib/formalism/form/fields.rb, line 148
def nested_form_to_params(name_of_nested_form, nested_form)
        { name_of_nested_form => nested_form.to_params }
end
nested_forms() click to toggle source
# File lib/formalism/form/fields.rb, line 126
def nested_forms
        @nested_forms ||= {}
end
select_for_merge(type) click to toggle source
# File lib/formalism/form/fields.rb, line 141
def select_for_merge(type)
        send(type).select do |name, value|
                merge = self.class.fields_and_nested_forms[name].fetch(:merge, true)
                merge.is_a?(Proc) ? instance_exec(value, &merge) : merge
        end
end