Monday, November 08, 2010 at 12:06 AM.
system.verbs.builtins.string.urlSplit
on urlSplit (url) {
<<Thursday, November 11, 1999 at 3:00:08 AM by AR
<<Implemented as a kernel verb in Frontier 6.1.
<<Old code
<<on urlSplit (url)
<< 10/31/97 at 1:35:47 PM by DW -- moved from toys.urlSplit
<<assume a valid complete URL, split it into three parts, return as a list:
<<list [1]: the protocol, e.g. http://
<<list [2]: the domain, e.g. www.yourserver.com
<<list [3]: the path, e.g. essays/97/04/myLife.html
<<on urlError ()
<<scriptError ("The URL must be of the form 'http://www.server.com/hello.html'.")
<<local (ix)
<<ix = string.patternMatch (":", url)
<<if ix == 0
<<urlError ()
<<local (ixend, i)
<<i = ix
<<loop
<<if i++ > sizeof (url)
<<urlError ()
<<if url [i] != '/'
<<ixend = i - 1
<<break
<<protocol = string.mid (url, 1, ixend)
<<url = string.delete (url, 1, sizeof (protocol))
<<
<<ix = string.patternMatch ("/", url)
<<if ix == 0
<<urlError ()
<<domain = string.mid (url, 1, ix - 1)
<<path = string.delete (url, 1, ix)
<<
<<return ({protocol, domain, path})
kernel (string.urlsplit)}
<<bundle <<test code
<<dialog.alert (urlsplit ("http://www.yourserver.com/"))
<<dialog.alert (urlsplit ("http://www.yourserver.com/essays/97/04/myLife.html"))
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.