See also SectionParser
To make page layout happy, use CSS to enclose wiki markup, then you can use css file to define the style. Most of the following code was taken from ReimarBauer's Frame Parser.
I've added this to the current frame parser. Cheers -- ReimarBauer 2006-09-03 14:34:19
Usage
{ { {#!div type=id val=sidebar
some wiki markup
} } }will generate
<div id="sidebar"> some wiki markup (rendered with wiki syntax) </div>
Example
Code
1 # -*- coding: iso-8859-1 -*-
2 """
3 MoinMoin - Div Parser
4
5 This parser is used to align enclosed wiki markup.
6
7 Syntax:
8 { { {#!div type=type val=val
9 wiki markup
10 } } }
11
12 Parameters:
13 type: one of ['id', 'class'], default is 'id'
14 val : name of the id or class, default is 'sidebar'
15
16 Install:
17 put into 'plugin/parser' directory
18
19 Note:
20 Most of the following code was taken from ReimarBauer's Frame Parser.
21 See http://moinmoin.wikiwikiweb.de/ParserMarket/Frame
22 Corresponding Information
23 @copyright: 2006 by Reimar Bauer
24 @license: GNU GPL, see COPYING for details.
25
26 """
27 import StringIO, os, mimetypes
28 from random import randint
29 from MoinMoin.parser import wiki
30 from MoinMoin import wikiutil
31 from MoinMoin.action import AttachFile
32 from MoinMoin.webapi.color import Color
33
34 Dependencies = []
35
36 class Parser:
37
38 extensions = ['*']
39 Dependencies = Dependencies
40
41 def __init__(self, raw, request, **kw):
42 self.raw = raw
43 self.request = request
44 self.type = 'id'
45 self.val = 'sidebar'
46
47 for arg in kw.get('format_args', '').split():
48 if arg.find('=') > -1:
49 key, value = arg.split('=')
50 setattr(self, key, wikiutil.escape(value.strip(), quote=1))
51
52
53 def format(self, formatter):
54 raw = self.raw
55
56 import string
57 raw = string.split(raw, '\n')
58 parser_name = ''
59 for line in raw:
60 if line.strip().startswith("#!"):
61 parser_name = line.strip()[2:].split()[0]
62 for arg in line.split(','):
63 if arg.find('=') > -1:
64 key, value = arg.split('=')
65 setattr(self, key, wikiutil.escape(value.strip(), quote=1))
66
67 pagename = formatter.page.page_name
68
69 out = StringIO.StringIO()
70 self.request.redirect(out)
71 if parser_name != '':
72 self.request.write(formatter.parser(parser_name, raw))
73 else:
74 wikiizer = wiki.Parser(self.raw, self.request)
75 wikiizer.format(formatter)
76 result = out.getvalue()
77 self.request.redirect()
78 del out
79
80 div = '<div %(type)s="%(val)s">' % {"val":self.val, "type":self.type}
81 self.request.write("%(div)s%(result)s</div>" % {
82 "div": div,
83 "result": result})
84
