makehtml.py
上传用户:gyjinxi
上传日期:2007-01-04
资源大小:159k
文件大小:4k
源码类别:

WEB邮件程序

开发平台:

Python

  1. # makehtml:
  2. # This script generates the BoboMail Homepage
  3. # from the text files in the docs directory
  4. from bobomailrc import app_dir, pjoin, __version__
  5. import string, re
  6. from cgi import escape
  7. doc_dir = pjoin(app_dir, "docs")
  8. urlpat = re.compile(r'(w+://[^>)s]+)')
  9. emailpat = re.compile(r'([-+,.w]+@[-+.w]+)')
  10. def formatHTML(data):
  11. inList = 0
  12. html = ""
  13. data = string.replace(data, "nnn", "n n")
  14. paragraphs = string.split(data, "nn")
  15. if paragraphs:
  16. if "n" not in paragraphs[0]:
  17. html = html + "<h2>%s</h2>nn" % paragraphs[0]
  18. del paragraphs[0]
  19. for p in paragraphs:
  20. if len(p) and string.strip(p)[0] == "*":
  21. if not inList:
  22. html = html + "<ul>n"
  23. inList = 1
  24. html = html + "t<li>%sn" % makelinks(string.strip(p)[1:])
  25. else:
  26. if inList:
  27. html = html + "</ul>nn"
  28. inList = 0
  29. if len(p) and p[0] == " ": html = html + "<pre>%s</pre>" % makelinks(p)
  30. elif p == " ": html = html + "n<br>n"
  31. else: html = html + "<p>nt%sn</p>nn" % makelinks(p)
  32. if inList: html = html + "</ul>n"
  33. return html
  34. def makelinks(data):
  35. start, links = 0, {}
  36. data = escape(data)
  37. while 1:
  38. found = emailpat.search(data[start:])
  39. if found:
  40. url = found.group(1)
  41. links[url] = '<a href="mailto:%s">%s</a>' % (url, escape(url))
  42. else:
  43. found = urlpat.search(data[start:])
  44. if found:
  45. url = found.group(1)
  46. links[url] = '<a href="%s">%s</a>' % (url, escape(url))
  47. else: break
  48. start = start + found.end()
  49. for old, new in links.items():
  50. data = string.replace(data, old, new)
  51. return data
  52. header = """
  53. <html>
  54. <head>
  55.   <title>BoboMail</title>
  56.   <link rel="stylesheet" href="images/bobomail.css">
  57. </head>
  58. <body background="images/backgr.gif" bgcolor="white" marginheight="0" marginwidth="0">
  59. <table border="0" width="100%">
  60.   <tr valign="top">
  61.     <td><img src="images/logo.gif" alt="BoboMail" border="1"><br><p>
  62. <a href="http://sourceforge.net/project/?group_id=4938"><font color="white" face="Arial, Helvetica, Sans Serif">Project-Page</font></a><br>
  63. <a href="http://sourceforge.net/bugs/?group_id=4938"><font color="white" face="Arial, Helvetica, Sans Serif">Bug tracking</font></a><br>
  64. <a href="http://sourceforge.net/patch/?group_id=4938"><font color="white" face="Arial, Helvetica, Sans Serif">Patch manager</font></a><br>
  65. <a href="http://sourceforge.net/mail/?group_id=4938"><font color="white" face="Arial, Helvetica, Sans Serif">Mailing list</font></a><br>
  66. <br><br><br>
  67. <a href="images/shot1.gif"><font color="white" face="Arial, Helvetica, Sans Serif">Screenshot 1</font></a><br>
  68. <a href="images/shot2.gif"><font color="white" face="Arial, Helvetica, Sans Serif">Screenshot 2</font></a><br><br>
  69.         <a href="http://bobomail.sourceforge.net/cgi-bin/bobomail.cgi"><font color="white" face="Arial, Helvetica, Sans Serif"><i><b>Test DEMO!</b></i></font></a><br><br>
  70. <b><a href="http://sourceforge.net/project/filelist.php?group_id=4938"><font color="white" face="Arial, Helvetica, Sans Serif">Download</font></a></b><br>
  71. </p></td>
  72.     <td>"""
  73. footer = """
  74.    </td>
  75.   </tr>
  76.   <tr>
  77.   <td><tt>Special thanks to</tt> <br><a href="http://sourceforge.net">
  78.   <img alt="SourceForge" border="0" src="http://sourceforge.net/sflogo.php?group_id=4938&type=1" alt="Sourceforge"></a></td>
  79.       <td><hr noshade><i>Page automatically created from text-sources (see docs directory)</i></td>
  80.   </tr>
  81. </table>
  82. </body>
  83. </html>
  84. """
  85. files = ["README", "INSTALL", "PROBLEMS", "TODO", "ChangeLog", "CREDITS"]
  86. page = '<h1>BoboMail %s<br><img alt="BoboMail" src="images/bobomail.jpg"></h1>nn' % __version__
  87. navbar = "nt<h4>"
  88. for filename in files:
  89. navbar = navbar + '<a href="#%s">%s</a> | ' % (filename, filename)
  90. fn = pjoin(doc_dir, filename)
  91. page = page + '<a name="%s"></a>' % filename
  92. page = page + formatHTML(open(fn).read())
  93. page = page + "<br>"
  94. navbar = navbar[:-2] + "<hr noshade></h4>n"
  95. page = navbar + page
  96. html = header + page + footer
  97. print html