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

system.verbs.builtins.clock.timeStamp

on timeStamp () {
	<<Changes
		<<Saturday, December 30, 2000 at 10:42:56 AM by DW
			<<This script is ancient and frustrating. 
			<<I like short timestamps, not the long string you see at the head of this comment. 
			<<So let's create a new preference, user.prefs.flShortTimeStamp. If it doesn't exist, we create it. It defaults to false. So if you prefer the current behavior, you do nothing. If you want a shorter stamp, set it true.
		<<12/30/2000; 10:48:54 AM by DW
			<<It works! ;->
		<<12/30/2000; 10:52:56 AM by DW
			<<When timestamping in a table, add the stamp in the table your cursor is in. This feature is so old it predates the outline browser for the object db tables.
		<<12/30/00; 12:21:14 PM by DW
			<<Chopped off the first two numbers of the year. You can figure it out. 
	local (flshortstamp);
	bundle { //get flshortstamp
		if not defined (user.prefs.flShortTimeStamp) {
			user.prefs.flShortTimeStamp = false};
		flshortstamp = user.prefs.flShortTimeStamp};
	local (s);
	bundle { //set the timestamp string
		if flshortstamp {
			local (year = date.year ());
			s = string.replaceall (clock.now (), year, string.mid (year, 3, 2)) + " by " + user.prefs.initials}
		else {
			s = string.dateString () + " at " + string.timeString () + " by " + user.prefs.initials}};
	local (adr, type);
	bundle { //set adr and type
		adr = target.get ();
		if defined (adr^) {
			type =  typeOf (adr^)}
		else {
			if window.isMenuScript (window.frontmost ()) {
				type = outlinetype}
			else {
				type = unknowntype}}};
	case type {
		outlinetype;
		scripttype;
		menubartype {
			if wp.inTextMode () {
				wp.insert (s)}
			else {
				local (dir = down);
				if op.subsExpanded () {
					dir = right};
				if op.insert (s, dir) {
					script.makeComment ()}}};
		wptexttype {
			wp.insert (s)};
		tabletype {
			local (adrparent = parentof (table.getcursoraddress ()^));
			adrparent^ ["stampedTime"] = s}}
	else {
		return (false)};
	
	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.