class DBus::Type::Factory

Public Class Methods

from_plain_class(klass) click to toggle source

Make a {Type} corresponding to some plain classes:

@param klass [Class] @return [Type] (frozen)

# File lib/dbus/type.rb, line 309
def self.from_plain_class(klass)
  @signature_type ||= DBus.type(SIGNATURE)
  @class_to_type ||= {
    DBus::ObjectPath => DBus.type(OBJECT_PATH),
    DBus::Signature => @signature_type,
    DBus::SingleCompleteType => @signature_type,
    String => DBus.type(STRING),
    Float => DBus.type(DOUBLE)
  }
  t = @class_to_type[klass]
  raise ArgumentError, "Cannot convert plain class #{klass} to a D-Bus type" if t.nil?

  t
end
make_type(type) click to toggle source

@param type [Type,SingleCompleteType,Class] @see from_plain_class @return [Type] (frozen)

# File lib/dbus/type.rb, line 288
def self.make_type(type)
  case type
  when Type
    type
  when String
    DBus.type(type)
  when Class
    from_plain_class(type)
  else
    msg = "Expecting DBus::Type, DBus::SingleCompleteType(aka ::String), or Class, got #{type.inspect}"
    raise ArgumentError, msg
  end
end