On 3 avr, 19:22, Mike Orr <sluggos...@gmail.com> wrote:
> On Fri, Apr 3, 2009 at 7:38 AM, KLEIN Stéphane <klein.steph...@gmail.com> 
> wrote:
>
> > Hi,
>
> > What do you think about this web helper function ?
>
> > ::
>
> >    def tag_class(values):
> >        values = [v for v in values if v != None]
> >        if values:
> >            return 'class="%s"' % " ".join(values)
> >        return ''
>
> > Example of use in mako template :
>
> > ::
>
> >    <tr>
> >    % for i, column in enumerate(c.columns):
> >        <th ${h.tag_class(("firstcolumn" if i == 0 else None, "asc" if
> > request.GET.get("o") == "asc" else None))}>${column.name}</th>
> >    % endfor
> >    </tr>
>
> > Thanks for your comment.
>
> > Regards,
> > Stephane
>
> The first thing is to use the HTML object to create tags.  This
> handles escaping in case the values contain markup characters, and is
> the way all WebHelpers tags are built.
>
> from webhelpers.html import HTML
> print HTML.th(column.name, class_="firstcolumn asc")
>
> This can be done in a template of course.
>
> <%!  from webhelpers.html import HTML  %>
> ${HTML.th(column.name, class_="firstcolumn asc")}
>
> This also means the function should return only the attribute value,
> not the complete attribute.  I could go either way on that, since
> programmable CSS classes are very common in applications.  I would
> filter out all false values, not just None, because an empty string is
> useless as a CSS class.  What one really wants is a list of
> corresponding conditions and the value to choose if true.  I'm not
> sure what's the best data structure for this.
>
> def css_classes(value_condition_pairs):
>     classes = []
>     for value, condition in value_condition_pairs:
>         if condition:    # Or ``if condition and value``
>             classes.append(value)
>     return " ".join(classes)
>
> print css_classes([
>     ("firstcolumn", i == 0),
>     ("asc", request.get("o")),
>     ]
>
> How would that be?

Very good. Only one thing :

print HTML.th("foobar", class_="")

return : <th class="">foobar</th>

I would like <th>foobar</th>.

Do you add "css_classes" feature in webhelpers repository ?

Regards,
Stephane
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"pylons-devel" group.
To post to this group, send email to pylons-devel@googlegroups.com
To unsubscribe from this group, send email to 
pylons-devel+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/pylons-devel?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to