web3py does that already. Although it does not support the exact syntax you proposed. Did you try it?
On Monday, 10 December 2012 17:42:20 UTC-6, Robert Clark wrote: > > A couple of days ago in the "web3py important!" thread I posted some > thoughts on URL route matching syntax for the @expose(....) method, but my > post is yet to surface. Posting a more-considered version here for > consideration and feedback. > > I've been looking into some other frameworks, and Alloy stands out to me ( > http://alloyframework.org/manual/url-router/), it's the main inspiration > for the syntax below. (Also looked at Flask, Silex, Codeignighter, Django > and considered trade offs each one brings) > > In a URL route lets say that '/' delimits segments, and anything between > matching '<' and '>' pairs is a segment pattern. Each segment may contain > either static text or a segment pattern. Segment patterns cannot span '/' > separators. > > 1. Suggest use symbols to define string and integer types in segment > patterns. ":" = "str", "#" = int (are other types necessary?). So ':' is > no longer a delimiter. > @expose('/index/<:company>/<#ssd>') > def index(company, ssd): > '''company is a string, ssd is an int''' > > 2. Up to one question mark may be included immediately before any '/' to > indicate the remaining segment patterns are all optional (and consequently > map to non-required attributes which may have defaults). By specifying a > single point in the route beyond which matching segments are optional, it's > harder to write ambiguous route definitions. > @expose('/index/<:company>/<#ssd>?/<#favourite>') > def index(company, sad, favourite=None): > > @expose('index/<:company>/<#ssd>?/<#favourite>/<#last_visited_article>') > def index(company, ssd, favourite=None, last_visited_article=1): > > 3. Perhaps use "*" as wildcard to match text (including '/') but there may > be good security reasons not to allow? The constraint could be that no > segment patterns may follow. Also only one per route. Always a string. > @expose('index/<:company>/<#ssd>?/<*rest_of_url>') > def index(company, ssd, part_of_url='not provided'): > > @expose('index/<:company>/<#ssd>/<*part_of_url>/some-static-text') > def index(company, ssd, part_of_url): > > 4. Regex. Must match whole segments - i.e. shouldn't be able to split a > section into multiple parameters with a regex. Keep type - so regex match > is still passed through as string or int. (E.g. the 4-digit year is passed > through as 'int' here.). It's not really a validator but could be abused > that way. > @expose('index/<:company|[A-Za-z ]{3,20}>/<#year|[0-9]{4}>') > def index(company, year): > > Cheers > Rob > > > On Tuesday, November 27, 2012 1:39:06 AM UTC-3, User wrote: >> >> I noticed a thread over in web2py-developers web3py - >> important!<https://groups.google.com/forum/?fromgroups=#!topic/web2py-developers/RCeiRd3Rzs0> >> which >> was exciting to read. I've flirted with web2py and there's a lot that I >> like about it. For some reason I find web2py exciting whereas django >> doesn't provide that. I've used Yii on the php side which is great >> framework as far as php goes and asp.net mvc which is great as well. >> I'd love to work with python but the main thing making me hesitate with >> web2py is critical mass. >> >> It seems like it wouldn't be hard for web2py to really dominate the >> python web framework space if some of the core criticisms were addressed. >> I'm not fully up to speed on what they are but I usually hear about unit >> testing and global variables. It feels like there is a roadblock >> preventing the project from skyrocketing. Python needs a rails. I >> understand that the design decisions are by choice with pros and cons. >> >> My questions are: >> 1. Will web3py likely address these often repeated core criticisms? (I >> saw point 5 from the thread linked to above: "5) No more global >> environment. Apps will do "from web3py import *" (see below)") >> 2. The developer thread is over in the developers section. Will you have >> a more open forum for users (as opposed to developers) to have input on >> web3py? >> >> >> > --