~ubuntu-branches/ubuntu/raring/avr-libc/raring-proposed

« back to all changes in this revision

Viewing changes to doc/api/unjs.pl

  • Committer: Bazaar Package Importer
  • Author(s): Hakan Ardo
  • Date: 2008-08-10 09:59:16 UTC
  • mfrom: (1.2.1 upstream) (8 intrepid)
  • mto: (4.1.7 sid)
  • mto: This revision was merged to the branch mainline in revision 9.
  • Revision ID: james.westby@ubuntu.com-20080810095916-7ku06pjsfia3hz16
Added build-depends on texlive-extra-utils (closes: #493454)

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#!/usr/bin/perl
 
2
# ----------------------------------------------------------------------------
 
3
# "THE BEER-WARE LICENSE" (Revision 42):
 
4
# <joerg@FreeBSD.ORG> wrote this file.  As long as you retain this notice you
 
5
# can do whatever you want with this stuff. If we meet some day, and you think
 
6
# this stuff is worth it, you can buy me a beer in return.        Joerg Wunsch
 
7
# ----------------------------------------------------------------------------
 
8
#
 
9
# Parse the generated tree.js file, and insert a <noscript> tree into the
 
10
# HTML source.
 
11
#
 
12
# $Id: unjs.pl,v 1.2 2003/01/20 21:05:19 joerg_wunsch Exp $
 
13
#
 
14
 
 
15
die "usage: unjs tree.js tree.html index.html" unless $#ARGV == 2;
 
16
 
 
17
$treejs = $ARGV[0];
 
18
$treehtml = $ARGV[1];
 
19
$indexhtml = $ARGV[2];
 
20
 
 
21
parsejs($treejs) || exit 1;
 
22
 
 
23
open(HTML, $treehtml) || die "Cannot open $treehtml: $!\n";
 
24
open(NEW, ">${treehtml}.new") ||
 
25
    die "Cannot create ${treehtml}.new: $!\n";
 
26
 
 
27
while (<HTML>) {
 
28
    print NEW;
 
29
    if (/^<\/script>$/) {
 
30
        print NEW "<noscript>\n";
 
31
        print NEW $nojs;
 
32
        print NEW "</noscript>\n";
 
33
    }
 
34
}
 
35
close(NEW);
 
36
close(HTML);
 
37
rename($treehtml, "${treehtml}.bak") &&
 
38
    rename("${treehtml}.new", $treehtml);
 
39
 
 
40
open(HTML, $indexhtml) || die "Cannot open $indexhtml: $!\n";
 
41
open(NEW, ">${indexhtml}.new") ||
 
42
    die "Cannot create ${indexhtml}.new: $!\n";
 
43
 
 
44
while (<HTML>) {
 
45
    print NEW;
 
46
    if (/^<\/frameset>$/) {
 
47
        print NEW "<noframes>\n";
 
48
        print NEW $nojs;
 
49
        print NEW "</noframes>\n";
 
50
    }
 
51
}
 
52
close(NEW);
 
53
close(HTML);
 
54
rename($indexhtml, "${indexhtml}.bak") &&
 
55
    rename("${indexhtml}.new", $indexhtml);
 
56
exit(0);
 
57
 
 
58
sub parsejs
 
59
{
 
60
    my ($f) = @_;
 
61
    my ($i, $err);
 
62
 
 
63
    open(JS, $f) || die "Cannot open $f: $!\n";
 
64
 
 
65
    while ($l = <JS>) {
 
66
        chomp $l;
 
67
 
 
68
        $resvar = undef;
 
69
        $insvar = undef;
 
70
 
 
71
        $l =~ s/^\s+//;
 
72
        if ($l =~ /^([A-Za-z][A-Za-z0-9]*)\s*=\s*/) {
 
73
            # variable assignment
 
74
            $resvar = $1;
 
75
            $l = $';
 
76
        }
 
77
        $i = parsefun($l);
 
78
        if ($i == 0) {
 
79
            $errs++;
 
80
            next;
 
81
        }
 
82
    }
 
83
    close(JS);
 
84
    return $errs == 0;
 
85
}
 
86
 
 
87
sub parsefun
 
88
{
 
89
    my ($line) = @_;
 
90
    my $fun, $arg;
 
91
 
 
92
    if ($line !~ /^([A-Za-z]+)[(](.*)[)]$/) {
 
93
        warn "item ignored: $line\n";
 
94
        return 0;
 
95
    }
 
96
    $fun = $1;
 
97
    $arg = $2;
 
98
    if ($fun ne "gFld" && $fun ne "gLnk" &&
 
99
        $fun ne "insFld" && $fun ne "insDoc") {
 
100
        warn "function $fun unknown\n";
 
101
        return 0;
 
102
    }
 
103
    if ($fun =~ /^ins(.*)/) {
 
104
        parseins($1, $arg) || return 0;
 
105
    } elsif ($fun =~ /^g(.*)/) {
 
106
        parseg($1, $arg) || return 0;
 
107
    }
 
108
 
 
109
    return 1;
 
110
}
 
111
 
 
112
sub parseg
 
113
{
 
114
    my ($name, $line) = @_;
 
115
 
 
116
    if ($line !~ /^["](.*)["],\s*["](.*)["],\s*["](.*)["]/) {
 
117
        warn "arglist expected: $line\n";
 
118
        return 0;
 
119
    }
 
120
    $text = $1;
 
121
    $tag = $2;
 
122
    $lnk = $3;
 
123
 
 
124
    if ($name eq "Fld") {
 
125
        if ($lnk ne "") {
 
126
            $nojs .= "<a href=\"$lnk\" target=\"basefrm\"><b>$text</b></a><br>\n";
 
127
        } else {
 
128
            $nojs .= "$text<br>\n";
 
129
        }
 
130
    } else {
 
131
        # gLnk
 
132
        if ($lnk ne "") {
 
133
            $nojs .= "<a href=\"$lnk\" target=\"basefrm\">$text</a><br>\n";
 
134
        } else {
 
135
            # Huh, link without target?
 
136
            $nojs .= "$text<br>\n";
 
137
        }
 
138
    }
 
139
}
 
140
 
 
141
sub parseins
 
142
{
 
143
    my ($name, $line) = @_;
 
144
 
 
145
    if ($line !~ /^([A-Za-z][A-Za-z0-9]*),\s*/) {
 
146
        warn "variable expected: $line\n";
 
147
        return;
 
148
    }
 
149
    $insvar = $1;
 
150
 
 
151
    parsefun($') || return 0;
 
152
 
 
153
    return 1;
 
154
}
 
155