- From: Adam Barth <w3c@adambarth.com>
- Date: Fri, 17 Sep 2010 11:36:24 -0700
- To: Darin Fisher <darin@chromium.org>
- Cc: Julian Reschke <julian.reschke@gmx.de>, Anne van Kesteren <annevk@opera.com>, Boris Zbarsky <bzbarsky@mit.edu>, WebApps WG <public-webapps@w3.org>
On Fri, Sep 17, 2010 at 11:16 AM, Darin Fisher <darin@chromium.org> wrote:
> On Fri, Sep 17, 2010 at 11:05 AM, Adam Barth <w3c@adambarth.com> wrote:
>> On Fri, Sep 17, 2010 at 10:27 AM, Adam Barth <w3c@adambarth.com> wrote:
>> > On Thu, Sep 16, 2010 at 3:25 PM, Darin Fisher <darin@chromium.org>
>> > wrote:
>> >> On Thu, Sep 16, 2010 at 6:31 AM, Julian Reschke <julian.reschke@gmx.de>
>> >> wrote:
>> >>> That sounds good to me. In general I think it would be great if there
>> >>> were
>> >>> standard APIs for URI/IRI construction, parsing and resolution...
>> >>
>> >> Yes, that sounds pretty good to me too.
>> >
>> > This has annoyed me for a while too.  I'll write up a spec.
>>
>> Here's a sketch:
>>
>> https://docs.google.com/document/edit?id=1r_VTFKApVOaNIkocrg0z-t7lZgzisTuGTXkdzAk4gLU&hl=en
>
> Nice!  Is there any implicit unescaping done when reading those members?
>  I'd hope for the answer to be "no" :-)
That's a good question.  I'd expect them to just be textual segments
of the URL so you could reconstruct the URL by concatenating them.
> When does canonicalization happen?  Only when you call href?  Or, does it
> happen when you readback any attribute?
I think it should happen when you read back any attribute.  That seems
safest from a security perspective since you're aways reading back
something canonical.
On Fri, Sep 17, 2010 at 11:16 AM, Nathan <nathan@webr3.org> wrote:
> might I suggest naming it URI or IRI, and the addition of some or all of the
> following methods:
I'd like to avoid bikeshedding about the name at this time.  We can
certainly discuss that in the future.
>  bool isAbsolute();
>  URI toAbsolute();
The interface will always represent an absolute URL.
>  URI defrag();
What does this mean?  If you mean "remove the fragment," you can do
that by assigning null to the hash property.
>  URI resolveReference(in URI reference);
You can do this with the constructor:
var resolved_url = new URL(relative_url, base_url);
> the following methods exposed to handle complicated URIs:
>
>  u = new URI('http://ex.org/a/b/c/d/../.././egg#s/../x');
>  u.isAbsolute();                        -> boolean
>  u.defrag();                            ->
> 'http://ex.org/a/b/c/d/../.././egg'
>  u.toAbsolute();                        -> 'http://ex.org/a/b/egg'
>
> and to resolve relative URIs + URI References:
>
>  u = new URI('http://ex.org/a/b/c/d');
>  u.resolveReference('../.././n?x=y');   -> 'http://ex.org/a/n?x=y'
>
> ps: I'll happily implement this interface Javascript whenever as I've
> already got something similar: http://github.com/webr3/URI
Thanks.  It would certainly be helpful to have a sample implementation
in JavaScript.
Adam
Received on Friday, 17 September 2010 18:37:30 UTC