File: include.py

package info (click to toggle)
circuits 3.2.3-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 2,980 kB
  • sloc: python: 17,583; javascript: 3,226; makefile: 100
file content (58 lines) | stat: -rw-r--r-- 1,341 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
"""
Include macros

Macros for inclusion of other wiki pages
"""

from genshi import builder


def include(macro, environ, pagename=None, *args, **kwargs):
    """Return the parsed content of the page identified by arg_string"""
    if pagename is None:
        return None

    db = environ['db']
    page = db.get(pagename, None)

    if page is not None:
        environ['page.name'] = pagename

        return environ['parser'].generate(page, environ=environ)
    return None


def include_raw(macro, environ, pagename=None, *args, **kwargs):
    """
    Return the raw text of the page identified by arg_string, rendered
    in a <pre> block.
    """
    if pagename is None:
        return None

    db = environ['db']
    page = db.get(pagename, None)

    if page is not None:
        return builder.tag.pre(page, class_='plain')
    return None


def include_source(macro, environ, pagename=None, *args, **kwargs):
    """
    Return the parsed text of the page identified by arg_string, rendered
    in a <pre> block.
    """
    if pagename is None:
        return None

    db = environ['db']
    page = db.get(pagename, None)

    if page is not None:
        environ['page.name'] = pagename

        return builder.tag.pre(
            environ['parser'].render(page, environ=environ).decode('utf-8'),
        )
    return None