--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/simplecomment.py Thu Sep 30 15:59:32 2010 +0530
@@ -0,0 +1,112 @@
+# -*- coding: utf-8 -*-
+"""
+ sphinx.builders.webapp
+ ~~~~~~~~~~~~~~~~~~~~~~
+
+ A web application builder.
+
+ :copyright: Copyright 2007-2009 by the Sphinx team, see AUTHORS.
+ :license: BSD, see LICENSE for details.
+"""
+
+import os
+import sys
+import codecs
+import shutil
+import cPickle
+from os import path
+from hashlib import md5
+from types import ListType, TupleType
+import re
+
+
+import jinja2 as j2
+
+#from mercurial import commands, ui
+#from mercurial.hg import repository
+
+from sphinx.builders.html import StandaloneHTMLBuilder
+from sphinx.errors import SphinxError
+from sphinx.web.dbutils import PidDb
+from sphinx.web.webconfig import WebConfig
+from sphinx.writers.html import HTMLTranslator
+
+
+
+
+
+
+class SimpleCommentHTMLBuilder(StandaloneHTMLBuilder):
+ """ Static html pages with paragraph ids.
+ """
+ def init(self):
+ self.app.add_javascript('simplecomment.js')
+ self.id_file_loc=os.path.join(self.outdir,'paragraph_id.py')
+ self.id_file=open(self.id_file_loc,'w')
+ self.beginning="p_list= "
+ self.id_dictionary={}
+
+ StandaloneHTMLBuilder.init(self)
+
+ def get_target_uri(self, docname, typ=None):
+ return docname + self.link_suffix
+
+ def write_doc(self, docname, doctree):
+ StandaloneHTMLBuilder.write_doc(self, docname, doctree)
+
+ def prepare_writing(self, docnames):
+ StandaloneHTMLBuilder.prepare_writing(self, docnames)
+
+ def finish(self):
+ StandaloneHTMLBuilder.finish(self)
+ self.add_pids_to_paragraphs()
+ self.id_file.write(self.beginning+str(self.id_dictionary))
+
+
+ def add_pids_to_paragraphs(self):
+ all_files=[]
+ for path,dir,filenames in os.walk(self.outdir):
+ for filename in filenames:
+ all_files.append(os.path.join(path, filename))
+
+ for element in all_files :
+ if element.split('.')[1]=='html':
+ self.id_list=[]
+ self.taggen(element)
+ self.id_dictionary[self.chapter.split('/')[-1]]=self.id_list
+
+ else :
+ pass
+
+ def retag(self,s):
+ self.biggest_id += 1
+ id_name="%s_%x" % (self.chapter.split('/')[-1],self.biggest_id)
+ self.id_list.append(id_name)
+
+ return '<p id="%s">' %id_name
+
+
+
+
+ def taggen(self,html_file_name):
+ tagged = re.compile('<p id="x_([0-9a-f]+)"[^>]*>', re.M)
+ self.biggest_id=0
+ self.chapter=html_file_name.split('.')[0]
+
+ try:
+ f = open(html_file_name).read()
+ f1 = re.sub('<p>',self.retag, f )
+
+
+ if f1 != f:
+ tmpname = html_file_name+ '.tmp'
+ fp = open(tmpname, 'w')
+ fp.write(f1)
+ fp.close()
+ os.rename(tmpname,html_file_name)
+
+ except IOError:
+ pass
+
+
+