Sha256: 7e814e8e29eb572393fc5171e7e0beed66841446e7e5e8506da591eb161d8d68

Contents?: true

Size: 794 Bytes

Versions: 4

Compression:

Stored size: 794 Bytes

Contents

module Compel
  module Builder

    class Schema

      include Builder::Common

      attr_reader :type,
                  :options

      def self.human_name
        "#{self.name.split('::')[1..-1].join('::')}"
      end

      def initialize(type)
        @type = type
        @options = default_options
      end

      def required?
        options[:required][:value]
      end

      def default_value
        options[:default][:value] if options[:default]
      end

      def validate(object)
        Contract.new(object, self).validate
      end

      def build_option(name, value, extra_options = {})
        options[name] = { value: value }.merge(extra_options)

        self
      end

      def default_options
        { required: { value: false } }
      end

    end

  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
compel-0.5.1 lib/compel/builder/schema.rb
compel-0.5.0 lib/compel/builder/schema.rb
compel-0.4.3 lib/compel/builder/schema.rb
compel-0.4.2 lib/compel/builder/schema.rb