Sha256: 40cf515bb549263a277af98e6c24f8f951fe1db015a49655dfd408570f494748

Contents?: true

Size: 992 Bytes

Versions: 4

Compression:

Stored size: 992 Bytes

Contents

require "formalist/form/definition_context"

module Formalist
  class Form
    module Definition
      def attr(name, &block)
        elements << [:attr, [name, define_children(&block)]]
      end

      def component(display: DEFAULT_DISPLAY_ADAPTER, **config, &block)
        elements << [:component, [display, config, define_children(&block)]]
      end

      def field(name, type:, display: DEFAULT_DISPLAY_ADAPTER, **config)
        elements << [:field, [name, type, display, config]]
      end

      def group(**config, &block)
        elements << [:group, [config, define_children(&block)]]
      end

      def many(name, **config, &block)
        elements << [:many, [name, config, define_children(&block)]]
      end

      def section(name, **config, &block)
        elements << [:section, [name, config, define_children(&block)]]
      end

      private

      def define_children(&block)
        block ? DefinitionContext.new(&block).elements : []
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
formalist-0.2.2 lib/formalist/form/definition.rb
formalist-0.2.1 lib/formalist/form/definition.rb
formalist-0.2.0 lib/formalist/form/definition.rb
formalist-0.1.0 lib/formalist/form/definition.rb