On Jan 15, 2008 11:45 PM, Andrew Smart <[EMAIL PROTECTED]> wrote:
> I just want to add some sugar to the discussion:
>
> Instead of
> m.connect("foobar", vars) it was proposed: m.foobar(vars...)
>
> One option could be:
> m.routes.foobar(vars...)
> => adding a central var under which all named routes are accessible as
> attributes
>
> Alternativly:
> m["foobar"] = routedef(vars...)
> => which would require a additional class which is used for
> instantiation of the
> routing definition (holding the vars)
> => access to the named routes in a way which shows that the mapper is a
> kind of
> data storage for routes
>
> This approach would also allow to make something like:
> myroute = m["google"]
> myroute.url_for(vars...)
>
> or shorter:
> m["google"].url_for(vars...)
Now we're talking. This may be the best compromise. It avoids
conflicts, allows calculated names, and keeps the name separate from
the variables. I do like url_for.home(), but I certainly don't want
to make people use getattr for a calculated name.
Templates need a single route-generator object. Traditionally this has
been a separate function 'url_for'. There's no reason it can't be the
same object as the route map, though we can't call it 'm' because the
trend has been away from one-letter globals. It also needs to be
something other than 'url' and 'map' to avoid conflicting with common
user variables or builtins, and distinct for grepping. I can't think
of a better name than 'url_for'.
But 'url' for as an attribute can be shortened to 'url' or
'.__call__'. The latter is closer to our original plan, which would
result in:
url_for['google']()
url_for['google'](q='My Query")
On the construction side, I guess we'd better stick with the name as
the first argument:
m.connect("name", "path", **variables)
That:
- avoids exposing the Route class, which gives us greater freedom in
the implementation.
- follows a Python tradition of using a factory function to
instantiate an unexposed class and put it in a map.
- Allows longer routes to fit on one line of code, especially if the
user assigns "C = m.connect".
> I would be even more happier if routes 2 would consistently allow proper
> subdomain
> handling... ;-))
Ben has some ideas about this which he hasn't told me, so I don't know
what he's cooking up. What are the problems with subdomains?
--
Mike Orr <[EMAIL PROTECTED]>
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"pylons-devel" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/pylons-devel?hl=en
-~----------~----~----~----~------~----~------~--~---