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

on initPost (adrpost) {
		<<4/10/02; 11:58:29 PM by JES
			<<If adrpost^.text doesn't exist, create it, instead of overwriting adrpost^ with a wp text object.
		<<1/26/02; 8:00:20 PM by JES
			<<Created. Initialize all of the sub-items of a weblog post table. Returns true.
			<<At this time, required sub-items are as follows:
				<<text -- a wpText containing the text for the post
				<<when -- the date the post was created
				<<flNotOnHomePage -- a boolean: true if the post is not on the home page -- defaults false
				<<categories -- a table containing booleans for each category in which the post appears
	if not defined (adrpost^) {
		new (tableType, adrpost)};
	if not defined (adrpost^.text) {
		new (wpTextType, adrpost^.text)};
	if not defined (adrpost^.when) {
		local (ix = indexOf (adrpost^));
		if ix < sizeOf (parentOf (adrpost^)^) { //whoops! -- it's not the last post in the table
			<<We come up with a fudged date in this case. This code is from radio.macros.weblogRecentPosts, which was the wrong place for it.
			if ix > 1 { //set to one second after the previous post
				adrpost^.when = date (adrdata^.posts[ix - 1].when + 1)}
			else { //set to one second before the next post
				if sizeOf (adrdata^.posts) > 1 {
					adrpost^.when = date (adrdata^.posts[ix + 1].when - 1)}
				else {
					adrpost^.when = ()}}}
		else { //set to the create-date for the adrpost^.text wpText object
			local (flDateSet = false);
			if typeOf (adrpost^.text) == wpTextType {
				local (d = timeCreated (adrpost^.text));
				if ix > 1 {
					local (adrposts = parentOf (adrpost^));
					if d >= adrposts[ix-1].when {
						adrpost^.when = d;
						flDateSet = true}}};
			if not flDateSet { //set it to now (adrpost^.text is not a wpText, or its createDate is too early)
				adrpost^.when = ()}}};
	if not defined (adrpost^.flNotOnHomePage) {
		adrpost^.flNotOnHomePage = false};
	if not defined (adrpost^.categories) {
		new (tableType, @adrpost^.categories)};
	return (true)}

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.