summaryrefslogtreecommitdiff
path: root/manual/tools/htmlcut
blob: be079abb2bf4e8d3c1cc2e19e3c86d13019f2db0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
#!/usr/local/bin/perl
# Split an HTML file into smaller nodes.
# Split at <H1> headers and also at some <H2> headers.

$h0 = "H0";
$h1 = "H1";
$h2 = "H2";

# Parse options

option:
while(1) {
  $_ = $ARGV[0];
  if (/^-([0-9]+)$/) {
    $split2[$1] = 1;
  }
  elsif (/^-article/) {
    $h0 = "H1";
    $h1 = "H2";
    $h2 = "H3";
  }
  else {
    last option;
  }
  shift(@ARGV);
}

$infile = $ARGV[0];

# Find URL's for the links

$level0 = 0;
$level1 = 0;
$uselabel = 1;
open(INPUT, $infile);
while(<INPUT>) {
  if (m|^<$h0>(.*)</$h0>|o) {
    $level0++;
    $currfile = "node" . ($level1 + 1) . ".html";
    $lblnum = $level0;
    $uselabel = 0;
  }
  if (m|^<$h1>(.*)</$h1>|o) {
    $level1++;
    $level2 = 0;
    $currfile = "node$level1.html"; 
    $lblnum = $level1;
    $uselabel = 1;
  }
  if (m|^<$h2>(.*)</$h2>|o) {
    $level2++;
    if ($split2[$level1]) { $currfile = "node$level1.$level2.html"; }
    $lblnum = "$level1.$level2";
  }
  s|<A NAME="([^"]*)"></A>|do set_url($1)|ige;
}

sub set_url {
  local ($lbl) = @_;
  if ($uselabel) {
      $url{$lbl} = "$currfile#$lbl";
  } else {
      $url{$lbl} = $currfile;
  }
  $label{$lbl} = $lblnum;
}

# Cut the file

$level1 = 0;
open(INPUT, $infile);
while(<INPUT>) {
  if (m|^<$h0>(.*)</$h0>|o) {
    if ($level2 > 0) { print FILE1 "</UL>\n"; }
    select(STDOUT);
    if ($level1 >= 1) { print "</UL>"; }
    print "<$h2>$1</$h2>\n";
    if ($level1 >= 1) { print "<UL>"; }
    next;
  }
  if (m|^<$h1>(.*)</$h1>|o) {
    if ($level2 > 0) { print FILE1 "</UL>\n"; }
    $level1++;
    $level2 = 0;
    select(STDOUT);
    if ($level1 == 1) { print "<HR><BR><UL>\n"; }
    print "<LI><A HREF=\"node$level1.html\">$1</A>\n";
    open(FILE1, "> node$level1.html");
    select(FILE1);
    &print_title($1);
  }
  if ($split2[$level1] && m|^<$h2>(.*)</$h2>|o) {
    $level2++;
    select(FILE1);
    if ($level2 == 1) { print "<HR><BR><UL>\n"; }
    print "<LI><A HREF=\"node$level1.$level2.html\">$1</A>\n";
    open(FILE2, "> node$level1.$level2.html");
    select(FILE2);
    &print_title($1);
  }
  s|<A HREF="#([^"]*)">X</A>|'<A HREF="' . $url{$1} . '">' . $label{$1} . '</A>'|ige;
  print $_;
}
select(STDOUT);
if ($level1 >= 1) { print "</UL>\n"; }

sub print_title {
    local ($title) = @_;
    $title =~ s|<[a-zA-Z/]+>||g;
    print "<TITLE>$title</TITLE>\n";
}