class Neighbor::Type::Cube
def cast_value(value)
def cast_value(value) if Utils.array?(value) value.to_a elsif value.is_a?(Numeric) [value] elsif value.is_a?(String) if value.include?("),(") value[1..-1].split("),(").map { |v| v.split(",").map(&:to_f) } else value[1..-1].split(",").map(&:to_f) end else raise "can't cast #{value.class.name} to cube" end end
def serialize(value)
def serialize(value) if Utils.array?(value) value = value.to_a if value.first.is_a?(Array) value = value.map { |v| serialize_point(v) }.join(", ") else value = serialize_point(value) end end super(value) end
def serialize_point(value)
def serialize_point(value) "(#{value.map(&:to_f).join(", ")})" end
def type
def type :cube end