opycaml / classes.pl

#!/usr/bin/perl

while(<>){
    if( /^type\s+_([A-Z][A-Za-z]+)\s*=/ ){
	$cls = $1;
	if( !$done{$cls} ){
	    print STDERR "CLASS: $cls\n";
	    $done{$cls} = 1;
	}
	$_ = $';
    }
}

$str="";
open(IN, "classes.h.in");
while(<IN>){
    $str = "$str$_";
}
open(OUT, "> autoclasses.h");
for $cls (keys %done) {
    if( $cls ne "Object" ){ $cls = $cls . "Object"; }
    $mystr = $str;
    $mystr =~ s/##name##/$cls/g;
    print OUT $mystr;
}
close OUT;

$str="";
open(IN, "classes.idl.in");
while(<IN>){
    $str = "$str$_";
}
open(OUT, "> autoclasses.idl");
for $cls (keys %done) {
    if( $cls ne "Object" ){ $cls = $cls . "Object"; }
    $mystr = $str;
    $mystr =~ s/##name##/$cls/g;
    print OUT $mystr;
}
close OUT;
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.