build_keywords.py 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  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. # remove empty lines
  21. lines = [x for x in lines if x != '\n']
  22. try:
  23. index_keys = lines.index('<h2>KEYWORDS</h2>\n') + 1
  24. index_desc = lines.index('<h2>NAME</h2>\n') + 1
  25. except:
  26. continue
  27. try:
  28. keys = lines[index_keys].split(',')
  29. except:
  30. continue
  31. for key in keys:
  32. key = key.strip()
  33. key = "%s%s" % (key[0].upper(), key[1:])
  34. if key not in keywords.keys():
  35. keywords[key] = []
  36. keywords[key].append(fname)
  37. elif fname not in keywords[key]:
  38. keywords[key].append(fname)
  39. for black in blacklist:
  40. try:
  41. del keywords[black]
  42. except:
  43. continue
  44. keywordsfile = open(os.path.join(path, 'keywords.html'), 'w')
  45. keywordsfile.write(header1_tmpl.substitute(title = "GRASS GIS " \
  46. "%s Reference Manual: Keywords index" % grass_version))
  47. keywordsfile.write(headerkeywords_tmpl)
  48. keywordsfile.write('<dl>')
  49. for key, values in sorted(keywords.iteritems()):
  50. keyword_line = "<dt><b>%s</b></dt><dd>" % key
  51. for value in sorted(values):
  52. keyword_line += ' <a href="%s">%s</a>,' % (value, value.replace('.html',
  53. ''))
  54. keyword_line = keyword_line.rstrip(',')
  55. keyword_line += '</dd>\n'
  56. keywordsfile.write(keyword_line)
  57. keywordsfile.write("</dl>\n")
  58. write_html_footer(keywordsfile, "index.html", year)
  59. keywordsfile.close()