# need a function to separate the nodes into columns...
def split_columns(nodes, columns=1):
if columns <= 1:
- return (nodes,)
+ return [nodes]
# This is a rough height; we may have to increase to avoid breaks before
# a subitem.
colheight = len(nodes) / columns
start = i * colheight
end = start + colheight
cols.append(nodes[start:end])
- return tuple(cols)
+ return cols
DL_LEVEL_INDENT = " "
% (letter, lettername)
-def format_html(nodes, columns=1):
+def format_html_letters(nodes, columns=1):
letter_groups = split_letters(nodes)
items = []
for letter, nodes in letter_groups:
s.append(format_nodes(nodes, columns))
return string.join(s, '')
+def format_html(nodes, columns):
+ return format_nodes(nodes, columns)
+
def collapse(nodes):
"""Collapse sequences of nodes with matching keys into a single node.
ifn = "-"
ofn = "-"
columns = 1
- opts, args = getopt.getopt(sys.argv[1:], "c:o:", ["columns=", "output="])
+ letters = 0
+ opts, args = getopt.getopt(sys.argv[1:], "c:lo:",
+ ["columns=", "letters", "output="])
for opt, val in opts:
if opt in ("-o", "--output"):
ofn = val
elif opt in ("-c", "--columns"):
columns = string.atoi(val)
+ elif opt in ("-l", "--letters"):
+ letters = 1
if not args:
args = [ifn]
nodes = []
nodes = nodes + load(open(fn))
nodes.sort()
collapse(nodes)
- html = format_html(nodes, columns)
+ if letters:
+ html = format_html_letters(nodes, columns)
+ else:
+ html = format_html(nodes, columns)
if ofn == "-":
sys.stdout.write(html)
else: