class XMLRPCStruct

Base class for XML-RPC structures. Stores key and values pairs. Key names are mapped to method names by converting '-' to '_' characters.

Base class for XML-RPC structures. Stores key and values pairs. Key names are mapped to method names by converting '-' to '_' characters.

Public Class Methods

new(members) click to toggle source

members A list of the structure's key names or nil if any key names are allowed.

# File lib/ec2/amitools/util.rb, line 73
def initialize members
  unless members.kind_of? Array or members.nil?
    raise ArgumentError.new( "invalid members argument" )
  end
  @members = members
end

Public Instance Methods

method_missing( method_symbol, argument=nil ) click to toggle source

Provide direct access to individual instance elements by methods named after the element's key.

# File lib/ec2/amitools/util.rb, line 82
def method_missing( method_symbol, argument=nil )
  # Here kid, play with this loaded gun...
  method = method_symbol.to_s
  
  # Determine if setter or getter call and remove '=' if setter.
  setter = /[\S]+=/.match(method)
  member = (setter ? method.slice(0, method.size - 1) : method)
  
  # Map method name to member name.
  member = member.gsub('_', '-')
 
  # If valid attribute set or get accordingly. If the member list is nil then
  # any members are allowed.
  if @members.nil? or @members.include?( member )
    if setter
      raise ArgumentError, "value for key #{member} may not be nil" if argument.nil?
      self[member] = argument
    else
      self[member]
    end
  else
    raise NoMethodError.new( method )
  end
end