| Newsgroups |
gmane.comp.python.cheetah |
| Message-ID |
<[email protected]> |
why do u not like autocalling?
On Thu, May 21, 2009 at 3:59 PM, R. Tyler Ballance <[email protected]> wrote:
> On Thu, May 21, 2009 at 03:52:08PM -0700, [email protected] 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')
>
> Dude you're stomping on builtins, you probably shouldn't do that:
>
> >>> callable
> <built-in function callable>
> >>>
>
> The first example you've got works fine:
>
> >>> from Cheetah.Template import Template
> >> t = Template('''#def displayfloat(a)
> ... $("%.2f"%$a)#slurp
> ... #end def
> ... #set showfloat = $getVar('displayfloat', autoCall=False)
> ... $showfloat(3.14)
> ... ''')
> >>> t.respond()
> u'3.14\n'
> >>>
>
> I'm not sure what you're doing, it could be due to overriding the builtin
> callable() function which NameMapper *does* use for lookups (stupid
> auto-calling), that's my only guess for why this is failing for you.
>
> >
> > 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 <[email protected]>
> > wrote:
> >
> > On Thu, May 21, 2009 at 02:55:50PM -0700, [email protected]
> > 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 <[email protected]> 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
>
> --
> -R. Tyler Ballance
> Slide, Inc.
>
--
Bidegg worlds best auction site
http://bidegg.com
------------------------------------------------------------------------------
Register Now for Creativity and Technology (CaT), June 3rd, NYC. CaT
is a gathering of tech-side developers & brand creativity professionals. Meet
the minds behind Google Creative Lab, Visual Complexity, Processing, &
iPhoneDevCamp asthey present alongside digital heavyweights like Barbarian
Group, R/GA, & Big Spaceship. http://www.creativitycat.com
_______________________________________________
Cheetahtemplate-discuss mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/cheetahtemplate-discuss