lib/template: migrate the example to new constructors
[nit.git] / lib / template / examples / tmpl_composer.nit
1 # This file is part of NIT ( http://www.nitlanguage.org ).
2 #
3 # Licensed under the Apache License, Version 2.0 (the "License");
4 # you may not use this file except in compliance with the License.
5 # You may obtain a copy of the License at
6 #
7 # http://www.apache.org/licenses/LICENSE-2.0
8 #
9 # Unless required by applicable law or agreed to in writing, software
10 # distributed under the License is distributed on an "AS IS" BASIS,
11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 # See the License for the specific language governing permissions and
13 # limitations under the License.
14
15 import template
16
17 ### Here, definition of the specific templates
18
19 # The root template for composers
20 class TmplComposers
21 super Template
22
23 # Short list of composers
24 var composers = new Array[TmplComposer]
25
26 # Detailled list of composers
27 var composer_details = new Array[TmplComposerDetail]
28
29 # Add a composer in both lists
30 fun add_composer(firstname, lastname: String, birth, death: Int)
31 do
32 composers.add(new TmplComposer(lastname))
33 composer_details.add(new TmplComposerDetail(firstname, lastname, birth, death))
34 end
35
36 redef fun rendering do
37 add """
38 COMPOSERS
39 =========
40 """
41 add_all composers
42 add """
43
44 DETAILS
45 =======
46 """
47 add_all composer_details
48 end
49 end
50
51 # A composer in the short list of composers
52 class TmplComposer
53 super Template
54
55 # Short name
56 var name: String
57
58 redef fun rendering do add "- {name}\n"
59 end
60
61 # A composer in the detailled list of composers
62 class TmplComposerDetail
63 super Template
64
65 var firstname: String
66 var lastname: String
67 var birth: Int
68 var death: Int
69
70 redef fun rendering do add """
71
72 COMPOSER: {{{firstname}}} {{{lastname}}}
73 BIRTH...: {{{birth}}}
74 DEATH...: {{{death}}}
75 """
76
77 end
78
79 ### Here a simple usage of the templates
80
81 var f = new TmplComposers
82 f.add_composer("Johann Sebastian", "Bach", 1685, 1750)
83 f.add_composer("George Frideric", "Handel", 1685, 1759)
84 f.add_composer("Wolfgang Amadeus", "Mozart", 1756, 1791)
85 f.write_to(stdout)