Jeff Winkler wrote: > I've come up with a trigraph idiom, am curious if it's been done before > (probably). I like to use trigraphs occasionally. > > Scenario: I'm doing an RSS->Javascript conversion for our intranet. I'd > like to use different CSS class if a post is new. Code: > > hoursOld=abs(time.time()-time.mktime(i.modified_parsed))/3600 > cssClass=['rssLink','rssLinkNew'][hoursOld<12] > entry='<a href="%s" class="%s" target="detail">%s</a>' % > (cssClass,i['link'],i['title']) > > So, ['rssLink','rssLinkNew'] is index by boolean value- False:0, or > True:1. > > I realize many will find this hideous, but 3 lines of code to do > something simple seems equally bad. Thoughts? Is there a better way?
The need for ternary expressions seems to center around presentation to humans. I find myself using such expressions frequently in presentation templates or in code that prepares information for templates. You're using it the same way. I always write it this way: condition and truecase or falsecase This works as long as truecase evaluates as a true value. (If it doesn't, the result of the expression is falsecase.) So I would write the cssClass assignment like this: cssClass = (hoursOld < 12) and 'rssLinkNew' or 'rssLink' The C equivalent is more readable, but this is close enough. It's the same trick people use in shell scripts. Shane -- http://mail.python.org/mailman/listinfo/python-list