cybertools/wiki
helmutm c3d47fd093 set up basic plugin structure with utilities for configuration, rStx parsing and HTML writing
git-svn-id: svn://svn.cy55.de/Zope3/src/cybertools/trunk@3121 fd906abe-77d9-0310-91a1-e0d9ade77398
2009-01-06 19:31:29 +00:00
..
base set up basic plugin structure with utilities for configuration, rStx parsing and HTML writing 2009-01-06 19:31:29 +00:00
dcu set up basic plugin structure with utilities for configuration, rStx parsing and HTML writing 2009-01-06 19:31:29 +00:00
__init__.py new package for wiki framework 2008-06-20 16:15:33 +00:00
interfaces.py set up basic plugin structure with utilities for configuration, rStx parsing and HTML writing 2009-01-06 19:31:29 +00:00
README.txt set up basic plugin structure with utilities for configuration, rStx parsing and HTML writing 2009-01-06 19:31:29 +00:00
tests.py set up basic plugin structure with utilities for configuration, rStx parsing and HTML writing 2009-01-06 19:31:29 +00:00

==============================
Yet Another WikiWiki Framework
==============================

  ($Id$)


An Example for an Elementary Wiki Structure
===========================================

  >>> from cybertools.wiki.base.wiki import WikiManager, Wiki

We create a wiki manager with one wiki that in turn contains a simple
start page.

  >>> manager = WikiManager()
  >>> wiki = manager.addWiki(Wiki('demo_wiki'))
  >>> startPage = wiki.createPage('start_page')

We format the content of the start page using the restructured text format.

  >>> startPage.text = '''
  ... **Welcome to the Demo Wiki**
  ... '''

The parser for restructured text and a corresponding HTML writer are the
default plugins used, so we can already render the page as HTML.

  >>> tree = startPage.parse()

  >>> print startPage.render()
  <p><strong>Welcome to the Demo Wiki</strong></p>


A Very Basic Wiki Format
========================

(this is probably obsolete, will be replaced by corresponding WikiPage
parsing and rendering functionality)

We first set up a format (a utility) and create a format instance
from it. The instance needs a wiki page as its context - to simplify
things during testing we just use a bare object.

  >>> from cybertools.wiki.base.format import BasicFormat
  >>> format = BasicFormat()
  >>> page = object()
  >>> instance = format.getInstance(page)

Now we enter some simple text and request the format instance to
unmarshall it, i.e. to convert it from the editable to the internal
representation.

  >>> input = ('This is text with a [[Wiki Link]].\n\n'
  ...          'It also contains a second line.')

  >>> instance.unmarshall(input)
  'This is text with a [[${l0000001}]].\n\nIt also contains a second line.'