File: doxy-filter.pl

package info (click to toggle)
libview 0.6.2-1
  • links: PTS, VCS
  • area: main
  • in suites: lenny
  • size: 1,980 kB
  • ctags: 614
  • sloc: sh: 9,131; cpp: 3,082; ansic: 992; makefile: 114; perl: 67
file content (89 lines) | stat: -rwxr-xr-x 1,741 bytes parent folder | download | duplicates (4)
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
#!/usr/bin/perl

$f = shift;

$past_includes = 0;

$in_comment = 0;
$found_docblock = 0;
$in_docblock_summary = 0;
$in_docblock_results = 0;
$in_docblock_sideeffects = 0;

$docblock_summary = "";
$docblock_results = "";
$docblock_sideeffects = "";

$comment_block = "";

open (IN, $f);
for (<IN>) {
    s#// (IN|OUT|IN/OUT):\s+(.+)$#//!< \2#;

    if (/^#include/) {
        $past_includes = 1;
    }

    if (/^\/\*$/) {
        $in_comment = 1;
    }
    elsif (/^ \*\/$/) {
        $comment_block .= $_;
        $in_comment = 0;

        &process_comment($comment_block);

        $comment_block = "";
        next;
    }

    if ($in_comment == 1) {
        $comment_block .= $_;
    }
    else {
        print $_;
    }
}
close IN;


sub process_comment($) {
    my $block = shift;

    if ($block =~ /^\/\*\n \*-----+\n \*\n \* ([A-Za-z0-9:~_]+) --\s*\n \*\n \*\s+(.*?) \*\n \* Results:\n \*      \s*(.+?)\n \* Side effects:\n \*      \s*(.+?) \*\n \*------+\n \*\//s) {

        $name = $1;
        $summary = $2;
        $returns = $3;
        $sideeffects = $4;

        $summary =~ s/[\t ]+/ /gs;
        $summary =~ s/\s\*$//g;
        $returns =~ s/[\t ]+/ /gs;
        $returns =~ s/\s\*$//g;
        $sideeffects =~ s/[\t ]+/ /gs;
        $sideeffects =~ s/\s\*$//g;

        chomp $summary;
        chomp $returns;
        chomp $sideeffects;

        print "/**\n";
        print " * $summary\n";

        if ($returns !~ /^[Nn]one\.?/) {
            print " *\n";
            print " * \@return $returns\n";
        }

        if ($sideeffects !~ /^[Nn]one\.?/) {
            print " *\n";
            print " * \@sideeffects $sideeffects\n";
        }

        print " */\n";
    }
    else {
        print $block;
    }
}