Nothing of importance: fix wording in a comment :-)
[webber:webber.git] / in / functions.md
1 title: Functions
2 parent: Webber
3 lang: en
4 ctime: 2009-06-24
5 mtime: 2011-01-13
6 change: remove reference to show_orphan
7
8 You can call functions only from [[template_mako]], not from
9 [[pages|pageformat]]. If you need the latter, look at [[macros]].
10
11 = Example =
12
13         Modified ${format_date(mtime)}
14
15 = List of functions =
16
17 Here's list of functions defined by webber and it's default plugins:
18
19
20 == format_date(timestamp, format) ==
21
22 Takes a timestamp (seconds since 1st January 1970) and converts it into
23 a string.
24
25 "`format`" is optional. If not used, "`cfg.date_format`" will be used.
26 Otherwise it should be a format-string as documented by "`man strftime`". For
27 example, "`%Y-%m-%d`" stands for year-month-date.
28
29 Defined in `webber.py`.
30
31
32 == get_time(format) ==
33
34 Returns the current date/time as a string.
35
36 "`format`" is optional. If not used, "`cfg.date_format`" will be used.
37 Otherwise it should be a format-string as documented by "`man strftime`". For
38 example, "`%Y-%m-%d`" stands for year-month-date.
39
40 Defined in `webber.py`.
41
42
43 == get_breadcrumbs() ==
44
45 Returns the breadcrumbs as "`(page, link)`" tuples, where "`page`" is a "`class
46 File`"-object and link is a relative link from the current page to "`page`".
47
48 Defined in [[hierarchy.py|hierarchy]], where you find an example.
49
50
51 == get_current_file() ==
52
53 Returns the current "`class File`" object.
54
55 Defined in `webber.py`.
56
57
58 == get_recently(page) ==
59
60 Returns a list of up to 10 pages below the specified page. If you don't
61 specify a page, the current page will be used. For each page, you'll get a
62 "`(page, link)`" tuple back, where "`page`" is a "`class File`"-object and
63 link is a relative link from the current page to "`page`".
64
65 Defined in [[hierarchy.py|hierarchy]], where you find an example.
66
67
68 == get_sidemenu(root) ==
69
70 Returns a menu for the current page. For each page in this menu you'll get
71 back a "`(level, part_of_path, is_current, page, link)`" tuple, where
72 "`page`" is a "`class File`"-object and link is a relative link from the
73 current page to "`page`".
74
75 You'll need to specify "`root`" if your top-most page isn't named "`Home`".
76
77 Defined in [[hierarchy.py|hierarchy]], where you find an example.
78
79
80 == get_linear_sitemap(root, level) ==
81
82 Returns all pages as "`(level, page, link)`" tuples, where "`page`" is a
83 "`class File`"-object and link is a relative link from the current page to
84 "`page`".
85
86 You'll need to specify "`root`" if your top-most page isn't named "`Home`".
87
88 The "`level`" will by default start at 1.
89
90 Defined in [[hierarchy.py|hierarchy]], where you find an example.
91
92 == get_toc() ==
93
94 Returns an unsorted list with the hierarchy of the table-of-contents.
95
96 Defined in [[toc.py|toc]], where you find an example.
97
98
99 = Writing functions =
100
101 A function is a simply python function which returns HTML. The function needs
102 to be decorated with "`@set_function(name)`". There's an example in
103 [[skeleton.py|skeleton]], which looks like:
104
105         :::python
106         @set_function("func")
107         def sample_func():
108                 if cfg.test_verbose:
109                         print "in macro skeleton.sample_func"
110                 return "{ output from sample function }"
111
112 Inside your template, you can call the function without parameters or
113 with arbitrary parameters, like this:
114
115         ${func(a=1, b="test")}
116
117 Inside your function you can access this as ...
118
119 * "`params.a`" which contains the integer "`1`"
120 * "`params.b`" which contains the string "`test`"