Monday, November 08, 2010 at 12:04 AM.
system.verbs.builtins.mainResponder.siteTree.convertDomainToSiteTree
on convertDomainToSiteTree (domainName, adrDomains = @config.mainResponder.domains) { <<Changes <<8/13/02; 3:48:22 PM by JES <<New optional parameter, adrDomains. Compile the siteTree XML if needed, after converting the domain to a siteTree domain. <<7/2/02; 12:01:55 AM by JES <<Created. local (adrdomain = @adrDomains^.[domainName]); if defined (adrdomain^.siteTree) { //already a siteTree type domain? scriptError ("Can't convert the domain, \"" + domainName + "\" to a siteTree because it already is one.")}; on setnomad (adrdomain, adradrglobals=nil) { case typeOf (adrdomain) { addressType; filespecType; stringType { return (adrdomain)}; tableType { if defined (adrdomain^.globals) { adradrglobals = @adrdomain^.globals}; return (@adrdomain^.docTree)}}}; local (adrglobals); local (nomad = setnomad (adrdomain, @adrglobals)); local (globals); if adrglobals != nil { //copy to a local table, for re-introduction later globals = adrglobals^}; local (xstruct); new (tableType, @xstruct); local (adrtree = xml.addTable (@xstruct, "siteTree")); local (adrsite = xml.addTable (adrtree, "site")); local (adratts = @adrsite^.["/atts"]); new (tableType, adratts); adratts^.name = ""; case typeOf (nomad^) { stringType; filespecType { if string.lower (nomad^) beginsWith "http://" { //implement a redirect adratts^.redirect = string (nomad^)} else { //set a folderPath adratts^.folderPath = string (nomad^)}}; addressType { adratts^.address = string.popFileFromAddress (nomad^)}}; new (tableType, adrdomain); new (tableType, @adrdomain^.siteTree); new (tableType, @adrdomain^.siteTree.directory); local (xtext = xml.decompile (@xstruct)); xtext = string.trimWhiteSpace (string.delete (xtext, 1, sizeOf (string.nthField (xtext, "\r", 1) + 1))); op.newOutlineObject (xtext, @adrdomain^.siteTree.directory.outline); if globals != nil { adrdomain^.globals = globals}; mainResponder.siteTree.compileIfDirty (adrdomain); return (true)}; bundle { //testing convertDomainToSiteTree ("default")} <<convertDomainToSiteTree ("foo")
This listing is for code that runs in the OPML Editor environment. I created these listings because I wanted the search engines to index it, so that when I want to look up something in my codebase I don't have to use the much slower search functionality in my object database. Dave Winer.