ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/cvsroot/ermyth/doc/lib/PodHTML.pm
Revision: 1.1
Committed: Sat Jul 21 01:25:40 2007 UTC (19 years, 2 months ago) by pippijn
Branch: MAIN
Log Message:
reworked documentation system

File Contents

# User Rev Content
1 pippijn 1.1 package PodHTML;
2    
3     use strict;
4     use warnings;
5     use utf8;
6    
7     use base "Pod::POM::View";
8    
9     our $subdir;
10     our $dir;
11     our $menu;
12    
13     sub view_pod {
14     my ($self, $item) = @_;
15     $item->content->present ($self)
16     }
17    
18     sub view_head1 {
19     my ($self, $item) = @_;
20     my $file;
21     if ($item->title =~ /\|/) {
22     my @cmds = split /\|/, $item->title;
23     for my $cmd (@cmds) {
24     my $content = "$cmd\n\n" . $item->content->present ($self);
25     $content =~ s/\$CMD/$cmd/g;
26     $file = "$dir/$subdir/" . lc $cmd . ".tt";
27     $file =~ s/ /_/g;
28     open my $fh, ">", $file;
29     print $fh $content;
30     close $fh;
31     }
32     } else {
33     if ($subdir) {
34     $file = "$dir/$subdir/" . lc $item->title . ".tt";
35     } else {
36     $file = "$dir/" . lc $item->title . ".tt";
37     }
38     $file =~ s/ /_/g;
39     open my $fh, ">", $file;
40     my $content = $item->title->present ($self) . "\n\n" . $item->content->present ($self);
41     print $fh $content;
42     close $fh;
43     }
44     my $name = $file;
45     $name =~ s/$dir\/\w+\/(.+)\.tt/$1/;
46     $name =~ s/_/ /g;
47     my $svs;
48     if ($subdir) {
49     $svs = $subdir;
50     } else {
51     $svs = $dir;
52     }
53     $svs =~ s/serv/Serv/;
54     $svs = ucfirst $svs;
55     $file =~ s/$dir/../;
56     $file =~ s/\.tt$//;
57     $menu->{$svs}->[($#{$menu->{$svs}}) + 1] = {
58     href => "$file.html",
59     title => uc $name,
60     };
61     }
62    
63     sub view_head2 {
64     my ($self, $item) = @_;
65     '<h3>',
66     $item->title->present ($self),
67     "</h3>",
68     $item->content->present ($self);
69     }
70    
71     sub view_head3 {
72     my ($self, $item) = @_;
73     '<h4>',
74     $item->title->present ($self),
75     "</h4>",
76     $item->content->present ($self);
77     }
78    
79     sub view_seq_entity {
80     my ($self, $item) = @_;
81     $item =~ /^x/
82     ? ('&#', $item, ';')
83     : ('&', $item, ';')
84     }
85    
86     sub view_seq_code { "<i>$_[1]</i>" }
87     sub view_seq_bold { "<b>$_[1]</b>" }
88     sub view_seq_link { my $href = lc $_[1]; "<a href='$href.html'>$_[1]</a>" }
89     sub view_seq_link_top {
90     my ($title, $href) = split /\|/, $_[1], 2;
91     "<a href='$href'>$title</a>"
92     }
93    
94     sub view_verbatim {
95     my ($self, $item) = @_;
96     "<pre>\n$item</pre>"
97     }
98    
99     sub view_over {
100     my ($self, $item) = @_;
101     "<ul>\n",
102     $item->content->present ($self),
103     "</ul>\n"
104     }
105    
106     sub view_item {
107     my ($self, $item) = @_;
108     my $title;
109     if ($item->title =~ /^L</) {
110     $title = $item->title;
111     $title =~ s/L<(.+)>/- $1/;
112     $title = $self->xmlise ($title);
113     $title = $self->view_seq_link_top ($title);
114     } else {
115     $title = $item->title;
116     $title = $self->xmlise ($title);
117     }
118    
119     '<li>', ($item->title eq '*' ? '<b>---</b> ' : '<b>' . $title . '</b> '), $item->content->present ($self), "</li>\n"
120     }
121    
122     sub view_textblock { "<p>$_[1]</p>" }
123     sub view_seq_index { "&lt;$_[1]&gt;" }
124     sub view_seq_space { "[$_[1]]" }
125    
126     sub view_for {
127     my ($self, $item) = @_;
128     my $format = $item->format;
129     my $text = $item->text;
130     $text =~ s/X<([^>]+)>/&lt;$1&gt;/g;
131     $text =~ s/S<([^>]+)>/[$1]/g;
132    
133     "<blockquote><b>$format</b> $text</blockquote>"
134     }
135    
136     sub xmlise {
137     my ($self, $text) = @_;
138     $text =~ s/>/&gt;/;
139     $text =~ s/</&lt;/;
140    
141     $text
142     }
143    
144     1;