Changeset 11981
- Timestamp:
- 07/24/10 19:42:37 (19 months ago)
- File:
-
- 1 edited
-
trunk/tools/parse_wxwidgets_docs.pl (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/tools/parse_wxwidgets_docs.pl
r11962 r11981 10 10 use HTTP::Request (); 11 11 use Archive::Extract (); 12 use HTML::Parse qw(parse_html); 13 use HTML::FormatText (); 12 14 13 15 my $WX_WIGDETS_HTML_ZIP = 'wxWidgets-2.8.10-HTML.zip'; … … 25 27 print "Found " . @wxclasses . " Wx Classes to parse\n"; 26 28 27 # Step 4: Process all Wx classes gathering information 28 my $func = {}; 29 foreach my $wxclass (@wxclasses) { 30 my $file = File::Spec->join($wx_dir, $wxclass->{file}); 31 my $class = $wxclass->{class}; 32 print "Processing $class...\n"; 33 34 if(open my $fh, '<', $file) { 35 my $begin_block = 0; 36 my $buffer = ''; 37 my $name; 38 while(my $line = <$fh>) { 39 if($line =~ /<HR>/) { 40 $begin_block = 1; 41 $buffer = ''; 42 } elsif($begin_block && $line =~ /<H3>(.+?)<\/H3>/) { 43 $name = $1; 44 $name =~ s/wx(.+?)/Wx::$1/; 45 } elsif($line =~ /^\s*$/) { 46 $begin_block = 0; 47 if($name) { 48 $func->{$name} = $buffer; 49 } 50 $name = undef; 51 } else { 52 $buffer .= $line; 53 } 54 } 55 } 56 } 29 # Step 4: Write the final POD while processing all html files 30 write_pod($wx_dir, @wxclasses); 57 31 58 # Step 5: Write the final POD 59 my $pod_file = 'wxwidgets.pod'; 60 print "Writing $pod_file\n"; 61 if(open(my $fh, '>', 'wxwidgets.pod')) { 62 foreach my $name (keys %$func) { 63 my $desc = $func->{$name}; 64 print $fh "=head1 $name\n$desc\n\n"; 65 } 66 } else { 67 die "Couldnt write $pod_file\n"; 68 } 32 # and we're done 69 33 exit; 70 34 … … 131 95 my ($file, $class) = ($1, $2); 132 96 $class =~ s/wx(.+?)/Wx::$1/; 133 push @wxclasses, { "file" => $file, "class"=> $class };97 push @wxclasses, { file => $file, class => $class }; 134 98 } 135 99 } … … 139 103 140 104 return @wxclasses; 105 } 106 107 # 108 # Writes wxwidgets.pod... :) 109 # 110 sub write_pod { 111 my ($wx_dir, @wxclasses) = @_; 112 my $pod_file = 'wxwidgets.pod'; 113 print "Writing $pod_file\n"; 114 if(open(my $pod, '>', 'wxwidgets.pod')) { 115 my $oldclass; 116 foreach my $wxclass (@wxclasses) { 117 my $file = File::Spec->join($wx_dir, $wxclass->{file}); 118 my $class = $wxclass->{class}; 119 print "Processing $class...\n"; 120 121 if(open my $html_file, '<', $file) { 122 my $desc = ''; 123 my $name; 124 while(my $line = <$html_file>) { 125 if($line =~ /<H3>(.+?)<\/H3>/) { 126 $name = $1; 127 $name =~ s/wx(.+?)/Wx::$1/; 128 if($name =~ /^Wx::(.+?)::(.+?)$/) { 129 if($2 eq "wx$1") { 130 # C++ constructor... convert to Perl ::new 131 $name = "$class\:\:new" 132 } 133 } 134 $desc = ''; 135 } elsif($line =~ /^\s*$/) { 136 if($name) { 137 if(!$oldclass || $class ne $oldclass) { 138 # print out new class header 139 print $pod "=head1 $class\n\n"; 140 $oldclass = $class; 141 } 142 143 # print out method description 144 $desc = HTML::FormatText->new->format(parse_html($desc)); 145 print $pod "=head2 $name\n$desc\n"; 146 147 $name = undef; 148 } 149 } else { 150 $desc .= $line; 151 } 152 } 153 close $html_file; 154 } 155 } 156 close $pod; 157 } else { 158 die "Couldnt write $pod_file\n"; 159 } 160 141 161 } 142 162
Note: See TracChangeset
for help on using the changeset viewer.
