5 $Data::Dumper::Pair = ": ";
6 $Data::Dumper::Sortkeys = 1;
7 $Data::Dumper::Terse = 1;
9 open( F, $ARGV[0] || "../jquery-svn.js" );
10 my $f = join('', <F>);
15 while ( $f =~ /\/\*\*\s*(.*?)\s*\*\//gs ) {
21 $ret{ 'params' } = [];
22 $ret{ 'examples' } = [];
24 #while ( $c =~ s/^\@(\S+)\s*<pre>(.*?)<\/pre>\n//ms ) {
25 #print "PARAM '$1' '$2'\n";
27 while ( $c =~ s/^\@(\S+) *(.*?)(?=\n\@|!!!)//ms ) {
33 $v =~ s/(\s\s+)/" " x length($1)/eg;
37 $v = 1 if ( $v eq '' );
39 if ( $n eq 'param' ) {
40 my ( $type, $name, @v ) = split( /\s+/, $v );
41 $v = { "type" => $type, "name" => $name, "desc" => join(' ', @v) };
43 } elsif ( $n eq 'example' ) {
44 $v = { "code" => $v };
48 if ( $n eq 'desc' || $n eq 'before' || $n eq 'after' || $n eq 'result' ) {
49 my @e = @{$ret{'examples'}};
53 if ( exists $ret{ $n } ) {
54 if ( ref $ret{ $n } eq 'ARRAY' ) {
55 push( @{$ret{ $n }}, $v );
57 $ret{ $n } = [ $ret{ $n }, $v ];
67 $c =~ s/\n\n/<br><br>/g;
72 if ( $c =~ /^(.*?(\.|$))/s ) {
74 #$ret{ 'short' } =~ s/<br>/ /g;
77 #print "###\n" . $c . "\n###\n";
79 if ( exists $ret{ 'name' } ) {
84 open( F, ">" . ($ARGV[1] || "jquery-docs-json.js") );
85 print F Dumper( \@c );
88 $Data::Dumper::Indent = 0;
90 open( F, ">" . ($ARGV[2] || "jquery-docs-jsonp.js") );
91 print F "docsLoaded(" . Dumper( \@c ) . ")";