view MoinMoin/macro/ @ 0:77665d8e2254

tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0 (automatically generated log message) imported from: moin--main--1.5--base-0
author Thomas Waldmann <>
date Thu, 22 Sep 2005 15:09:50 +0000
children 0bbc39b09f95
line wrap: on
line source

# -*- coding: iso-8859-1 -*-
    MoinMoin - RandomQuote Macro

    Selects a random quote from FortuneCookies or a given page.

        It will look for list delimiters on the page in question.
        It will ignore anything that is not in an "*" list.

    @copyright: 2002-2004 by Jürgen Hermann <>
    @license: GNU GPL, see COPYING for details.
    Originally written by Thomas Waldmann.
    Gustavo Niemeyer added wiki markup parsing of the quotes.

import random, StringIO
from MoinMoin.Page import Page, wikiutil

Dependencies = ["time"]

def execute(macro, args):
    _ = macro.request.getText

    pagename = args or 'FortuneCookies'
        page = Page(macro.request, pagename)
        raw = page.get_raw_body()
        raw = ""

    # this selects lines looking like a list item
    # !!! TODO: make multi-line quotes possible (optionally split by "----" or something)
    quotes = raw.splitlines()
    quotes = [quote.strip() for quote in quotes]
    quotes = [quote[2:] for quote in quotes if quote.startswith('* ')]
    if not quotes:
        return (macro.formatter.highlight(1) +
                _('No quotes on %(pagename)s.') % {'pagename': pagename} +
    quote = random.choice(quotes)
    page.set_raw_body(quote, 1)
    out = StringIO.StringIO()
    page.send_page(macro.request, content_only=1, content_id="RandomQuote_%s" % wikiutil.quoteWikinameFS(page.page_name) )
    quote = out.getvalue()
    return quote