X-Git-Url: https://git.phdru.name/?a=blobdiff_plain;f=gen-sitemap.py;h=32c729dfabefcc7d9047e9c2a442aaae46bb8ed6;hb=0c0058d611f55ddae8c08726acb9952e5984f8da;hp=63b34a2ff5ce9af1df3e161410d56205de97d76b;hpb=2f9b1d1da8492b7e0456953e585f247adfcbe3ab;p=phdru.name%2Fphdru.name.git
diff --git a/gen-sitemap.py b/gen-sitemap.py
index 63b34a2..32c729d 100755
--- a/gen-sitemap.py
+++ b/gen-sitemap.py
@@ -12,10 +12,11 @@ parser.add_argument('root_dir', help='Root dicrectory')
args = parser.parse_args()
exclude = []
-for pat in args.exclude:
- exclude.append(pat)
- if not pat.endswith('/*'):
- exclude.append(pat + '/*')
+if args.exclude:
+ for pat in args.exclude:
+ exclude.append(pat)
+ if not pat.endswith('/*'):
+ exclude.append(pat + '/*')
os.chdir(args.root_dir)
fullpath = os.getcwd()
@@ -48,23 +49,44 @@ for dirpath, dirs, files in sorted(os.walk(fullpath)):
except StopIteration:
pass
-def _tree2html(tree, level=0):
- indent = " " * level
- strings = []
- strings.append(indent + "
")
-
- level += 1
- indent2 = " " * level
-
+def _tree2html(tree, path='', level=0):
+ subparts = []
+ indent = " " * (level + 1)
for title, subtree in tree:
+ subpath = "%s/%s" % (path, title)
+ if subpath.startswith('/'):
+ subpath = subpath[1:]
+ href = '%s' % (subpath, title)
if subtree:
- strings.append(indent2 + "- %s" % title)
- strings.append(_tree2html(subtree, level+1))
- strings.append(indent2 + "
")
+ subparts.append(indent + "- %s" % href)
+ subparts.append(_tree2html(subtree, subpath, level+2))
+ subparts.append(indent + "
")
else:
- strings.append(indent2 + "- %s
" % title)
+ subparts.append(indent + "- %s
" % href)
+ s = "\n".join(subparts)
+
+ parts = []
+ indent = " " * level
+ parts.append(indent + "")
+ parts.append(s)
+ parts.append(indent + "
")
+
+ return "\n".join(parts)
+
+sitemap_tmpl = ["""\
+#extends phd_site
+#implements respond
+#attr $Title = 'Sitemap'
+#attr $Copyright = 2015
+##
+#def body_html
+"""]
+
+sitemap_tmpl.append(_tree2html(tree[1]))
- strings.append(indent + "
")
- return '\n'.join(strings)
+sitemap_tmpl.append("""
+#end def
+$phd_site.respond(self)
+""")
-write_if_changed("sitemap.html", _tree2html(tree[1]))
+write_if_changed("sitemap.tmpl", ''.join(sitemap_tmpl))