Help needed to simplify some code
Several months ago someone provided me with me with some sample code which did exactly what I wanted, but looking at it again it looks a little unwieldy and could do with tidying up. It consists of:- <span tal:define="opts python:here.lib.parse_file(file=here.news,sepr=',',clone=1)"> <tal:block repeat="opt opts"> <li><a tal:content="python:opt[1]" tal:attributes="href python:'news_items/' + opt[0]"></a></li> </tal:block> </span> which involves parsing a file containing two fields separated by ',' eg. 001,abc 002,jkl 003,xyz The second field is just a string which appears in a selection menu, and the first is the name of a folder which contains an object called 'content' which get displayed on selecting the correponding link. I know this is not a particularly elegant way of doing it, but after looking at some TAL examples just can't figure out the right way to do it. Some help in simplifying it would be appreciated. -- John
John Poltorak wrote:
Several months ago someone provided me with me with some sample code which did exactly what I wanted, but looking at it again it looks a little unwieldy and could do with tidying up. It consists of:-
<span tal:define="opts python:here.lib.parse_file(file=here.news,sepr=',',clone=1)"> <tal:block repeat="opt opts"> <li><a tal:content="python:opt[1]" tal:attributes="href python:'news_items/' + opt[0]"></a></li> </tal:block> </span>
Okay, if you can get parse_file to return a list of dictionaries like: [ { 'folder':'whatever', 'label':'whatever', } ] ...then you can do: <span tal:define="opts python:here.lib.parse_file(file=here.news,sepr=',',clone=1)"> <li repeat="opt opts"> <a tal:content="python:opt/label" tal:attributes="href string:news_items/${opt/folder}"/> </li> </span> cheers, Chris -- Simplistix - Content Management, Zope & Python Consulting - http://www.simplistix.co.uk
On Wed, Mar 08, 2006 at 09:35:55AM +0000, Chris Withers wrote:
John Poltorak wrote:
Several months ago someone provided me with me with some sample code which did exactly what I wanted, but looking at it again it looks a little unwieldy and could do with tidying up. It consists of:-
(snip)
What Chris said, except:
...then you can do:
<span tal:define="opts python:here.lib.parse_file(file=here.news,sepr=',',clone=1)"> <li repeat="opt opts"> <a tal:content="python:opt/label" ^^^^^^^ Leave out the "python:" there.
-PW -- Paul Winkler http://www.slinkp.com
Paul Winkler wrote:
<span tal:define="opts python:here.lib.parse_file(file=here.news,sepr=',',clone=1)"> <li repeat="opt opts"> <a tal:content="python:opt/label" ^^^^^^^ Leave out the "python:" there.
Whoops, yep, sorry about that... Chris -- Simplistix - Content Management, Zope & Python Consulting - http://www.simplistix.co.uk
participants (3)
-
Chris Withers -
John Poltorak -
Paul Winkler