build_keywords.py 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. # generates topics.html and topic_*.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().title()
  31. if key not in keywords.keys():
  32. keywords[key] = []
  33. keywords[key].append(fname)
  34. elif fname not in keywords[key]:
  35. keywords[key].append(fname)
  36. for black in blacklist:
  37. try:
  38. del keywords[black]
  39. except:
  40. continue
  41. topicsfile = open(os.path.join(path, 'keywords.html'), 'w')
  42. topicsfile.write(header1_tmpl.substitute(title = "GRASS GIS " \
  43. "%s Reference Manual: Topics index" % grass_version))
  44. topicsfile.write(headertopics_tmpl)
  45. for key, values in sorted(keywords.iteritems()):
  46. keyword_line = "<li><b>%s</b>:" % key
  47. for value in values:
  48. keyword_line += ' <a href="%s">%s</a>,' % (value, value.replace('.html',
  49. ''))
  50. keyword_line = keyword_line.rstrip(',')
  51. keyword_line += '</li>\n'
  52. topicsfile.write(keyword_line)
  53. topicsfile.write("</ul>\n")
  54. write_html_footer(topicsfile, "index.html", year)
  55. topicsfile.close()