Sha256: c67ff53eaa78293adaaf7e6e3cd10b5d903e616e08786069f40bda3237220930

Contents?: true

Size: 763 Bytes

Versions: 16

Compression:

Stored size: 763 Bytes

Contents

module Rumx
  class Operation
    attr_reader :name, :type, :description, :arguments

    def initialize(name, type_name, description, arguments)
      @name        = name.to_sym
      @type        = Type.find(type_name)
      @description = description
      @arguments   = arguments
    end

    def run(bean, argument_hash)
      args = @arguments.map do |argument|
        if argument_hash.has_key?(argument.name)
          value = argument_hash[argument.name]
        elsif argument_hash.has_key?(argument.name.to_s)
          value = argument_hash[argument.name.to_s]
        else
          raise "No value for argument #{argument.name}"
        end
        argument.type.string_to_value(value)
      end
      bean.send(self.name, *args)
    end
  end
end

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
rumx-0.2.3 lib/rumx/operation.rb
rumx-0.2.2 lib/rumx/operation.rb
rumx-0.1.5 lib/rumx/operation.rb
rumx-0.1.4 lib/rumx/operation.rb
rumx-0.1.3 lib/rumx/operation.rb
rumx-0.1.2 lib/rumx/operation.rb
rumx-0.1.1 lib/rumx/operation.rb
rumx-0.1.0 lib/rumx/operation.rb
rumx-0.0.8 lib/rumx/operation.rb
rumx-0.0.7 lib/rumx/operation.rb
rumx-0.0.6 lib/rumx/operation.rb
rumx-0.0.5 lib/rumx/operation.rb
rumx-0.0.4 lib/rumx/operation.rb
rumx-0.0.3 lib/rumx/operation.rb
rumx-0.0.2 lib/rumx/operation.rb
rumx-0.0.1 lib/rumx/operation.rb