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 (19 years, 2 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

# User Rev Content
1 pippijn 1.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