#!/usr/bin/env python3 # -*- coding: utf-8 -*- # generates topics.html and topic_*.html # (c) 2012 by the GRASS Development Team, Markus Neteler, Luca Delucchi import os import sys import glob from build_html import * path = sys.argv[1] year = os.getenv("VERSION_DATE") min_num_modules_for_topic = 3 keywords = {} htmlfiles = glob.glob1(path, "*.html") for fname in htmlfiles: fil = open(os.path.join(path, fname)) # TODO maybe move to Python re (regex) lines = fil.readlines() try: index_keys = lines.index("

KEYWORDS

\n") + 1 index_desc = lines.index("

NAME

\n") + 1 except: continue try: key = lines[index_keys].split(",")[1].strip().replace(" ", "_") key = key.split(">")[1].split("<")[0] except: continue try: desc = lines[index_desc].split("-", 1)[1].strip() except: desc.strip() if key not in keywords.keys(): keywords[key] = {} keywords[key][fname] = desc elif fname not in keywords[key]: keywords[key][fname] = desc topicsfile = open(os.path.join(path, "topics.html"), "w") topicsfile.write( header1_tmpl.substitute( title="GRASS GIS " "%s Reference Manual: Topics index" % grass_version ) ) topicsfile.write(headertopics_tmpl) for key, values in sorted(keywords.items(), key=lambda s: s[0].lower()): keyfile = open(os.path.join(path, "topic_%s.html" % key), "w") keyfile.write( header1_tmpl.substitute( title="GRASS GIS " "%s Reference Manual: Topic %s" % (grass_version, key.replace("_", " ")) ) ) keyfile.write(headerkey_tmpl.substitute(keyword=key.replace("_", " "))) num_modules = 0 for mod, desc in sorted(values.items()): num_modules += 1 keyfile.write( desc1_tmpl.substitute(cmd=mod, desc=desc, basename=mod.replace(".html", "")) ) if num_modules >= min_num_modules_for_topic: topicsfile.writelines( [moduletopics_tmpl.substitute(key=key, name=key.replace("_", " "))] ) keyfile.write("\n") # link to the keywords index # TODO: the labels in keywords index are with spaces and capitals # this should be probably changed to lowercase with underscores keyfile.write( "

See also the corresponding keyword" ' {key}' " for additional references.".format(key=key.replace("_", " ")) ) write_html_footer(keyfile, "index.html", year) topicsfile.write("\n") write_html_footer(topicsfile, "index.html", year) topicsfile.close()