Sha256: 50eb741f33dbad647864ca3ef207b85ba308b0cdb552e030bdf47e7ec1e1f95b

Contents?: true

Size: 648 Bytes

Versions: 4

Compression:

Stored size: 648 Bytes

Contents

module Relax
  class Instance # :nodoc:
    def initialize(options, *args)
      @options = options

      @values = args.inject({}) do |values, arg|
        arg.is_a?(Hash) ? values.merge(arg) : values
      end
    end

    def values(context)
      context.parameters.inject({}) do |values, parameter|
        name = parameter.options[:as] || parameter.name

        if (value = @values[name] || parameter.value) || @options[:include_blank_values]
          values[parameter.name] = value
        elsif parameter.required?
          raise ArgumentError.new("Missing value for '#{name}'.")
        end

        values
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 2 rubygems

Version Path
tylerhunt-relax-0.1.2 lib/relax/instance.rb
tylerhunt-relax-0.1.3 lib/relax/instance.rb
relax-0.1.3 lib/relax/instance.rb
relax-0.1.2 lib/relax/instance.rb