- From: James M Snell <jasnell@gmail.com>
- Date: Fri, 30 Nov 2007 19:35:45 -0800
- To: URI <uri@w3.org>
I take this back.. allowing prefix and append to accept lists cannot *completely* replace listjoin but it can come very close. Here are the various list join examples I have in my test suite, along with -prefix based alternatives (assuming we allow -prefix and -append to allow list values http://bitworking.org/news/{-listjoin|/|entry} http://bitworking.org/news{-prefix|/|entry} {-opt|/-/|categories}{-listjoin|/|categories} {-opt|/-|categories}{-prefix|/|categories} http://www.google.com/notebook/feeds/{userID}{-prefix|/notebooks/|notebookID}{-opt|/-/|categories}{-listjoin|/|categories}?{-join|&|updated-min,updated-max,alt,start-index,max-results,entryID,orderby} http://www.google.com/notebook/feeds/{userID}{-prefix|/notebooks/|notebookID}{-opt|/-|categories}{-prefix|/|categories}?{-join|&|updated-min,updated-max,alt,start-index,max-results,entryID,orderby} http://example.org/{foo}/{bar}{-opt|/|categories}{-listjoin|/|categories}?{-join|&|baz,tag} http://example.org/{foo}/{bar}{-prefix|/|categories}?{-join|&|baz,tag} The following templates, however, are only possible with listjoin... {-listjoin|/|segments} http://example.org/?d={-listjoin|,|points}&{-join|&|a,b} http://example.org/?d={-listjoin|,|list0}&{-join|&|foo} http://example.org/?d={-listjoin|&d=|points} In each of the cases where -prefix can be used, the template is either as complex or less complex than the -listjoin alternative. Bottom line: while the listjoin method is still necessary, there is definite benefit and little cost to allowing prefix and append to work with list values. Another issue: can we please shorten "-listjoin" to just "-list", the extra four characters aren't really needed. - James James M Snell wrote: > [snip] >> ยง3.1: Values of variables should not be restricted. They should just be escaped when building the URI. The simplest model is to say each variable value is a list of (Unicode) strings. An empty list is treated as if the variable was undefined. > > I think I agree with this. Defining every replacement value as a list > does not cause any significant additional complexity and avoids having > to treat each replacement separately. I mentioned in another note that > it can also be used to eliminate the listjoin operation completely. > > a = ["1","2"] > b = ["3"] > c = ["4","5","6"] > d = ["7","8"] > e = ["9"] > f = ["11","12"] > > {-prefix|/|a}{-prefix|/|b}{-prefix|/|c}{-opt|?|d,e}{-join|&|d,e}{-opt|#|f}{f} > > Expands to: > > /1/2/3/4/5/6?d=6&d=7&d=8#1112 > > The current alternative using listjoin and non-list values for prefix > would be: > > {-opt|/|a}{-listjoin|/|a}{-prefix|/|b}{-opt|/|c}{-listjoin|c|}{-opt|?|d,e}{-join|&|d,e}{-opt|#|f}{-listjoin||f} > > Which is quite a bit more complex and significantly less intuitive > [snip]
Received on Saturday, 1 December 2007 03:35:59 UTC