60135c9d3b2a5cc361303e6ebf14233819f11db2
[openssl-web.git] / bin / mk-changelog
1 #! /usr/bin/perl -w
2 use strict;
3
4 # Read whole input.
5 my $page;
6 {
7     local $/;
8     $page .= <STDIN>;
9 }
10
11 # HTML entities.
12 $page =~ s|&|&amp;|sg;
13 $page =~ s|<|&lt;|sg;
14 $page =~ s|>|&gt;|sg;
15
16 # Make sub-headings.
17 $page =~ s|^.+?(Changes.+?\n+)|$1|s;
18 $page =~ s|(Changes between.+?)\n|</pre>\n<h3>$1</h3>\n<pre>\n|sg;
19
20 # Wrap it, and remove empty <pre></pre>
21 $page = '<pre>' . $page . '</pre>';
22 $page =~ s|<pre></pre>||g;
23
24 # Make a TOC
25 my $ctr = 0;
26 my $toc;
27 my $out;
28 my $top = '  <a href="#toc"><img src="/img/up.gif"/></a>';
29 for (split /^/, $page) {
30     if ( /<h3>/ ) {
31         my $name = $_;
32         $name =~ s|<h3>(.*)</h3>|$1|;
33         chop ($name);
34         $out .= '<h3><a name="x' . $ctr . '">' . $name . "</a>$top</h3>\n";
35         $toc .= '<li><a href="#x' . $ctr . '">' . $name . "</a></li>\n";
36         $ctr++;
37     } else {
38         $out .= $_;
39     }
40 }
41
42 print "<h3><a name='toc'>Table of contents</a></h3>\n";
43 print "<ul>";
44 print $toc;
45 print "</ul>";
46 print $out;
47
48 exit(0);