[Checkins] SVN: Sandbox/ulif/grok-reference-with-rest3/doc/ Move
grok2html into build/.
Uli Fouquet
uli at gnufix.de
Fri Feb 22 19:28:11 EST 2008
Log message for revision 84157:
Move grok2html into build/.
Changed:
A Sandbox/ulif/grok-reference-with-rest3/doc/build/grok2html.py
D Sandbox/ulif/grok-reference-with-rest3/doc/grok2html.py
U Sandbox/ulif/grok-reference-with-rest3/doc/setup.py
-=-
Copied: Sandbox/ulif/grok-reference-with-rest3/doc/build/grok2html.py (from rev 84098, Sandbox/ulif/grok-reference-with-rest3/doc/grok2html.py)
===================================================================
--- Sandbox/ulif/grok-reference-with-rest3/doc/build/grok2html.py (rev 0)
+++ Sandbox/ulif/grok-reference-with-rest3/doc/build/grok2html.py 2008-02-23 00:28:10 UTC (rev 84157)
@@ -0,0 +1,198 @@
+import os
+import codecs
+import sys
+import urllib
+
+import docutils.core
+from docutils.writers.html4css1 import Writer
+
+from zope.app.renderer.rest import ZopeTranslator
+from zope.pagetemplate.pagetemplate import PageTemplate
+from zope.pagetemplate.pagetemplatefile import PageTemplateFile
+
+# registers code-block directive using pygments.
+import pygments_code_block_directive
+
+class ReStructuredTextToHTMLRenderer:
+ """Convert from Restructured Text to HTML."""
+
+ def __init__(self,content):
+ self.content = content
+
+ def render(self):
+ settings_overrides = {
+ 'halt_level': 6,
+ 'input_encoding': 'utf8',
+ 'output_encoding': 'utf8',
+ 'initial_header_level': 2,
+ # don't try to include the stylesheet (docutils gets hiccups)
+ 'stylesheet_path': '',
+ }
+
+ writer = Writer()
+ writer.translator_class = ZopeTranslator
+ html = docutils.core.publish_string(
+ self.content,
+ writer=writer,
+ settings_overrides=settings_overrides,)
+ html = codecs.decode(html, 'utf_8')
+ return html
+
+class RestFile(object):
+
+ source = ''
+ target = ''
+ url = ''
+ title = ''
+ active = True
+
+ def __init__(self, url, source, target):
+ self.url = url
+ self.target = target
+ if os.path.isfile(target) and os.path.isfile(source):
+ if os.path.getmtime(source) < os.path.getmtime(target):
+ self.active = False
+ if os.path.isfile(source):
+ self.source = codecs.open(source,"r",'utf8').read()
+ elif source.startswith("http"):
+ print "Downloading %s" % source
+ try:
+ response = urllib.urlopen(source)
+ self.source = response.read()
+ except IOError, e:
+ if hasattr(e, 'reason'):
+ print 'We failed to reach a server.'
+ print 'Reason: ', e.reason
+ elif hasattr(e, 'code'):
+ print 'The server couldn\'t fulfill the request.'
+ print 'Error code:', e.code
+ self.source = u''
+ else:
+ self.source = source
+ srctxt = self.source.split('\n')
+ title = ''
+ count = 0
+ while title == '':
+ title = srctxt[count]
+ count += 1
+ if title.startswith("=====") or title.startswith(".."):
+ title = srctxt[count]
+ self.title = title
+
+ def set_rest_content(self):
+ renderer = ReStructuredTextToHTMLRenderer(self.source)
+ self.content = renderer.render().strip()
+
+ def create_html(self, page, settings):
+ if not self.active:
+ pass
+ print 'Processing ', self.url
+ self.set_rest_content()
+
+ settings["context"] = Context(self.url, self.title, self.content)
+ content = page.pt_render(namespace=settings)
+ #fp = open(self.target, 'w')
+ targetdir = os.path.dirname(self.target)
+ if not os.path.isdir(targetdir):
+ print 'Creating dir: ', targetdir
+ os.mkdir(targetdir)
+ fp = codecs.open(self.target,"w",'utf8')
+ fp.write(content)
+ fp.close()
+
+class Context:
+ """Set up the context for rendering the rest as html through zpt"""
+
+ def __init__(self, url, title=u'', content=u''):
+ self.url = url
+ self.title = title
+ self.content = content
+
+ @property
+ def menu(self):
+ for item in Menu:
+ if item.get('href') == self.url:
+ item['klass'] = u'selected'
+ else:
+ item['klass'] = u''
+ # just for tutorial files
+ if len(self.url.split('/')) > 2:
+ if item.get('href').split('/')[:-1] == self.url.split('/')[:-1]:
+ item['klass'] = u'selected'
+ if not item.get('description', None):
+ item['description'] = item['title']
+ return Menu
+
+def create_html(rest_files, template):
+ settings = {}
+ settings["here"] = { "layout": template }
+ page = PageTemplate()
+ page.write("""<metal:block use-macro="here/layout/macros/pagelayout" />""")
+
+ for restfile in rest_files:
+ restfile.create_html(page, settings)
+
+# Menu should later be generated if site becomes more complex
+Menu = [
+ {'href':'/index.html','title':u'Home','klass':''},
+ {'href':'/about.html','title':u'About','klass':''},
+ {'href':'/tutorial.html','title':u'Tutorial','klass':''},
+ {'href':'/minitutorials/index.html','title':u'How Tos','klass':''},
+ ]
+
+def main(argv=None):
+ if argv is None:
+ argv = sys.argv[1:]
+
+ if not len(argv) == 1:
+ print "Usage: grok2html OUTDIR"
+ sys.exit(1)
+
+ source_dir = os.path.dirname(__file__)
+ www_dir = os.path.abspath(argv[0])
+
+ if not os.path.isdir(www_dir):
+ print "OUTDIR '%s' does not exist." % (www_dir,)
+ sys.exit(1)
+
+ os.chdir(source_dir)
+
+ rest_files = []
+ # Toplevel pages:
+ for name in [
+ 'about',
+ 'index',
+ 'tutorial',
+ 'upgrade'
+ ]:
+ rest_files.append(
+ RestFile(
+ name, os.path.join(source_dir, name+'.txt'),
+ os.path.join(www_dir, name+'.html')))
+ # The minitutorials:
+ for name in [
+ 'index',
+ 'macros',
+ 'permissions',
+ 'rest',
+ 'searching',
+ 'template-languages',
+ 'transient-objects',
+ 'xmlprc',
+ ]:
+ rest_files.append(
+ RestFile(
+ name, os.path.join(source_dir, 'minitutorials', name+'.txt'),
+ os.path.join(www_dir, 'minitutorials', name+'.html')))
+ # External sources:
+ rest_files.append(
+ RestFile(
+ 'zc.buildout',
+ 'http://svn.zope.org/*checkout*/zc.buildout/trunk/doc/tutorial.txt',
+ os.path.join(www_dir, 'minitutorials', 'buildout.html')))
+
+ template = PageTemplateFile(os.path.join(source_dir, 'template.pt'))
+ create_html(rest_files, template)
+
+if __name__ == '__main__':
+ main()
Deleted: Sandbox/ulif/grok-reference-with-rest3/doc/grok2html.py
===================================================================
--- Sandbox/ulif/grok-reference-with-rest3/doc/grok2html.py 2008-02-23 00:27:45 UTC (rev 84156)
+++ Sandbox/ulif/grok-reference-with-rest3/doc/grok2html.py 2008-02-23 00:28:10 UTC (rev 84157)
@@ -1,198 +0,0 @@
-import os
-import codecs
-import sys
-import urllib
-
-import docutils.core
-from docutils.writers.html4css1 import Writer
-
-from zope.app.renderer.rest import ZopeTranslator
-from zope.pagetemplate.pagetemplate import PageTemplate
-from zope.pagetemplate.pagetemplatefile import PageTemplateFile
-
-# registers code-block directive using pygments.
-import pygments_code_block_directive
-
-class ReStructuredTextToHTMLRenderer:
- """Convert from Restructured Text to HTML."""
-
- def __init__(self,content):
- self.content = content
-
- def render(self):
- settings_overrides = {
- 'halt_level': 6,
- 'input_encoding': 'utf8',
- 'output_encoding': 'utf8',
- 'initial_header_level': 2,
- # don't try to include the stylesheet (docutils gets hiccups)
- 'stylesheet_path': '',
- }
-
- writer = Writer()
- writer.translator_class = ZopeTranslator
- html = docutils.core.publish_string(
- self.content,
- writer=writer,
- settings_overrides=settings_overrides,)
- html = codecs.decode(html, 'utf_8')
- return html
-
-class RestFile(object):
-
- source = ''
- target = ''
- url = ''
- title = ''
- active = True
-
- def __init__(self, url, source, target):
- self.url = url
- self.target = target
- if os.path.isfile(target) and os.path.isfile(source):
- if os.path.getmtime(source) < os.path.getmtime(target):
- self.active = False
- if os.path.isfile(source):
- self.source = codecs.open(source,"r",'utf8').read()
- elif source.startswith("http"):
- print "Downloading %s" % source
- try:
- response = urllib.urlopen(source)
- self.source = response.read()
- except IOError, e:
- if hasattr(e, 'reason'):
- print 'We failed to reach a server.'
- print 'Reason: ', e.reason
- elif hasattr(e, 'code'):
- print 'The server couldn\'t fulfill the request.'
- print 'Error code:', e.code
- self.source = u''
- else:
- self.source = source
- srctxt = self.source.split('\n')
- title = ''
- count = 0
- while title == '':
- title = srctxt[count]
- count += 1
- if title.startswith("=====") or title.startswith(".."):
- title = srctxt[count]
- self.title = title
-
- def set_rest_content(self):
- renderer = ReStructuredTextToHTMLRenderer(self.source)
- self.content = renderer.render().strip()
-
- def create_html(self, page, settings):
- if not self.active:
- pass
- print 'Processing ', self.url
- self.set_rest_content()
-
- settings["context"] = Context(self.url, self.title, self.content)
- content = page.pt_render(namespace=settings)
- #fp = open(self.target, 'w')
- targetdir = os.path.dirname(self.target)
- if not os.path.isdir(targetdir):
- print 'Creating dir: ', targetdir
- os.mkdir(targetdir)
- fp = codecs.open(self.target,"w",'utf8')
- fp.write(content)
- fp.close()
-
-class Context:
- """Set up the context for rendering the rest as html through zpt"""
-
- def __init__(self, url, title=u'', content=u''):
- self.url = url
- self.title = title
- self.content = content
-
- @property
- def menu(self):
- for item in Menu:
- if item.get('href') == self.url:
- item['klass'] = u'selected'
- else:
- item['klass'] = u''
- # just for tutorial files
- if len(self.url.split('/')) > 2:
- if item.get('href').split('/')[:-1] == self.url.split('/')[:-1]:
- item['klass'] = u'selected'
- if not item.get('description', None):
- item['description'] = item['title']
- return Menu
-
-def create_html(rest_files, template):
- settings = {}
- settings["here"] = { "layout": template }
- page = PageTemplate()
- page.write("""<metal:block use-macro="here/layout/macros/pagelayout" />""")
-
- for restfile in rest_files:
- restfile.create_html(page, settings)
-
-# Menu should later be generated if site becomes more complex
-Menu = [
- {'href':'/index.html','title':u'Home','klass':''},
- {'href':'/about.html','title':u'About','klass':''},
- {'href':'/tutorial.html','title':u'Tutorial','klass':''},
- {'href':'/minitutorials/index.html','title':u'How Tos','klass':''},
- ]
-
-def main(argv=None):
- if argv is None:
- argv = sys.argv[1:]
-
- if not len(argv) == 1:
- print "Usage: grok2html OUTDIR"
- sys.exit(1)
-
- source_dir = os.path.dirname(__file__)
- www_dir = os.path.abspath(argv[0])
-
- if not os.path.isdir(www_dir):
- print "OUTDIR '%s' does not exist." % (www_dir,)
- sys.exit(1)
-
- os.chdir(source_dir)
-
- rest_files = []
- # Toplevel pages:
- for name in [
- 'about',
- 'index',
- 'tutorial',
- 'upgrade'
- ]:
- rest_files.append(
- RestFile(
- name, os.path.join(source_dir, name+'.txt'),
- os.path.join(www_dir, name+'.html')))
- # The minitutorials:
- for name in [
- 'index',
- 'macros',
- 'permissions',
- 'rest',
- 'searching',
- 'template-languages',
- 'transient-objects',
- 'xmlprc',
- ]:
- rest_files.append(
- RestFile(
- name, os.path.join(source_dir, 'minitutorials', name+'.txt'),
- os.path.join(www_dir, 'minitutorials', name+'.html')))
- # External sources:
- rest_files.append(
- RestFile(
- 'zc.buildout',
- 'http://svn.zope.org/*checkout*/zc.buildout/trunk/doc/tutorial.txt',
- os.path.join(www_dir, 'minitutorials', 'buildout.html')))
-
- template = PageTemplateFile(os.path.join(source_dir, 'template.pt'))
- create_html(rest_files, template)
-
-if __name__ == '__main__':
- main()
Modified: Sandbox/ulif/grok-reference-with-rest3/doc/setup.py
===================================================================
--- Sandbox/ulif/grok-reference-with-rest3/doc/setup.py 2008-02-23 00:27:45 UTC (rev 84156)
+++ Sandbox/ulif/grok-reference-with-rest3/doc/setup.py 2008-02-23 00:28:10 UTC (rev 84157)
@@ -7,9 +7,12 @@
'zope.app.renderer',
'Pygments'
],
- py_modules = ['grok2html'],
+ packages=find_packages('build'),
+ package_dir = {'': 'build'},
+ py_modules = ['grok2html', 'grokdocs'],
entry_points="""
[console_scripts]
grok2html = grok2html:main
+ grokdocs = grokdocs:grokdocs
"""
)
More information about the Checkins
mailing list