[Python-checkins] r62243 - sandbox/trunk/seealso/convert-python-faqs.py

andrew.kuchling python-checkins at python.org
Wed Apr 9 19:06:09 CEST 2008


Author: andrew.kuchling
Date: Wed Apr  9 19:06:08 2008
New Revision: 62243

Removed:
   sandbox/trunk/seealso/convert-python-faqs.py
Log:
Remove script for converting Infogami.com FAQs to Pyramid; both input and output are now obsolete

Deleted: /sandbox/trunk/seealso/convert-python-faqs.py
==============================================================================
--- /sandbox/trunk/seealso/convert-python-faqs.py	Wed Apr  9 19:06:08 2008
+++ (empty file)
@@ -1,246 +0,0 @@
-#!/Users/amk/source/p/python/python.exe
-# Read copy of the pyfaq infogami site (assumed to be in the pyfaq/
-# subdirectory) and write out a pyramid-formatting tree to pyramid-faq/
-#
-# Warning: erases the existing pyramid-faq/ directory on starting!
-#
-# $Id$
-
-import os, shutil, glob, cgi
-import htmlload
-
-ET = htmlload.ET
-
-DESTDIR = 'pyramid-faq'
-
-# Master collection of categories
-categories = {}
-
-def yaml_escape (S):
-    "Escape S as a YAML string"
-    S = normalize_whitespace(S)
-    S = S.replace("\\", "\\\\")
-    S = S.replace('"', '\\"')
-    S = '"' + S + '"'  
-    return S
-
-def normalize_whitespace (S):
-    """Replace all whitespace by single spaces.
-    >>> normalize_whitespace('a    b\tc\nd')
-    'a b c d'
-    """
-    return ' '.join(S.split())
-
-def get_setting (root, setting_name, default=None):
-    """Look for a paragraph containing a setting, like 'CATEGORY: general',
-    and returns the result of the setting.
-    """
-    setting_start = setting_name.upper() + ':'
-    for para in root.findall('*/p'):
-        if para.text is not None and para.text.startswith(setting_start):
-            value = para.text[len(setting_start):]
-            value = value.strip()
-            return value
-    else:
-        return default
-
-def write_nav (dir, urls):
-    f = open(os.path.join(dir, 'nav.yml'), 'w')
-    f.write("""--- !fragment
-# Type of template to use
-template: nav.html
-
-# Contents of the template
-global: 
-  nav : !sectionnav |
-""")
-    for dirname, title in urls:
-        title = normalize_whitespace(title)
-        f.write(' '*6 + title + ' ' + dirname + '\n')
-    f.close()
-
-def convert_question (filename):
-    base = os.path.basename(filename).replace('.xml', '')
-    # root is the 'html' element
-    root = htmlload.load(filename)
-    title = root.findtext('head/title') 
-    title = normalize_whitespace(title)
-
-    # Find category and name
-    category = get_setting(root, 'category')
-    if category is None:
-        ##print 'Filename without category:', filename
-        return
-    if category in ('test',):
-        return
-    if category not in categories:
-	categories[category] = None    
-
-    name = get_setting(root, 'name', base)
-
-    qdir = os.path.join(DESTDIR, category, name)
-    os.makedirs(qdir)
-
-    # Write body of question
-    f = open(os.path.join(qdir, 'question.ht'), 'w')
-    f.write('Title: Unused title\n')
-    f.write('\n')
-
-    f.write('<h1>%s</h1>\n\n' % cgi.escape(title))
-    body = root.find('body')
-    for child in body.getchildren():
-        s = ET.tostring(child, 'utf-8')
-        f.write(s)
-
-    # Add a link to the wiki page for this question
-    f.write('''<p><a href="http://pyfaq.infogami.com/%s">[Edit/comment on this page]</a></p>\n''' % base)
-    f.close()
-
-    # Write .yml files
-    page_title = '%s FAQ: %s' % (category.capitalize(), title)
-    f = open(os.path.join(qdir, 'index.yml'), 'w')
-    f.write("""--- !fragment
-template: index.html
-# The data to pass to the template
-global:
-  metadata: {}
-local:
-  title: %s
-  content: !fragment content.yml
-    """ % yaml_escape(page_title))
-    f.close()
-
-    f = open(os.path.join(qdir, 'content.yml'), 'w')
-    f.write("""--- !fragment
-# Type of template to use
-template: content.html
-
-# The data to pass to the template
-local:
-  content:
-    breadcrumb: !breadcrumb nav.yml nav
-    text: !htfile question.ht\n""")
-    f.close()
-
-    
-def convert_index (filename):
-    root = htmlload.load(filename)
-    title = root.findtext('*/title')
-    title = normalize_whitespace(title)	
-    i = title.find(':')
-    category = title[i+1:].strip()
-    idir = os.path.join(DESTDIR, category)
-
-    # XXX can there be subsections within a category?
-    entries = list(root.findall('*/p/a'))
-
-    # Write body of question
-    f = open(os.path.join(idir, 'listing.ht'), 'w')
-    f.write('<ul>\n')
-    urllist = []
-    for a in entries:
-        href = a.get("href")
-        href = href.lstrip('/')
-        a.set("href", href)
-        f.write('<li>%s</li>\n' % ET.tostring(a, 'utf-8'))
-        urllist.append((href, a.text))
-
-    f.write('</ul>\n')
-    f.close()
-
-    write_nav(idir, urllist)	
-
-    # Write .yml files
-    f = open(os.path.join(idir, 'index.yml'), 'w')
-    f.write("""--- !fragment
-template: index.html
-# The data to pass to the template
-local:
-  title: %s
-  content: !fragment content.yml
-    """ % yaml_escape(title))
-    f.close()
-
-    f = open(os.path.join(idir, 'content.yml'), 'w')
-    f.write("""--- !fragment
-# Type of template to use
-template: content.html
-
-# The data to pass to the template
-local:
-  content:
-    breadcrumb: !breadcrumb nav.yml nav
-    text: !htfile listing.ht""")
-    f.close()
-    
-def write_master_index (index_files):
-    f = open(os.path.join(DESTDIR, 'index.yml'), 'w')
-    f.write("""--- !fragment
-template: index.html
-# The data to pass to the template
-local:
-  title: FAQs
-  content: !fragment content.yml
-""")
-    f.close()
-
-    f = open(os.path.join(DESTDIR, 'content.yml'), 'w')
-    f.write("""--- !fragment
-# Type of template to use
-template: content.html
-
-# The data to pass to the template
-local:
-  content:
-    text: !htfile listing.ht
-    breadcrumb: !breadcrumb nav.yml nav
-""")    
-    f.close()
-
-    f = open(os.path.join(DESTDIR, 'listing.ht'), 'w')
-    f.write('Title: Unused title\n')
-    f.write('\n')
-    f.write('<ul>\n')
-    for cat in sorted(categories.keys()):
-        f.write('  <li><a href="%s">%s</a>' % (cat, cat.capitalize()))
-    f.write('</ul>\n')
-    f.close()
-
-    # Write navigation info
-    urllist = []
-    for cat in sorted(categories.keys()):
-        urllist.append((cat, cat.capitalize()))
-    write_nav(DESTDIR, urllist)
-
-    f = open(os.path.join(DESTDIR, 'content.html'), 'w')
-    f.write("""<n:invisible n:data="content" n:render="mapping">
-<div id="breadcrumb" n:data="breadcrumb" n:render="breadcrumb" />
-<n:slot name="text"></n:slot>
-</n:invisible>""")
-    f.close()
-
-if os.path.exists(DESTDIR):
-    shutil.rmtree(DESTDIR)
-os.mkdir(DESTDIR)
-
-# List the files to be converted
-files = set(glob.glob('pyfaq/*.xml'))
-
-for fn in list(files):
-    if fn.startswith('pyfaq/_'):
-        files.discard(fn)
-
-index_files = [fn for fn in files if fn.endswith('-index.xml')]
-for fn in index_files:
-    files.discard(fn)
-
-# Convert questions
-for fn in list(files):
-    convert_question(fn)
-
-# Convert indexes
-for fn in index_files:
-    convert_index(fn)
-
-write_master_index(index_files)
-


More information about the Python-checkins mailing list