build_topics.py 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. # generates topics.html and topic_*.html
  4. # (c) 2012 by the GRASS Development Team, Markus Neteler, Luca Delucchi
  5. import os
  6. import sys
  7. import glob
  8. import string
  9. from build_html import *
  10. path = sys.argv[1]
  11. year = None
  12. if len(sys.argv) > 2:
  13. year = sys.argv[2]
  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. key = lines[index_keys].split(',')[1].strip().capitalize().replace(' ', '_')
  27. except:
  28. continue
  29. try:
  30. desc = lines[index_desc].split('-',1)[1].strip()
  31. except:
  32. desc.strip()
  33. if key not in keywords.keys():
  34. keywords[key] = {}
  35. keywords[key][fname] = desc
  36. elif fname not in keywords[key]:
  37. keywords[key][fname] = desc
  38. topicsfile = open(os.path.join(path,'topics.html'),'w')
  39. topicsfile.write(header1_tmpl.substitute(title = "GRASS GIS " \
  40. "%s Reference Manual: Topics index" % grass_version))
  41. topicsfile.write(headertopics_tmpl)
  42. for key, values in sorted(keywords.iteritems()):
  43. topicsfile.writelines([moduletopics_tmpl.substitute(key = key.lower(),
  44. name = key.replace('_', ' '))])
  45. keyfile = open(os.path.join(path,'topic_%s.html' % key.lower()),'w')
  46. keyfile.write(header1_tmpl.substitute(title = "GRASS GIS " \
  47. "%s Reference Manual: Topic %s" % (grass_version,
  48. key.replace('_', ' '))))
  49. keyfile.write(headerkey_tmpl.substitute(keyword = key.replace('_', ' ')))
  50. for mod, desc in sorted(values.iteritems()):
  51. keyfile.write(desc1_tmpl.substitute(cmd = mod, desc = desc,
  52. basename = mod.replace('.html','')))
  53. keyfile.write("</table>\n")
  54. write_html_footer(keyfile, "index.html", year)
  55. topicsfile.write("</ul>\n")
  56. write_html_footer(topicsfile, "index.html", year)
  57. topicsfile.close()