mirror of
https://expo.survex.com/repositories/expoweb/.git/
synced 2025-12-08 23:04:35 +00:00
[svn r6904] Massive global update. Area index pages now auto-generated. Numerous files moved to more sensible places. Over 400 broken links (most, but not all, created in the above two steps) fixed.
This commit is contained in:
85
noinfo/make-areaindices.py
Normal file
85
noinfo/make-areaindices.py
Normal file
@@ -0,0 +1,85 @@
|
||||
import re, sys, os
|
||||
from string import join
|
||||
import csv
|
||||
|
||||
areas = []
|
||||
caves = []
|
||||
|
||||
WARNING_MESSAGE="""
|
||||
<!-- Do not edit this file! It is auto-generated. Edit the template file noinfo/areapage_skeletons/%s instead. -->
|
||||
"""
|
||||
|
||||
TABLE_PREAMBLE="""
|
||||
<table class="centre" border="1">
|
||||
<tr><th align="center">Number</th><th>Name</th></tr>"""
|
||||
|
||||
TABLE_LINE="""
|
||||
<tr><td align="right"><a id="id%(lcnumber)s">%(number)s</a></td><td><a href="%(url)s">%(name)s</a></td></tr>
|
||||
"""
|
||||
|
||||
TABLE_POSTAMBLE="""
|
||||
</table>"""
|
||||
|
||||
def main():
|
||||
read_cavetab()
|
||||
create_indices()
|
||||
|
||||
def read_cavetab():
|
||||
cavetabfile = file("noinfo/CAVETAB2.CSV")
|
||||
fieldnames = chomp(cavetabfile.next()).replace('"','').split(",")
|
||||
cavetab = csv.DictReader(cavetabfile, fieldnames)
|
||||
for cave in cavetab:
|
||||
if(cave["Multiple entrances"] not in ("", "yes")):
|
||||
continue
|
||||
area = cave["Area"]
|
||||
if(area not in areas): areas.append(area)
|
||||
caves.append(cave)
|
||||
|
||||
def create_indices():
|
||||
files_tohandle = os.listdir("noinfo/areapage_skeletons/")
|
||||
for f in files_tohandle:
|
||||
create_one_index(f)
|
||||
|
||||
def create_one_index(filename):
|
||||
if(filename[-1]!="l"): return
|
||||
template = file("noinfo/areapage_skeletons/"+filename).read()
|
||||
try:
|
||||
destination = re.search(r'<destination\s*dest="([^"]*)"\s*/>', template, re.IGNORECASE).group(1)
|
||||
except:
|
||||
print "Error on: ", filename
|
||||
return
|
||||
outfile = file(destination, "w")
|
||||
template = re.sub(r'(?i)<head>', '<head>' + (WARNING_MESSAGE % filename), template)
|
||||
outfile.write(re.sub(r'(?i)<areatable\s*areacode="([^"]*)"\s*/>', formatted_table, template))
|
||||
# re.sub doesn't support re.IGNORECASE, so use (?i) escape code
|
||||
|
||||
|
||||
|
||||
def formatted_table(area_matchobj):
|
||||
area = area_matchobj.group(1)
|
||||
thisarea_caves = filter(lambda u: inarea(u, area), caves)
|
||||
t = TABLE_PREAMBLE
|
||||
for cave in thisarea_caves:
|
||||
args = {"number" : number(cave),
|
||||
"lcnumber" : number(cave).lower(),
|
||||
"url" : "../" + cave["Autogen file"],
|
||||
"name" : cave["Name"] or cave["Unofficial Name"] or "?"}
|
||||
t = t + (TABLE_LINE % args)
|
||||
return t + TABLE_POSTAMBLE
|
||||
|
||||
|
||||
def number(cave):
|
||||
return cave["Kataster Number"] or cave["Unofficial number"]
|
||||
|
||||
def chomp(s):
|
||||
if(s[-1] == "\n"): return s[:-1]
|
||||
else: return s
|
||||
|
||||
def inarea(cave, area):
|
||||
return re.match(area+r'[a-z]*', cave["Area"])
|
||||
|
||||
|
||||
main()
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user