Sha256: 584b8ab6fe6177b64502012e55f700d326105d6e6d255fb8fee79bad22b48b75

Contents?: true

Size: 803 Bytes

Versions: 1

Compression:

Stored size: 803 Bytes

Contents

module Reform
  module Schema
  # Converts the Representer->Form->Representer->Form tree into Representer->Representer.
  # It becomes obvious that the form will be the main schema-defining instance in Trb, so this
  # method makes sense. Consider private. This is experimental.
    class Converter
      def self.from(representer_class) # TODO: can we re-use this for all the decorator logic in #validate, etc?
        representer = Class.new(representer_class)
        representer.representable_attrs.each do |dfn|
          next unless form = dfn[:form]
          dfn.merge!(:extend => from(form.representer_class))
        end

        representer
      end
    end

    # It's your job to make sure you memoize it correctly.
    def schema
      Converter.from(representer_class)
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
reform-1.2.0.beta1 lib/reform/schema.rb