need dict to maintain order
rihad
rihad at mail.ru
Sat Jan 19 09:03:57 EST 2002
On Fri, 18 Jan 2002 11:39:36 -0500, "Steve Holden"
<sholden at holdenweb.com> wrote:
>Rather than using a dictionary and then (presumably) a while loop until the
>dictionary is empty, consider setting up a list or tuple of tuples, such as
>
> links = (('index.html', 'Home'), ('file0.html', 'Some foo'))
>
>The you can use
>
> for link, caption in links:
> # generate nav bar line from link and capion
>
Here's what I was able to come up with (constantly referring to the
man/tut :)). Maybe someone finds it... hmmm... useful and/or enjoys
commenting newbies' code :)
(sorry, didn't `tabs2spaces' the code since tabs are natural (?) in
python anyway)
import os
class navbar:
def __init__(self):
self.links = ( \
('index.html', 'Home'), \
('prog.html', 'Programming'), \
('doc.html', 'Docs'), \
)
self.dirname = self.__class__.__name__
self.cur_link = 0
try:
os.mkdir(self.dirname)
except OSError:
pass
def __call__(self):
while self.cur_link < len(self.links):
self.start()
for link, target in self.links:
self.start_link()
if self.cur_link != self.num_done:
self.f.write("""<a href="%s">%s</a>""" % (link,
target))
else:
self.f.write("""<span
class="disabled-link">%s</span>""" % target)
self.end_link()
self.end()
def start(self):
fullname = self.dirname + '\\' + self.links[self.cur_link][0]
+ '.nav'
self.f = file(fullname, "w")
self.num_done = 0
def start_link(self):
pass
def end_link(self):
self.num_done += 1
def end(self):
self.f.close()
self.cur_link += 1
class navbar_horz(navbar):
def __init__(self):
navbar.__init__(self)
def start(self):
navbar.start(self)
self.f.write("""<div class="navbar-horz">\n[\n""")
def start_link(self):
navbar.start_link(self)
def end_link(self):
navbar.end_link(self)
if self.num_done < len(self.links):
self.f.write("\n | ")
def end(self):
self.f.write("\n]\n</div>\n")
navbar.end(self)
class navbar_vert(navbar):
def __init__(self):
navbar.__init__(self)
def start(self):
navbar.start(self)
self.f.write("""<div class="navbar-vert">\n""")
def start_link(self):
navbar.start_link(self)
def end_link(self):
navbar.end_link(self)
if self.num_done < len(self.links):
self.f.write("<br><br>\n")
def end(self):
self.f.write("\n</div>\n")
navbar.end(self)
if __name__ == '__main__':
navbar_horz()()
navbar_vert()()
More information about the Python-list
mailing list