Method code for $object_lib.to_dbref()

[Turn on line numbering]
arg obj;
var dbref;

switch (type(obj)) {
    case 'string:
        if (!obj)
            throw(~invdbref, "Invalid object reference \"\".");
        if (obj[1] == "$") {
            obj = obj.subrange(2);
            dbref = (| lookup(tosym(obj)) |);
        } else if (obj[1] == "#") {
            obj = substr(obj, 2);
            if (obj.is_numeric())
                dbref = (| toobjnum(toint(obj)) |);
            else
                throw(~objnf, "Cannot find object \"#" + obj + "\".");
        } else {
            dbref = toint(obj[1]);
            if (dbref || obj == "0")
                dbref = toobjnum(dbref);
            else
                dbref = (| lookup(obj) |);
        }
        if (!dbref) {
            dbref = obj.replace(" ", "_").lowercase();
            catch ~symbol
                dbref = tosym(dbref);
            with
                throw(~symbol, "Object reference '" + dbref + "' is invalid.");
            dbref = (> lookup(dbref) <);
        }
        return dbref;
    case 'objnum:
        return obj;
    default:
        return (> lookup(obj) <);
}

["// Created 26-Mar-1995 as a part of ColdCore, see: @help Credit"]

the Cold Dark