123456789_123456789_123456789_123456789_123456789_

Class: XMLRPC::Service::BasicInterface

Relationships & Source Files
Extension / Inclusion / Inheritance Descendants
Subclasses:
Inherits: Object
Defined in: lib/xmlrpc/utils.rb

Overview

Base class for Interface definitions, used by BasicServer#add_handler

Class Method Summary

Instance Attribute Summary

Instance Method Summary

Constructor Details

.new(prefix) ⇒ BasicInterface

[ GitHub ]

  
# File 'lib/xmlrpc/utils.rb', line 72

def initialize(prefix)
  @prefix = prefix
  @methods = []
end

Instance Attribute Details

#methods (readonly)

[ GitHub ]

  
# File 'lib/xmlrpc/utils.rb', line 70

attr_reader :prefix, :methods

#prefix (readonly)

[ GitHub ]

  
# File 'lib/xmlrpc/utils.rb', line 70

attr_reader :prefix, :methods

Instance Method Details

#add_method(sig, help = nil, meth_name = nil)

[ GitHub ]

  
# File 'lib/xmlrpc/utils.rb', line 77

def add_method(sig, help=nil, meth_name=nil)
  mname = nil
  sig = [sig] if sig.kind_of? String

  sig = sig.collect do |s|
    name, si = parse_sig(s)
    raise "Wrong signatures!" if mname != nil and name != mname
    mname = name
    si
  end

  @methods << [mname, meth_name || mname, sig, help]
end

#parse_sig(sig) (private)

[ GitHub ]

  
# File 'lib/xmlrpc/utils.rb', line 93

def parse_sig(sig)
  # sig is a String
  if sig =~ /^\s*(\w)\s([^(]+)(\(([^)]*)\))?\s*$/
    params = [$1]
    name   = $2.strip
    $4.split(",").each {|i| params << i.strip} if $4 != nil
    return name, params
  else
    raise "Syntax error in signature"
  end
end