@ARGV==1 or die;
my $base = $ARGV[0];
$base =~ m/^\-/ and die;
-open F, "$base.scad" or die $!;
+open F, "$base.scad" or die "$base.scad $!";
while (<F>) {
- next unless m#^\s*module\s+(\w+)\b.*////toplevel\b#;
- print "$base,$1\n" or die $!;
+ if (m#^//// toplevels-from:#) {
+ defined($_ = <F>) or die $!;
+ m#^include\s+\<(\S+)>\s*$# or die;
+ open F, "$1" or die "$1 $!";
+ next;
+ }
+ next unless m#^\s*(?:////\s?)?module\s+(\w+)\b.*////toplevel\b#;
+ print "$base,$1\n" or die $!;
}
close F or die $!;
close STDOUT or die $!;