build_keywords.py 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. # generates keywords.html
  4. # (c) 2013 by the GRASS Development Team, Luca Delucchi
  5. import os
  6. import sys
  7. import glob
  8. import string
  9. from build_html import *
  10. blacklist = ['Display', 'Database', 'General', 'Imagery', 'Misc', 'Postscript',
  11. 'Raster', 'Raster3D', 'Temporal', 'Vector']
  12. path = sys.argv[1]
  13. year = os.getenv("VERSION_DATE")
  14. keywords = {}
  15. htmlfiles = glob.glob1(path, '*.html')
  16. for fname in htmlfiles:
  17. fil = open(os.path.join(path, fname))
  18. # TODO maybe move to Python re (regex)
  19. lines=fil.readlines()
  20. try:
  21. index_keys = lines.index('<h2>KEYWORDS</h2>\n') + 1
  22. index_desc = lines.index('<h2>NAME</h2>\n') + 1
  23. except:
  24. continue
  25. try:
  26. keys = lines[index_keys].split(',')
  27. except:
  28. continue
  29. for key in keys:
  30. key = key.strip()
  31. key = "%s%s" % (key[0].upper(), key[1:])
  32. if key not in keywords.keys():
  33. keywords[key] = []
  34. keywords[key].append(fname)
  35. elif fname not in keywords[key]:
  36. keywords[key].append(fname)
  37. for black in blacklist:
  38. try:
  39. del keywords[black]
  40. except:
  41. continue
  42. keywordsfile = open(os.path.join(path, 'keywords.html'), 'w')
  43. keywordsfile.write(header1_tmpl.substitute(title = "GRASS GIS " \
  44. "%s Reference Manual: Keywords index" % grass_version))
  45. keywordsfile.write(headerkeywords_tmpl)
  46. keywordsfile.write('<dl>')
  47. for key, values in sorted(keywords.iteritems()):
  48. keyword_line = "<dt><b>%s</b></dt><dd>" % key
  49. for value in sorted(values):
  50. keyword_line += ' <a href="%s">%s</a>,' % (value, value.replace('.html',
  51. ''))
  52. keyword_line = keyword_line.rstrip(',')
  53. keyword_line += '</dd>\n'
  54. keywordsfile.write(keyword_line)
  55. keywordsfile.write("</dl>\n")
  56. write_html_footer(keywordsfile, "index.html", year)
  57. keywordsfile.close()