Sha256: 9278b626ae4f61f3e0dbfe95e41f1c624c91e8b91a425908b51aa2ad1461c6ae

Contents?: true

Size: 957 Bytes

Versions: 1

Compression:

Stored size: 957 Bytes

Contents

# frozen_string_literal: true

module Magicka
  # Class responsible for controlling one object form
  class Form
    attr_reader :model

    def initialize(renderer, model)
      @renderer = renderer
      @model    = model
    end

    def input(field, model: self.model, **args)
      Input.render(renderer: renderer, field: field, model: model, **args)
    end

    def select(field, model: self.model, **args)
      Select.render(renderer: renderer, field: field, model: model, **args)
    end

    def button(**args)
      Button.render(renderer: renderer, **args)
    end

    def with_model(model)
      new_model = [self.model, model].join('.')

      yield Form.new(renderer, new_model)
    end

    def equal?(other)
      return unless other.class == self.class

      other.renderer == renderer &&
        other.model == model
    end

    alias == equal?

    protected

    attr_reader :renderer

    delegate :render, to: :renderer
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
magicka-0.4.0 lib/magicka/form.rb