[Gnucash-changes] r12055 - meta - Now in the correct location!
Joshua Sled
jsled at cvs.gnucash.org
Sat Nov 26 17:47:32 EST 2005
Author: jsled
Date: 2005-11-26 17:47:32 -0500 (Sat, 26 Nov 2005)
New Revision: 12055
Trac: http://svn.gnucash.org/trac/changeset/12055
Added:
meta/wiki-macros/TOC.py
Removed:
meta/TOC.py
Log:
Now in the correct location!
Deleted: meta/TOC.py
===================================================================
--- meta/TOC.py 2005-11-26 22:47:05 UTC (rev 12054)
+++ meta/TOC.py 2005-11-26 22:47:32 UTC (rev 12055)
@@ -1,119 +0,0 @@
-# vim: expandtab tabstop=4
-from StringIO import StringIO
-import re
-import string
-from trac.util import escape
-
-rules_re = re.compile(r"""(?P<heading>^\s*(?P<hdepth>=+)\s(?P<header>.*)\s(?P=hdepth)\s*$)""")
-anchor_re = re.compile('[^\w\d]+')
-
-def parse_toc(env, out, page, body, max_depth = 999, min_depth = 1):
- current_depth = min_depth
- in_pre = False
- first_li = True
- seen_anchors = []
-
- for line in body.splitlines():
- line = escape(line)
-
- # Skip over wiki-escaped code, e.g. code examples (Steven N.
- # Severinghaus <sns at severinghaus.org>)
- if in_pre:
- if line == '}}}':
- in_pre = False
- else:
- continue
- if line == '{{{':
- in_pre = True
- continue
-
- match = rules_re.match(line)
- if match:
- header = match.group('header')
- new_depth = len(match.group('hdepth'))
- if new_depth < min_depth:
- continue
- elif new_depth < current_depth:
- while new_depth < current_depth:
- current_depth -= 1
- if current_depth < max_depth:
- out.write("</ol>")
- out.write("<li>")
- elif new_depth >= current_depth:
- i = current_depth
- while new_depth > i or first_li :
- i += 1
- first_li = False
- if current_depth <= max_depth:
- out.write("<ol>")
- current_depth = new_depth
- out.write("<li>")
- default_anchor = anchor = anchor_re.sub("", header)
- anchor_n = 1
- while anchor in seen_anchors:
- anchor = default_anchor + str(anchor_n)
- anchor_n += 1
- seen_anchors.append(anchor)
- link = page + "#" + anchor
- if current_depth <= max_depth:
- out.write('<a href="%s">%s</a></li>\n' % (env.href.wiki(link), header))
- while current_depth >= min_depth and not first_li:
- if current_depth <= max_depth:
- out.write("</ol>\n")
- current_depth -= 1
-
-def execute(hdf, args, env):
- db = env.get_db_cnx()
- if not args:
- args = ''
- pre_pages = re.split('\s*,\s*', args)
- # Options
- inline = False
- heading = 'Table of Contents'
- pages = []
- root = ''
- params = { }
- # Global options
- for page in pre_pages:
- if page == 'inline':
- inline = True
- elif page == 'noheading':
- heading = None
- elif page[:8] == 'heading=':
- heading = page[8:]
- elif page == '':
- continue
- elif page[:6] == 'depth=':
- params['max_depth'] = int(page[6:])
- elif page[:5] == 'root=':
- root = page[5:]
- else:
- pages.append(page)
- # Has the user supplied a list of pages?
- if not pages:
- pages.append(hdf.getValue("args.page", "WikiStart"))
- root = ''
- params['min_depth'] = 1 # Skip page title
- out = StringIO()
- if not inline:
- out.write("<div class='wiki-toc'>\n")
- if heading:
- out.write("<h4>%s</h4>\n" % heading)
- for page in pages:
- # Override arguments
- if page[:6] == 'depth=':
- params['max_depth'] = int(page[6:])
- elif page[:5] == 'root=':
- root = page[5:]
- else:
- page = root + page
- cursor = db.cursor()
- cursor.execute("SELECT text FROM wiki WHERE name='%s' ORDER BY version desc LIMIT 1" % page)
- row = cursor.fetchone()
- if row:
- parse_toc(env, out, page, row[0], **params)
- else:
- out.write('<div class="system-message"><strong>Error: Page %s does not exist</strong></div>' % page)
- if not inline:
- out.write("</div>\n")
- return out.getvalue()
Copied: meta/wiki-macros/TOC.py (from rev 12054, meta/TOC.py)
More information about the gnucash-changes
mailing list