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


local (pta = html.getPageTableAddress ());
local (htmlText = "", indentLevel = 0);

on add (s) {
	htmlText = htmlText + s + "\r"};

local (i);
local (infoTable);
new (tableType, @infoTable);

for i = 1 to sizeof (system.compiler.files) { //build an intermediate table of info about the site
	local (f);
	f = nameOf (system.compiler.files [i]);
	if file.exists (f) { //avoid listing Untitled windows
		<<Get the path, folder, and file name of this database.
		local (folder = file.folderFromPath (f));
		local (folderName = file.fileFromPath (folder));
		local (fname = file.fileFromPath (f));
		<<Create a new entry for this database.
		local (adrItem = @infoTable.[fname]);
		new (tableType, adrItem);
		<<Populate the table entry for this database.
		adrItem^.name = fname;
		adrItem^.size = file.size (f);
		adrItem^.modified = file.modified (f);
		adrItem^.folder = folderName}};

local (adrTable = (border:0, cellSpacing:5, cellPadding:3));
bundle { //build the Frontier table that gets rendered as an HTML table
	html.table.addColumn (adrtable, "Name");
	html.table.addColumn (adrtable, "Size", align:right);
	html.table.addColumn (adrtable, "Modified");
	html.table.addColumn (adrtable, "Folder");
	for i = 1 to sizeOf (infoTable) {
		local (adrItem = @infoTable [i]);
		html.table.addRow (adrTable)^.cells = {adrItem^.name, string.megabyteString (adrItem^.size), adrItem^.modified, adrItem^.folder}}};

pta^.title = "Databases";
add (html.table.render (adrTable));
html.table.delete (adrTable);

return (htmlText)

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.