build_keywords.py 2.1 KB

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