Sha256: 49d40f8e081bfe24087484ce8a1a4aff0a78cf6d3a5be122f95efb397b9e4052
Contents?: true
Size: 1.05 KB
Versions: 12
Compression:
Stored size: 1.05 KB
Contents
require_relative 'abstract_command_handler' class GetInstanceFieldHandler < AbstractCommandHandler def initialize @required_parameters_count = 2 end def process(command) return get_instance_field(command) end def get_instance_field(command) begin if command.payload.length != @required_parameters_count raise ArgumentError.new "Instance field parameters mismatch" end merged_value = '@' + command.payload[1] if command.payload[0].instance_variable_defined?(merged_value) response = command.payload[0].instance_variable_get(merged_value) else raise "Instance field not defined" end return response rescue NameError fields = command.payload[0].instance_variables message = "Field #{command.payload[1]} not found in object of class #{command.payload[0].class.name}. Available fields:\n" fields.each { |field_iter| message += "#{field_iter}\n" } raise Exception, message rescue Exception => e return e end end end
Version data entries
12 entries across 6 versions & 1 rubygems