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

system.verbs.builtins.radio.weblog.file.isArchivePage

on isArchivePage (f, adrblog = radio.weblog.init ()) {
	<<Changes
		<<1/5/02; 4:34:05 PM by JES
			<<Created.
			<<Given the path to a file on disk, return true if the file is the source file for a weblog or category archive page, or false if not.
			<<Parameters
				<<f -- the path to the file on disk
				<<adrBlog -- the address of the weblog table -- defaults to the address returned by radio.weblog.init.
	on isNumeric (s) {
		<<return true if all chars in s are numeric
		local (ch, ct = sizeOf (s));
		for i = 1 to ct {
			ch = s[i];
			if not string.isNumeric (ch) {
				return (false)}};
		return (true)};
	local (pc = file.getPathChar ());
	local (fname = file.fileFromPath (f));
	local (nameWithoutExtension = string.popSuffix (fname));
	if isNumeric (nameWithoutExtension) {
		local (day = number (nameWithoutExtension));
		if day > 0 and day < 32 {
			local (monthFolder = file.folderFromPath (f));
			local (monthName = string.popSuffix (file.fileFromPath (monthFolder), pc));
			if isNumeric (monthName) {
				local (month = number (monthName));
				if month > 0 and month < 13 {
					local (yearFolder = file.folderFromPath (monthFolder));
					local (yearName = string.popSuffix (file.fileFromPath (yearFolder), pc));
					if isNumeric (yearName) {
						local (year = number (yearName));
						if year > 1903 { //1-1-1904 is the earliest date Frontier knows about
							return (true)}}}}}};
	return (false)}
<<bundle //test code
	<<local (f, pc = file.getPathChar ())
	<<bundle //returns true
		<<f = user.radio.prefs.wwwFolder + "2002" + pc + "01" + pc + "04.txt"
		<<dialog.notify (isArchivePage (f))
	<<bundle //returns false
		<<f = user.radio.prefs.wwwFolder + "index.txt"
		<<dialog.notify (isArchivePage (f))



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.