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

system.verbs.builtins.radio.file.newStoryFile

on newStoryFile (folder, title, text, flOpml = true) {
	<<Changes
		<<4/6/02; 2:49:02 PM by DW
			<<If feature is enabled, create a shortcut for the new story.
		<<1/31/02; 10:49:42 PM by JES
			<<On MacOS, make sure that filenames are truncated such that the extension can be a four-character extension, not just three.
		<<1/28/02; 6:26:50 PM by JES
			<<Convert filenames to 7-bit strings.
		<<1/14/02; 4:01:50 PM by JES
			<<On MacOS, limit filename length to 31 characters.
		<<12/20/01; 1:05:27 AM by JES
			<<Use file.writeTextFile instead of file.writeWholeFile to write the new story to disk.
		<<10/31/01; 3:39:55 PM by JES
			<<Return the relative path as determined by a call to radio.file.getRelativePath.
	
	local (now = clock.now (), day, month, year, hour, minute, second);
	date.get (now, @day, @month, @year, @hour, @minute, @second);
	local (extension);
	if flOpml {
		extension = ".opml"}
	else {
		extension = ".txt"};
	local (fname = string.dropnonalphas (string.innercasename (radio.string.convertTo7Bit (title))));
	if system.environment.isMac {
		if sizeOf (fname) > (31 - sizeOf (".html")) {
			fname = string.mid (fname, 1, (31 - sizeOf (".html")) )}};
	fname = fname + extension;
	month = string.padwithzeros (month, 2);
	day = string.padwithzeros (day, 2);
	local (pc = file.getpathchar ());
	local (f = folder + year + pc + month + pc + day + pc + fname);
	file.surefilepath (f);
	local (filetext = "#title \"" + title + "\"\r\n#postTime \"" + now + "\"\r\n" + text);
	if flOpml {
		local (lo);
		op.newoutlineobject (filetext, @lo);
		filetext = op.outlinetoxml (@lo)};
	file.writeTextFile (f, filetext);
	
	local (relativepath = radio.file.getRelativePath (f));
	bundle { //add shortcut if enabled
		local (adrdata = radio.weblog.init ());
		if adrdata^.shortcuts.prefs.flShortcutForStories {
			local (extension = "html");
			bundle { //set extension, patterned after code in radio.upstream.getUpstreamText
				local (atts);
				radio.webServer.gatherAttributes (f, @atts);
				if defined (atts.renderedFileExtension) {
					extension = atts.renderedFileExtension;
					if extension beginsWith "." { //it's expected not to
						extension = string.delete (extension, 1, 1)}}};
			local (url = radio.weblog.getUrl (adrdata) + string.popSuffix (relativepath) + "." + extension);
			radio.shortcuts.addStory (title, url)}};
	return (relativepath)}
<<bundle //test code
	<<local (folder = "C:\\Program Files\\Radio UserLand\\www\\stories\\")
	<<local (rp = newstoryfile (folder, "Test story", string.filledstring ("123456789 ", 100), flOpml:false))
	<<webbrowser.openurl ("http://127.0.0.1:81/stories/" + rp)



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.