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

system.verbs.builtins.file.urlToFile

on urlToFile (s) {
	local (prefix = "file:///");
	if not (string.lower (s) beginsWith prefix) {
		scriptError ("Can't convert \"" + s + "\" to a filespec because it doesn't begin with \"" + prefix + "\".")};
	s = string.delete (s, 1, sizeOf (prefix));
	s= string.urlDecode (s);
	case sys.os () {
		"MacOS" {
			s = string.replaceAll (s, "/", ":")};
		"Win95";
		"WinNT" {
			<<11/13/97 at 2:40:52 AM by DW
				<<I tested file URLs in MSIE 4.0, we produce a URL that's compatible
			local (ix = string.patternMatch ("/", s)); <<find the first slash
			if ix > 1 { <<found one, and it's not the first char
				if s [ix - 1] != ":" { <<the previous char is not a colon
					s = string.insert (":", s, ix)}};
			<<s = string.replace (s, "/", ":/") <<add a colon after the drive letter (or name)
			s = string.replaceAll (s, "/", "\\")}};
	return (s)};

<<bundle <<test code
	<<dialog.alert (urltofile (file.filetourl (frontier.getprogrampath ())))
	<<dialog.alert (urltofile ("file:///Macintosh%20HD/Online%20Docs/admin/credits.html"))
	<<urltofile ("oh the buzzing")



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.