class Copper::DataTypes::DataType

Constants

CLASS_MAP
DATATYPE_MAP

Public Class Methods

factory(poro) click to toggle source

returns a DataType based on the given PORO this is to control the attribute exposure, better error handling, etc

# File lib/copper/data_types/data_type.rb, line 48
def self.factory(poro)
        poro_class = poro.class.name

        clazz = self.get_class(poro_class)
        return clazz.new(poro)
end
get_class(class_name) click to toggle source
# File lib/copper/data_types/data_type.rb, line 55
def self.get_class(class_name)
        raise RuntimeError, "unknown class #{class_name}" unless ::Copper::DataTypes::DataType::CLASS_MAP.has_key?(class_name)
        return Module.const_get(::Copper::DataTypes::DataType::CLASS_MAP[class_name])
rescue NameError => exc
        raise ::Copper::RuntimeError, "invalid return type #{class_name}"
end
new(value) click to toggle source
# File lib/copper/data_types/data_type.rb, line 30
def initialize(value)
        @value = value
end

Public Instance Methods

as(clazz) click to toggle source
# File lib/copper/data_types/data_type.rb, line 38
def as(clazz)
        clazz = ::Copper::DataTypes::DataType::DATATYPE_MAP[clazz]
        raise RuntimeError, "No class called #{clazz} found" if clazz.nil?

        found_class = ::Copper::DataTypes::DataType.get_class(clazz)
        return found_class.new(@value)
end
value() click to toggle source
# File lib/copper/data_types/data_type.rb, line 34
def value
        @value
end