Method code for $directories.find_page__mapped()

[Turn on line numbering]
arg url, interface, orig_url;
var dir, lock, page, script_name, meth;

script_name = "";
dir = $directories;
page = $directories;
if (dir.get_lock())
    lock = dir;
catch ~keynf {
    while (url && page.has_ancestor($directories)) {
        page = dir.entry(url[1]);
        script_name += "/" + url[1];
        url = url.subrange(2);
        if (page.get_lock())
            lock = page;
        if (page.has_ancestor($directories))
            dir = page;
    }
}
if (page.has_ancestor($directories)) {
    if (!url && orig_url.last() != "/") {
        return ['redirect, orig_url + "/"];
    } else {
        if (url)
            return 'pagenf;
        page = page.default_page();
        if (page.get_lock())
            lock = page;
    }
}
if (url && (| (meth = tosym(url[1])) |)) {
    if ((| page.find_method(meth) |)) {
        interface.set_info('generate, meth);
        script_name += "/" + url[1];
        url = url.subrange(2);
    } else {
        interface.set_info('generate, 'generate);
    }
} else {
    interface.set_info('generate, 'generate);
}
if (page) {
    interface.set_info('script_name, script_name);
    interface.set_info('path_info, "/" + url.join("/"));
    interface.set_info('directory_object, dir);
    interface.set_info('lock_object, lock);
    return page;
} else {
    return 'pagenf;
}

// Brad Roberts
// Bruce Mitchener, Jr.
// Created 16-May-1997 as a part of ColdCore, see: @help Credit

Tlon