- From: Marc Portier <marc.portier@gmail.com>
- Date: Tue, 09 Aug 2011 08:50:42 +0200
- To: URI <uri@w3.org>
- CC: "Roy T. Fielding" <fielding@gbiv.com>
Hi all, I've finally come round to updating my js implementation to the latest state of the spec (that is currently r71 at http://code.google.com/p/uri-templates/) I know this has no official 0.6 label (yet), but since it fixed some samples and removed some more requirements (e.g. the 'default') lazy me thought this to be an easier goal. Anyway, here some findings: [unnamed list expansion for ; matrix-params] Anyway: I only have one case that made me add some quirk to comply to: {;list*} ;red;green;blue Without the quirk my implementation produced: {;list*} ;list=red;list=green;list=blue Well, I obviously don't like quirks, but sentiments aside I am left to wonder if the matrix-parameters are not always expected to carry a name? [encoded names] If I understood the spec correctly the varspec-names can contain pcnt-encoded characters, and should be decoded to translate onto context-keys. Thus the following expansions should work out as listed, right? > var context = { > "!": "exclamation-mark", > "%21": "encoded exclamation-mark" > } > > var testset = { > "{!}" : "{!}", > "{%21}" : "exclamation_mark" > }; > [nesting context variables] The spec doesn't play out dereferencing nested structures by using . (or some other notation) between variable-names. I'm not sure if this on purpose or just a wicked idea from me: > var context = { > "a.b" : "value-at-a.b", > "x" : { "y": "value-at-y-via-x"} > } > > var testset = { > "{a.b}" : "value-at-a.b", > "{x.y}" : "value-at-y-via-x" > }; Dunno if this makes sense to add, but it seems like a fairly easy thing to add in the implementation. On the other hand, it can be overcome by preprocessing the context structure (pretty much similar to how we currently would be adding the removed 'defaults' behavior, no?) Note there is a challenge to correctly define 'preference of finding' which of possibly multiple matching keys with this approach. "a.b.c" might be found at any of: "a.b.c" "a"->"b.c", "a"->"b"->"c", "a.b"->"c" All for now. My implementation can be found at https://github.com/marc-portier/uri-templates (The two failing tests (src/test/webenv/test.html) at the moment are the ones mentioned just above, I'll gladly fix taking into account your responses and clarifications. If time permits I'll try to add some more edge-case tests) regards, -marc=
Received on Tuesday, 9 August 2011 06:51:22 UTC