Monday, November 08, 2010 at 12:03 AM.


on runDirective (linetext, adrPageTable=@websites.["#data"]) { <<4.2 -- extracted from renderObject macro
	if html.getPref ("useKernelCode", adrPageTable) {
		on kernelcall (linetext, adrPageTable) {
			kernel (html.runDirective)};
		return (kernelcall (linetext, adrPageTable))}
	else {
		<<linetext contains a #directive line
			<<Process the directive and return the name of the directive
		<<11/12/97 at 8:44:54 AM by DW -- adrPageTable is an optional param
			<<Had to change the implementation.
			<<Old method: build a script that's an assignment statement.
			<<New method: evaluate the expression and assign into the pagetable field.
			<<The old method for constructing an address won't work for non-global tables.
			<<I don't believe this will break anything.
		local (s = string.commentDelete (linetext));
		local (fieldname = string.nthField (s, ' ', 1));
		s = string.delete (s, 1, sizeof (fieldname) + 1); <<delete name and space
		try {delete (@adrPageTable^.[fieldname])}; <<avoid Can't Assign Over error
		try {
			adrPageTable^.[fieldname] = evaluate (s)}
		else {
			scriptError ("Error evaluating #" + linetext + ": " + tryError)};
		local (lastdirective = string.lower (fieldname)); <<4.2
		if lastdirective == "template" { <<4.0.2
			adrPageTable^.indirectTemplate = true};
		return (lastdirective)}}

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.