PageRenderTime 51ms CodeModel.GetById 26ms RepoModel.GetById 1ms app.codeStats 0ms

/compile.py

https://github.com/gvx/altworld
Python | 68 lines | 49 code | 8 blank | 11 comment | 6 complexity | 5e966ae1c811fd4eb87263a05ef5340f MD5 | raw file
  1. #import BaseHTTPServer
  2. #import SimpleHTTPServer
  3. import re
  4. import os.path
  5. #import posixpath
  6. #import urllib
  7. __version__ = "0.0"
  8. f = open('template.txt')
  9. TemplateText = f.read()
  10. f.close()
  11. def InsertPage(matchobj):
  12. page = os.path.join('src', matchobj.group(1))
  13. #if page:
  14. # ctype, page = page
  15. try:
  16. f = open(page, 'r')
  17. txt = f.read()
  18. f.close()
  19. ## print Wikify(txt)
  20. return Wikify(txt)
  21. except IOError as e:
  22. return 'ERROR: ' + str(e)
  23. WikiSub = ((re.compile(r'\*(.*?)\*'), r'<strong>\1</strong>'),
  24. (re.compile(r'[[][[](.*?)[|](.*?)[]][]]'), r'<a href="\1.html">\2</a>'),
  25. (re.compile(r'[[][[](.*?)[]][]]'), r'<a href="\1.html">\1</a>'),
  26. ##(re.compile(r'[[]IMG[[](.*?)[]][]]'), r'<img src="\1">'),
  27. (re.compile(r"''(.*?)''"), r'<em>\1</em>'),
  28. (re.compile(r'^:(.*?)$', re.M), r'<h2>\1</h2>'),
  29. (re.compile(r'\n{2,}'), r'</p>\n\n<p>'),
  30. ## (re.compile(r'(\r\n){2,}'), r'</p>\r\n\r\n<p>'),
  31. (re.compile(r'^'), r'<p>'),
  32. (re.compile(r'$'), r'</p>'),
  33. (re.compile(r'<p><h2>'), r'<h2>'),
  34. (re.compile(r'</h2></p>'), r'</h2>'),
  35. (re.compile(r'<p>{{(.*?)}}</p>'), InsertPage),
  36. )
  37. def Wikify(text):
  38. for Regex, To in WikiSub:
  39. text = Regex.sub(To, text)
  40. ##print text
  41. return text
  42. def Make(filename, source, outputfile):
  43. WikiText = source.read()
  44. WikiText = Wikify(WikiText)
  45. htmlText = TemplateText % {'text': WikiText, 'title': filename}
  46. outputfile.write(htmlText)
  47. def CompileFile(arg, dir, files):
  48. for file in files:
  49. #continue
  50. try:
  51. print 'compiling', os.path.join('src', file), 'to', os.path.join('out', file)+'.html'
  52. fin = open(os.path.join('src', file))
  53. fout = open(os.path.join('out', file+'.html'), 'w')
  54. Make(file.replace('_', ' '), fin, fout)
  55. except:
  56. print 'error in compiling', os.path.join('src', file)
  57. finally:
  58. fin.close()
  59. fout.close()
  60. os.path.walk('src', CompileFile, None)