blob: bf1feaca2c95d849ab4bd355b866a4bc5d87bff0 [file] [log] [blame]
[article Template 1.7
[quickbook 1.7]
]
[section Templates]
[/-------------------------------- nullary arg ]
[template foo0 nullary_arg]
[foo0]
[/-------------------------------- unary arg, phrase syle ]
[template foo1[bar] foo [bar]]
[foo1 baz]
[/-------------------------------- unary arg, block syle ]
[template foo2[bar]
foo [bar]
]
[foo2 baz]
[template foo3[bar]
This is a complete paragraph. [bar] [bar] [bar] [bar] [bar]
[bar] [bar] [bar] [bar].... blah blah blah......
]
[foo3 kalamazoo]
[/-------------------------------- unary arg, using punctuation ]
[template |[bar] '''<hey>'''[bar]'''</hey>''']
[|baz]
[/-------------------------------- recursive templates ]
[template foo4[bar]
[foo3 [bar]]
]
[foo3 madagascar]
[template foo5[x] zoom [x]]
[template foo6[x] [x] zoom]
[foo6[foo5 peanut]]
[template kinda_weird[x y] [x] [y]]
[kinda_weird exactly..xanadu]
[/-------------------------------- space delimitted args ]
[template simple1[a b] [a][b]]
[simple1 w x]
[template simple2[a b c d] [a][b][c][d]]
[simple2 w x y z][simple2 w x y z trail]
[/-------------------------------- John's templates ]
[template code[x]
int main()
{
std::cout << ``[x]`` << std::endl;
}
]
[code "Hello\, World"]
[template alpha '''&alpha;''']
[template pow[a b] [a]'''<superscript>'''[b]'''</superscript>''' ]
[template super[text]'''<superscript>'''[text]'''</superscript>''' ]
[pow x 2]
[pow [alpha] 2]
x[super 2]
[/-------------------------------- Some more ]
[template banana got a banana?]
[template plantation[bananarama] [bananarama]]
[plantation [banana]]
[/-------------------------------- Not a bug (there was a syntax error here) ]
[template join1[a b] [b][a]]
[template join2[a b] [a][b]]
[template test[x] [join1 [join2 0 [x]]...0]]
[test 0]
[/-------------------------------- Mismatched template ]
[template foo 1]
[fool]
[template blah 10]
[endsect]
[section Empty Templates]
[template empty1]
[template empty2 ]
[template empty3 [/comment]]
[template empty4 [/comment]
]
[template empty5
]
[template empty6
]
[template empty7
[/comment]
]
[template empty8
[/comment]
]
[template empty_arg1[x]]
[template empty_arg2[x y]]
[empty1]
[empty2]
[empty3]
[empty4]
[empty5]
[empty6]
[empty7]
[empty8]
[empty_arg1 1]
[empty_arg2 1 2]
[endsect]
[/----------------------------------- Nested templates ]
[section Nested Templates]
[template block_foo[content]
Start block template.
[content]
End block template.
]
[template phrase_foo[content] Start phrase template. [content] End phrase template.]
Pre [block_foo [block_foo Hello!]] Post
Pre [block_foo [phrase_foo Hello!]] Post
Pre [phrase_foo [block_foo Hello!]] Post
Pre [phrase_foo [phrase_foo Hello!]] Post
[endsect]
[/----------------------------------- Block Markup ]
[section Block Markup]
[template list
* a
* b]
[template horizontal
----]
[template codeblock
int main() {}]
[template paragraphs
Paragraphs 1
Paragraphs 2
]
[list][horizontal][codeblock][paragraphs]
* [list]
* [horizontal]
* [codeblock]
* [paragraphs]
[endsect]
[/----------------------------------- 1.5+ use static scoping ]
[section Static Scoping]
[template x static scoping]
[template static_test1[] [x]]
[template static_test2[x] [static_test1]]
[static_test2 dynamic scoping]
[/ This should be '[a]' because [a] isn't matched. ]
[template test1[] [a]]
[template test2[a] [test1]]
[test2 1]
[/ In 1.5 template arguments are scoped at the point they are defined]
[template y new]
[template static_test3[a y] [a]]
[static_test3 [y] old]
[/ From https://svn.boost.org/trac/boost/ticket/2034 ]
[template same[x] [x]]
[template echo[a b] [a] [b]]
[template echo_twice[x] [echo [same [x]]..[same [x]]]]
[echo_twice foo]
[endsect]
[/----------------------------------- 1.5+ template arguments ]
[section Template Arguments]
[template binary[x y] {[x]-[y]}]
[binary 1..2] [/ {1-2} ]
[binary 1 2] [/ {1-2} ]
[binary 1..2 3 4] [/ {1-2 3 4} ]
[binary 1 2..3 4] [/ {1 2-3 4} ]
[binary 1 2 3..4] [/ {1 2 3-4} ]
[binary 1.\.2..3] [/ {1..2-3} ]
[binary 1.\.2 3] [/ {1..2-3} ]
[binary [binary 1 2..3]..4] [/ { {1 2-3}-4} ]
[binary [binary 1 2..3] 4] [/ { {1 2-3}-4} ]
[binary [binary 1 2 3]..4] [/ { {1-2 3}-4} ]
[binary \[1 2\] 3] [/ {[1-2] 3} ]
[binary \[1..2\] 3] [/ {[1-2] 3} ]
[binary \[1 2] [/ {(1-2} ]
[template ternary[x y z] {[x]-[y]-[z]}]
[ternary 1..2..3] [/ {1-2-3} ]
[ternary 1 2 3] [/ {1-2-3} ]
[endsect]
[/----------------------------------- Block and phrases ]
[section Block and phrase templates]
[template phrase_template[] Some *text*]
[template block_template[]
A <emphasis>paragraph</emphasis>.
]
[phrase_template]
[block_template]
[`phrase_template]
[`block_template]
[/ Trailing newline shouldn't be included]
[template named_index[type title]
'''<index type="'''[type]'''"><title>'''[title]'''</title></index>'''
]
[named_index things Things]
[/ Blocks in phrase templates ]
[template phrase_block1[] [table]]
[template phrase_block2[] [table] Text2 afterwards.]
[template phrase_block3[] Text3 before. [table]]
[template phrase_block4[] Text4 before. [table] Text4 afterwards.]
[template phrase_block5[] [table] * Not a list.]
[template phrase_block6[] [table]
* Not a list.]
[phrase_block1][phrase_block2][phrase_block3][phrase_block4]
[phrase_block5][phrase_block6]
[endsect]
[/-------------------------------- Skipping template body ]
[section:template_body Skipping the template body correctly]
[template args1[x] [`x]]
[template args2[] [ordered_list [``code``]]]
[/ Due to a bug in the template parser need to stop the parser
thinking that the code is an escaped template. ]
[template args3[] [ordered_list [\ `code`]]]
[args1 <emphasis>Argument</emphasis>]
[args2]
[args3]
[endsect]
[/----------------------------------- Escaped templates ]
[section Escaped templates]
[template raw_markup <thingbob>Not real boostbook</thingbob>]
[template escaped1 [x] [`x]]
[`raw_markup]
[escaped1 <thingbob>More fake boostbook</thingbob>]
[endsect]