W3C home > Mailing lists > Public > uri@w3.org > November 2007

RE: URI Templates: {prefix^variable*separator^suffix|default}

From: Manger, James H <James.H.Manger@team.telstra.com>
Date: Wed, 14 Nov 2007 16:17:32 +1100
Message-ID: <6215401E01247448A306C54F499111F2037C25A0@WSMSG2103V.srv.dir.telstra.com>
To: <uri@w3.org>
The previous regex I sent was not quite correct.

To parse { prefix[^] variable [*separator] [^]suffix [|default] }, including the shortcuts, you can use 1 of 2 regexes depending if any ^’s are present.
If ^ appears in the segment use:
	\{
	([^^]*)\^
	([^*^|}]*)
	(?:\*([^^|}]*))?
	(?:\^([^|}]*))?
	(?:\|([^}]*))?
	\}
If ^ does NOT appear in the segment use:
	\{
	([^|}]*?)
	((?<==)(?=[^a-zA-Z])|
		[a-zA-Z][a-zA-Z0-9._~-]*)
	(?:\*([^|}]*))?
	([^|}=a-zA-Z0-9._~-]*)
	(?:\|([^}]*))?
	\}
Both regexes have the same (…) groups in the same order so subsequent processing is identical.


-----Original Message-----
From: Manger, James H 
Sent: Monday, 12 November 2007 5:24 PM
To: 'uri@w3.org'
Subject: URI Templates: {prefix^variable*separator^suffix|default}

Next modification of my proposal:

{ prefix[^] variable [*separator] [^suffix] [|default] }

If <variable> is undefined, replace with
  <default>
If <variable> is a single value, replace with
  <prefix><variable><suffix>
If <variable> is a list of 2 values, replace with
  <prefix><variable[0]><separator><variable[1]><suffix>

A <prefix> in the form ?name= or &name= is treated specially.
If no question mark already appears in the URI under construction, for the prefix use
  ?<name>=
Otherwise, for the prefix use
  &<name>=

There are some shortcuts for convenience:
{prefix^var*} is a shortcut for {prefix^var*prefix}, which is useful for query parameters that can repeat.
{prefixvar} is a shortcut for {prefix^var}, but is only allowed if unambiguous (eg <prefix> ends with a <reserved> character).
{varsuffix} is shortcut for {var^suffix}, but is only allowed if unambiguous (eg <suffix> starts with a <reserved> character other than * and contains no <alpha> chars). {/name/} -> /alice/
{?name=} and {&name=} are shortcuts for {?name=name} and {&name=name}.
Omitting <default> or <suffix> is a shortcut for including them as an empty string.
…
Received on Wednesday, 14 November 2007 05:18:00 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Thursday, 13 January 2011 12:15:37 GMT