[Gambas-user] another reason I love Gambas
Rob
sourceforge-raindog2 at ...94...
Fri Jun 6 19:35:16 CEST 2003
I just added all the documentation for all of the component class members to
the wiki in about 10 minutes by hacking the Gambas IDE source to do most of
the work for me ;)
In the FExplorer class I added
PUBLIC avc AS File
to the beginning and
TRY KILL "/tmp/gambasdoc/" & aKey[1] & "." & akey[2] & ".txt"
TRY OPEN "/tmp/gambasdoc/" & aKey[1] & "." & akey[2] & ".txt" FOR CREATE AS
#avc
TRY PRINT #avc, "<TABLE CELLPADDING=4 CELLSPACING=0 BORDER=0 BGCOLOR=#C0C0C0
WIDTH=100%><TR><TD>" & sTitle & "</TD></TR></TABLE><BR>" & sDesc
TRY CLOSE #avc
to the end of the RefreshInfo sub in that class. Then I hit F5, loaded a
random project I had laying around, hit F2, and cursored through the entire
list of component classes while it dumped HTML files for each class member to
a directory in /tmp. I paused after each component to move them into a
subdirectory and when I was done, ran the following Perl script to integrate
them with the class documentation I'd already extracted and wikify the lot (I
would have used Gambas again but I don't know how to do regular expressions
in Gambas ;) ):
#!/usr/bin/perl
for $f (`find`) {
next if $f =~ m|/children/|;
next if $f =~ m|/classes/|;
next unless $f =~ /\.txt$/;
chomp $f;
$g = `cat $f`;
$basename = $f;
$basename =~ s/.txt$//;
# convert filenames to wiki words
$f =~ s/\//-/g;
$f =~ s/^\.-//;
$f =~ s/\[\]/Array/;
$f =~ s/^gb-/GambasComponentGb/;
$f =~ s/^gb.eval-/GambasComponentEval/;
$f =~ s/^gb.db-/GambasComponentDb/;
$f =~ s/^gb.qt-/GambasComponentQt/;
$f =~ s/^gb.qt.ext-/GambasComponentQtExt/;
$f =~ s/^gb.qt.kde-/GambasComponentQtKde/;
$f =~ s/^gb.qt.editor-/GambasComponentQtEditor/;
$f =~ s/\.//g;
$f =~ s/txt$/.txt/;
# convert HTML content to wiki text
$g .= `cat children/$basename* 2>/dev/null`;
$g =~ s/<i>\s*(.+?)\s*<\/i>/ _$1\_ /gi;
$g =~ s/<b>\s*(.+?)\s*<\/b>/ \*$1\* /gi;
$g =~ s/<h1>\s*(.+?)\s*<\/h1>/\n---+$1/is;
$g =~ s/<h1>\s*(.+?)\s*<\/h1>/\n---++<nop>$1/gis;
$g =~ s/<h2>\s*(.+?)\s*<\/h2>/\n---++<nop>$1/gsi;
$g =~ s/<br>/\n/gsi;
$g =~ s|/usr/lib/control|/gambas-wiki/images|gis;
$g =~ s|<IMG SRC="img/16/finger.png">|\n * |gis;
$g =~ s/<\/?table.*?>/\n/gis;
$g =~ s/<\/?font.*?>//gis;
$g =~ s/<\/?tr.*?>/\n/gis;
$g =~ s/<\/?td.*?>/\n/gis;
$g =~ s/<p.*?>/\n\n/gis;
$g =~ s/<h3>\n/\n/gis;
$g =~ s/<h3>\s*(.+?)\s*<\/h3>/\n---+++<nop>$1/gi;
$g =~ s/\n\n+/\n\n/gis;
$g =~ s/^\n+//gis;
$g =~ s/<\/h3>//gis;
open OUT, ">fixed/$f";
print OUT $g;
close OUT;
print "$f\n";
}
And finally I scp'ed the whole thing up to the wiki. So now we have a
searchable, easily updated reference to all the component class members in
the same format as the rest of the language.
Try doing that in VB!
Rob
More information about the User
mailing list