The R Project SVN R

Rev

Rev 10456 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 10456 Rev 10534
Line 2... Line 2...
2
 
2
 
3
## Usage: extract-usage Rdfile
3
## Usage: extract-usage Rdfile
4
 
4
 
5
use R::Rdtools;
5
use R::Rdtools;
6
 
6
 
7
my $text;
-
 
8
my $OSdir = "unix";
7
my $OSdir = "unix";
9
my $skipping = 0;
-
 
10
while(<>) {
-
 
11
    if (/^#ifdef\s+([A-Za-z0-9]+)/o) {
-
 
12
	if ($1 ne $OSdir) { $skipping = 1; }
-
 
13
	next;
-
 
14
    }
-
 
15
    if (/^#ifndef\s+([A-Za-z0-9]+)/o) {
-
 
16
	if ($1 eq $OSdir) { $skipping = 1; }
-
 
17
	next;
-
 
18
    }
-
 
19
    if (/^#endif/o) {
-
 
20
	$skipping = 0;
-
 
21
	next;
-
 
22
    }
-
 
23
    next if $skipping > 0;
-
 
24
    $text .= $_;
-
 
25
}
-
 
26
 
8
 
27
undef $/;
9
open INFILE, "< $ARGV[0]" || die "Can't open input file";
28
%usages = get_usages($text);
10
open OUTFILE, "> $ARGV[1]" || die "Can't open output file";
29
 
11
 
30
foreach $key (keys(%usages)){
12
while (<INFILE>) {
-
 
13
    chomp;
-
 
14
    open RDFILE, "< $_";
31
    $usages{$key} =~ s/ *\\.?dots/ .../g;
15
    print OUTFILE "# usages in file $_\n";
-
 
16
    my $text;
-
 
17
    my $skipping = 0;
32
    if ($key !~ /^</) {
18
    while(<RDFILE>) {
-
 
19
	if (/^#ifdef\s+([A-Za-z0-9]+)/o) {
-
 
20
	    if ($1 ne $OSdir) { $skipping = 1; }
-
 
21
	    next;
-
 
22
	}
-
 
23
	if (/^#ifndef\s+([A-Za-z0-9]+)/o) {
33
	print "$key <- function$usages{$key} NULL\n";
24
	    if ($1 eq $OSdir) { $skipping = 1; }
-
 
25
	    next;
-
 
26
	}
-
 
27
	if (/^#endif/o) {
-
 
28
	    $skipping = 0;
-
 
29
	    next;
-
 
30
	}
-
 
31
	next if $skipping > 0;
-
 
32
	$text .= $_;
34
    }
33
    }
35
}
-
 
36
 
34
 
-
 
35
    {
-
 
36
	local $/; # unset for get_usages
-
 
37
	%usages = get_usages($text);
-
 
38
    }
-
 
39
    
-
 
40
    foreach $key (keys(%usages)){
-
 
41
	$usages{$key} =~ s/ *\\.?dots/ .../g;
-
 
42
	if ($key !~ /^</) {
-
 
43
	    print OUTFILE "$key <- function$usages{$key} NULL\n";
-
 
44
	}
-
 
45
    }
-
 
46
    
37
print "\n";
47
    print OUTFILE "\n";
-
 
48
}