]> mj.ucw.cz Git - libucw.git/commitdiff
Documentation system: Structures are input verbatim.
authorMichal Vaner <vorner@ucw.cz>
Fri, 1 Aug 2008 16:52:20 +0000 (18:52 +0200)
committerMartin Mares <mj@ucw.cz>
Mon, 25 Aug 2008 21:36:38 +0000 (23:36 +0200)
build/extract-doc.pl

index dca2e53deef6fc536b37f1abc20c5f82112d23fb..421e1d3688a6e27611e37b963cf64bc59e7e5f5c 100755 (executable)
@@ -21,6 +21,17 @@ if( defined $depname ) {
 
 print DEP "$outname:" if( $hasdep );
 
+sub formatNote( $$ ) {
+        my( $head, $comment ) = @_;
+       $head =~ s/[\t ]+/ /g;
+       print OUT "\n";
+        print OUT "''''\n";
+       print OUT "..................\n";
+        print OUT "$head\n";
+        print OUT "..................\n\n";
+        print OUT "$comment\n";
+}
+
 sub process( $ ) {
        my $file = shift;
        open FILE, $file or die "Could nod read $file ($!)\n";
@@ -29,11 +40,18 @@ sub process( $ ) {
        my $verbatim;
        my $buff;
        my $head;
-       my $levelMark = '-';
-       my $markDepth;
+       my $struct;
        while( defined( $line = <FILE> ) ) {
                chomp $line;
-               if( $verbatim ) {
+               if( $struct ) {
+                       $head .= "\n".$line;
+                       if( $line =~ /}/ ) {
+                               formatNote( $head, $buff );
+                               $struct = 0;
+                               $buff = undef;
+                               $head = undef;
+                       }
+               } elsif( $verbatim ) {
                        if( $line =~ /\*\// ) {
                                $verbatim = 0;
                        } else {
@@ -50,34 +68,32 @@ sub process( $ ) {
                        }
                } else {
                        if( ( $line =~ /\S/ ) && ( defined $buff ) ) {
-                               chomp $line;
-                               $line =~ s/^\s*//;
-                               $line =~ s/\/\/.*//;
-                               $head .= "\n$line";
-                               if( $head =~ /[;{]/ ) {
+                               if( $line =~ /\(/ || $line !~ /{/ ) {
+                                       $_ = $line;
+                                       s/^\s*\s?//;
+                                       s/\/\/.*//;
+                                       s/\/\*.*?\*\///gs;
+                                       s/[;{].*//;
+                                       formatNote( $_, $buff );
+                                       $head = undef;
+                                       $buff = undef;
+                               } else {
+                                       $head = $line;
+                                       $struct = 1;
+                               }
+                       } elsif( ( $head, $buff ) = ( $line =~ /^(.*)\/\*\*(.*)\*\*\// ) ) {
+                               $buff =~ s/^\s*//;
+                               $buff =~ s/\s*$//;
+                               if( $head =~ /\(/ || $head !~ /{/ ) {
+                                       $head =~ s/^\s*//;
                                        $head =~ s/\/\*.*?\*\///gs;
-                                       $head =~ s/\s+/ /g;
                                        $head =~ s/([;{]).*/$1/;
-                                       print OUT $levelMark." + +++$head+++ +\n+\n$buff\n";
-                                       if( $head =~ /\{/ ) {
-                                               $levelMark = '*' unless( $markDepth ++ );
-                                       }
+                                       formatNote( $head, $buff );
                                        $head = undef;
                                        $buff = undef;
+                               } else {
+                                       $struct = 1;
                                }
-                       } elsif( my( $head, $comment ) = ( $line =~ /^(.*)\/\*\*(.*)\*\*\// ) ) {
-                               $head =~ s/^\s*//;
-                               $head =~ s/\/\*.*?\*\///gs;
-                               $head =~ s/\s+/ /g;
-                               $head =~ s/([;{]).*/$1/;
-                               $comment =~ s/^\s*//;
-                               $comment =~ s/\s*$//;
-                               print OUT $levelMark." + +++$head+++ +\n+\n$comment\n\n";
-                               if( $head =~ /\{/ ) {
-                                       $levelMark = '*' unless( $markDepth ++ );
-                               }
-                       } elsif( $line =~ /\}/ && $markDepth ) {
-                               $levelMark = '-' unless( -- $markDepth );
                        } elsif( $line =~ /\/\*\*\*/ ) {
                                $verbatim = 1;
                        } elsif( $line =~ /\/\*\*/ ) {