[Twisted-web] appropriate way to use patternGenerator

Carl Shimer carl at clingfire.net
Mon May 9 09:43:08 MDT 2005


Ok... I think I understand this issue a bit better.  I am deriving most of
my work in this area from the chatola example.  In chatola the pattern is
created at object initialization time (which won't work in my scenario).


The pattern needs to be used in the server side handler that is invoked by
the client javascript.  Excerpt from my class:


def on_submit(self,client,inputname,inputtags):



      # slot filling time




def render_input(self,ctx,data):

      return ctx.tag(onsubmit=livepage.handler(self.on_submit,



My solution (based on your comments):


1)    put a method in the stan tree prior to the set of tags that I want to
generate a pattern for

2)    store the pattern on the object for later use by on_submit.


def render_pattern(self,ctx,data):

            self.locelpattern = inevow.IQ(ctx).patternGenerator('loc_el')

            return ''


excepts from the stan tree:










-----Original Message-----
From: twisted-web-bounces at twistedmatrix.com
[mailto:twisted-web-bounces at twistedmatrix.com] On Behalf Of James Y Knight
Sent: Monday, May 09, 2005 9:36 AM
To: Discussion of twisted.web, Nevow,and Woven
Subject: Re: [Twisted-web] appropriate way to use patternGenerator



On May 8, 2005, at 6:31 PM, Carl Shimer wrote:

> I spent the last couple of hours trying to get the nevow LivePage  

> stuff to

> work.  The problem was on this line of my code:


> Inevow.IQ(self.docFactory).patternGenerator('foo')



It sounds like you're doing things the hard way, but I don't quite  

understand your description of what you want to do -- it's a bit too  

abstract for me. Patterns are designed for use by the immediately  

enclosing renderer, so they operate on the unrendered tree, not the  

rendered tree.


This is how most pattern uses look. A renderer which uses them,  

immediately enclosing the patterns themselves.

def render_boolean(self, ctx, data):

   return IQ(ctx).allPatterns(data and 'true' or 'false')


<div n:data="foo" n:render="boolean">

<span n:pattern="true">True!</span>

<span n:pattern="false">False!</span>



Perhaps your use case would be better served by filling slots?





Twisted-web mailing list

Twisted-web at twistedmatrix.com


-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://twistedmatrix.com/pipermail/twisted-web/attachments/20050509/c7a51d50/attachment.htm

More information about the Twisted-web mailing list