-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpdayuda-archivo
executable file
·69 lines (57 loc) · 1.58 KB
/
pdayuda-archivo
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
#!/usr/bin/perl -w
if($#ARGV < 1) {
print "pdayuda-archivo - Extrae ayuda de un archivo en PseudoD\n";
print "Uso:\n";
print "\n";
print " pdayuda-archivo [archivo.pseudo] [objeto a buscar]\n";
print "\n";
print "Es recomendable utilizar algun paginador en la salida.\n";
print "\npdayuda-archivo Pertenece a la suite de documentación PDHelpExtracter\n";
print "véa más en https://github.com/alinarezrangel/pdhelpextracter\n";
exit(1);
}
sub searchObjectInFile {
$fname = $_[0];
$tosearch = $_[1];
open(FILE, $fname) or die("Unable to open $fname");
$printall = 0;
$text = "";
$result = "";
$filedoc = 0;
$filestr = "";
while(<FILE>) {
$printall = 1 if($printall == 2);
$printall = 3 if(/^( \t\r\n)*(clase|estructura|funcion|metodo|procedimiento|adquirir|puntero|instancia)/ && $printall == 4);
$printall = 2 if(/^( \t\r\n)*\[DOCUMENTA( \t\r\n)*$/);
$printall = 4 if(/^( \t\r\n)*DOCUMENTA\]( \t\r\n)*$/);
$printall = 3 if(/^( \t\r\n)*DOCUMENTA\]( \t\r\n)*$/ && $filedoc == 1);
if(/^( \t\r\n)*\@file/) {
$filedoc = 1;
$filestr = $_;
}
if($printall == 1) {
$text = "$text $_";
}
if($printall == 3) {
if($filedoc == 1) {
if(index($filestr, $tosearch) != -1) {
$result = "$result\n\n$text";
}
} else {
if(index($_, $tosearch) != -1) {
$result = "$result\n\n$text\n$_";
}
}
$text = "";
$printall = 0;
$filedoc = 0;
}
}
close FILE;
return $result;
}
$rs = searchObjectInFile($ARGV[0], $ARGV[1]);
print "En el archivo $ARGV[0]\n" if($rs ne "");
print "\n" if ($rs ne "");
print $rs;
print "\n\n" if($rs ne "");