ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/ermyth/doc/generate
Revision: 1.2
Committed: Sat Jul 21 01:20:12 2007 UTC (16 years, 10 months ago) by pippijn
Branch: MAIN
CVS Tags: HEAD
Changes since 1.1: +0 -0 lines
State: FILE REMOVED
Log Message:
removed old generate

File Contents

# Content
1 #!/usr/bin/env perl
2
3 use strict;
4 use warnings;
5 use utf8;
6
7 use Template;
8 use YAML;
9 use Pod::POM;
10
11 # Static variables
12 my $static = YAML::LoadFile("variables.yml");
13 my $parser = new Pod::POM;
14
15 my @podfiles = <pod/*.pod>;
16
17 for my $file (@podfiles) {
18 my $pom = $parser->parse ($file)
19 or die $parser->error();
20 $file =~ s/pod\/(.+)\.pod$/template\/$1.tt/;
21 open FH, ">", $file;
22 print FH $pom->present ("Ermyth::Pod");
23 close FH;
24 }
25
26 my @files = <template/*.tt>;
27
28 for my $file (@files) {
29 my @contents = do { open my $fh, "<$file" or die "$file: $!\n"; <$fh> };
30 my $subtitle = shift @contents;
31 chomp $subtitle;
32
33 my $tt = Template->new({
34 INCLUDE_PATH => 'lib:template',
35 INTERPOLATE => 1,
36 POST_CHOMP => 1,
37 EVAL_PERL => 1,
38 }) or die "$Template::ERROR\n";
39
40 my $vars = { file => sub { return do { local $/; open my $fh, "<$_[0]" or die "$_[0]: $!\n"; <$fh> } if $_[0]; } };
41
42 my $contents = "@contents";
43 my $data = ''; # Variable to store processed templates
44 $tt->process(\$contents, $vars, \$data)
45 or die $tt->error();
46
47 # Re-initialised with static variables from YAML
48 $vars = $static;
49 $vars->{subtitle} = $subtitle;
50 $vars->{contents} = $data;
51
52 my $output = ''; # Variable to store the complete page
53 $tt->process('html.tt', $vars, \$output)
54 or die $tt->error(), "\n";
55
56 # Save the page to a html file
57 $file =~ s/template\/(.+)\.tt$/html\/$1.html/;
58 open HTML, ">$file";
59 print HTML $output;
60 close HTML;
61 }
62
63
64 package Ermyth::Pod;
65
66 use strict;
67 use warnings;
68 use utf8;
69
70 use base "Pod::POM::View";
71
72 sub view_pod {
73 my ($self, $item) = @_;
74 $item->content->present ($self)
75 }
76
77 sub view_head1 {
78 my ($self, $item) = @_;
79 $item->title->present($self), "\n\n",
80 $item->content->present($self);
81 }
82
83 sub view_head2 {
84 my ($self, $item) = @_;
85 '<h3>',
86 $item->title->present($self),
87 "</h3>",
88 $item->content->present($self);
89 }
90
91 sub view_head3 {
92 my ($self, $item) = @_;
93 '<h4>',
94 $item->title->present($self),
95 "</h4>",
96 $item->content->present($self);
97 }
98
99 sub view_seq_entity {
100 my ($self, $item) = @_;
101 $item =~ /^x/
102 ? ('&#', $item, ';')
103 : ('&', $item, ';')
104 }
105
106 sub view_seq_code {
107 my ($self, $item) = @_;
108 '<i>', $item, '</i>'
109 }
110
111 sub view_seq_bold {
112 my ($self, $item) = @_;
113 '<b>', $item, '</b>'
114 }
115
116 sub view_seq_link {
117 my ($self, $item) = @_;
118 my ($title, $link) = split '\|', $item, 2;
119 "<a href='$link'>$title</a>"
120 }
121
122 sub view_verbatim {
123 my ($self, $item) = @_;
124 "<pre>\n", $item, '</pre>'
125 }
126
127 sub view_over {
128 my ($self, $item) = @_;
129 '<ul>',
130 $item->content->present ($self),
131 '</ul>'
132 }
133
134 sub view_item {
135 my ($self, $item) = @_;
136 my $title;
137 if ($item->title =~ /^L</) {
138 $title = $item->title;
139 $title =~ s/L<(.+)>/- $1/;
140 $title = $self->xmlise ($title);
141 $title = $self->view_seq_link ($title);
142 } else {
143 $title = $item->title;
144 $title = $self->xmlise ($title);
145 }
146
147 '<li>', ($item->title eq '*' ? '<b>---</b> ' : '<b>' . $title . '</b> '), $item->content->present ($self), '</li>'
148 }
149
150 sub view_textblock {
151 my ($self, $item) = @_;
152 '<p>', $item, '</p>'
153 }
154
155 sub xmlise {
156 my ($self, $text) = @_;
157 $text =~ s/>/&gt;/;
158 $text =~ s/</&lt;/;
159
160 $text
161 }
162
163
164 1