scripts/wiki-lenny/local/parser/Portail.py
Antoine Durand-Gasselin 7e755aa879 [wiki-lenny] Débuggage du portail (les liens sont parsés après) + pimpage
darcs-hash:20081211174112-bd074-5d5f6992aae94438a7333d53f2b55a5e00cbbc17.gz
2008-12-11 18:41:12 +01:00

85 lines
3.2 KiB
Python

# -*- coding: utf-8 -*-
"""
..
.... ............ ........
. ....... . .... ..
. ... .. .. .. .. ..... . ..
.. .. ....@@@. .. . ........ .
.. . .. ..@.@@..@@. .@@@@@@@ @@@@@@. ....
.@@@@. .@@@@. .@@@@..@@.@@..@@@..@@@..@@@@.... ....
@@@@... .@@@.. @@ @@ .@..@@..@@...@@@. .@@@@@. ..
.@@@.. . @@@. @@.@@..@@.@@..@@@ @@ .@@@@@@.. .....
...@@@.... @@@ .@@.......... ........ ..... ..
. ..@@@@.. . .@@@@. .. ....... . .............
. .. .... .. .. . ... ....
. . .... ............. .. ...
.. .. ... ........ ... ...
................................
MoinMoin - Portail parser
PURPOSE:
Pour afficher un portail a la wikipedia.
CALLING SEQUENCE:
{{{
#!Portail
image1.png @@ title1 @@ description 1
image2.png @@ title2 @@ description 2
image3.png @@ title3 @@ description 3
}}}
Copyright 2008 Antoine Durand-Gasselin <adg@crans.org>
"""
import os,string,re,StringIO
from MoinMoin.action import AttachFile
from MoinMoin.parser.text_moin_wiki import Parser as WikiParser
#####################################################################
# Parser : classe principale, c'est elle qui fait tout
#######
class Parser:
def __init__(self, raw, request, **kw):
self.request = request
self.form = request.form
self.raw = raw
def format(self, formatter):
# on divise le textes en lignes (1 ligne = une entree dans le portail)
quotes = self.raw.split('\n')
# on récupere le chemin des fichiers attaches pour les images
current_pagename=formatter.page.page_name
attachment_path = AttachFile.getAttachDir(self.request, current_pagename, create=1)
# on traite les ligne une à une
entries = []
for line in quotes:
line=line.strip()
items=line.split('@@',2)
if len(items)<3:
# Voir ce qu'on fait
## self.request.write('<!-- error, wrong number of parameters -->')
pass
else:
# On récupère le nom de l'image
pic = items[0].strip()
# On va formatter le titre et la légende
tit_buf = StringIO.StringIO()
bod_buf = StringIO.StringIO()
self.request.redirect(tit_buf)
WikiParser(items[1], self.request).format(formatter)
title = tit_buf.getvalue()
self.request.redirect()
self.request.redirect(bod_buf)
WikiParser(items[2], self.request).format(formatter)
body = bod_buf.getvalue()
self.request.redirect()
# Qu'on rajoute à la liste des entrées
entries += [ (( pic, title, body )) ]
self.request.write(formatter.crans_portal(entries))