Method code for $directories.find_page__mapped()

[Turn off line numbering]
  1: arg url, interface, orig_url;
  2: var dir, lock, page, script_name, meth;
  3: 
  4: script_name = "";
  5: dir = $directories;
  6: page = $directories;
  7: if (dir.get_lock())
  8:     lock = dir;
  9: catch ~keynf {
 10:     while (url && page.has_ancestor($directories)) {
 11:         page = dir.entry(url[1]);
 12:         script_name += "/" + url[1];
 13:         url = url.subrange(2);
 14:         if (page.get_lock())
 15:             lock = page;
 16:         if (page.has_ancestor($directories))
 17:             dir = page;
 18:     }
 19: }
 20: if (page.has_ancestor($directories)) {
 21:     if (!url && orig_url.last() != "/") {
 22:         return ['redirect, orig_url + "/"];
 23:     } else {
 24:         if (url)
 25:             return 'pagenf;
 26:         page = page.default_page();
 27:         if (page.get_lock())
 28:             lock = page;
 29:     }
 30: }
 31: if (url && (| (meth = tosym(url[1])) |)) {
 32:     if ((| page.find_method(meth) |)) {
 33:         interface.set_info('generate, meth);
 34:         script_name += "/" + url[1];
 35:         url = url.subrange(2);
 36:     } else {
 37:         interface.set_info('generate, 'generate);
 38:     }
 39: } else {
 40:     interface.set_info('generate, 'generate);
 41: }
 42: if (page) {
 43:     interface.set_info('script_name, script_name);
 44:     interface.set_info('path_info, "/" + url.join("/"));
 45:     interface.set_info('directory_object, dir);
 46:     interface.set_info('lock_object, lock);
 47:     return page;
 48: } else {
 49:     return 'pagenf;
 50: }

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

Tlon