Re: [Cheetahtemplate-discuss] #def woes
Brought to you by:
rtyler,
tavis_rudd
From: <mob...@gm...> - 2009-05-21 22:53:11
|
#def displayfloat($a) $("%.2f"%$a)#slurp #end def #set showfloat = self.displayfloat This doesnt work either str(compiled_tmpl) File "/usr/lib/python2.5/site-packages/Cheetah/Template.py", line 997, in __str__ return getattr(self, mainMethName)() File "<string>", line 3514, in respond NotFound: cannot find 'showfloat' while searching for 'showfloat' On Thu, May 21, 2009 at 3:52 PM, <mob...@gm...> wrote: > #def displayfloat($a) > $("%.2f"%$a)#slurp > #end def > *#set showfloat = $getVar('displayfloat', autoCall=False)* > > ## return a callable value for $name > #def callable($name) > #return $getVar($name, autoCall=False) > #end def > > *#set showfloat =$callable('displayfloat')* > > both these options *dont *work > return str(compiled_tmpl) > File "/usr/lib/python2.5/site-packages/Cheetah/Template.py", line 997, in > __str__ > return getattr(self, mainMethName)() > File "<string>", line 3514, in respond > NotFound: cannot find 'showfloat' while searching for 'showfloat' > > > > On Thu, May 21, 2009 at 2:57 PM, R. Tyler Ballance <ty...@sl...>wrote: > >> On Thu, May 21, 2009 at 02:55:50PM -0700, mob...@gm... wrote: >> > #set $faa = self.foo >> > >> > This is cool calling with self. doesnt autocall >> >> It doesn't call because you're in the right hand operand (where you need >> not use Cheetah syntax), and you're not using the '$'. When you use the $, >> that invokes the NameMapper which is responsible for autocalling. >> >> I personally prefer this option to $getVar() which feels distinctly >> non-Pythonic ;) >> >> >> > On 5/20/09, Michael Higgins <hi...@rh...> wrote: >> > >> > On May 20, 2009, at 4:18 PM, R. Tyler Ballance wrote: >> > >> > I /think/ this should work: >> > #set $faa = foo >> > >> > I'm not running the latest and greatest, but that doesn't work for >> me. >> > What *does* work for me is saying >> > >> > #set $faa = self.foo >> > >> > Exploiting self in such an unvarnished way seems like it might be >> too >> > close to relying on an implementation detail, but maybe it's okay. >> I >> > guess Cheetah already has to guarantee not to do name-mangling or >> > something so that Python code can call Cheetah methods properly... >> > >> > Alternatively, you can use: >> > #set $faa = $foo >> > >> > If you compile the templates with autocalling disabled >> > >> > Personally, I'm not a huge fan of tweaking the compile settings a >> lot >> > for different templates. It's just one more thing that can >> mysteriously >> > break and take a long time to figure out. >> > >> > To answer mobiledreamer's (later) question about what a wrapper >> function >> > would look like: >> > >> > ## return a callable value for $name >> > #def F($name) >> > #return $getVar($name, autoCall=False) >> > #end def >> > >> > #set $faa = $F('foo') >> > >> > ... assuming the self trick isn't the preferable style. (It's >> certainly >> > shorter!) >> > >> > Mike >> > >> > -- >> > Bidegg worlds best auction site >> > http://bidegg.com >> >> -- >> -R. Tyler Ballance >> Slide, Inc. >> > > > > -- > Bidegg worlds best auction site > http://bidegg.com > -- Bidegg worlds best auction site http://bidegg.com |