diff options
author | Randy Dunlap <randy.dunlap@oracle.com> | 2007-05-08 03:29:51 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-05-08 14:15:10 -0400 |
commit | 3eb014a103701bedfaa11bc321f470e918c71ff7 (patch) | |
tree | 7b8c205b80d0f63874849ed4c27a0df49717c27c | |
parent | 3361c7bebbf207f57f3dd1282cd87e1e37c082ac (diff) |
kernel-doc: html mode struct highlights
Johannes Berg reported that struct names are not highlighted
(bold, italic, etc.) in html kernel-doc output. (Also not in
text-mode output, but I don't see that changing.)
This patch adds the following:
- highlight struct names in html output mode
- highlight environment var. names in html output mode
- indent struct fields in the original struct layout
Signed-off-by: Randy Dunlap <randy.dunlap@oracle.com>
Cc: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rwxr-xr-x | scripts/kernel-doc | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/scripts/kernel-doc b/scripts/kernel-doc index c47eb31d604c..a3e23b10ae97 100755 --- a/scripts/kernel-doc +++ b/scripts/kernel-doc | |||
@@ -159,7 +159,8 @@ my $warnings = 0; | |||
159 | my $type_constant = '\%([-_\w]+)'; | 159 | my $type_constant = '\%([-_\w]+)'; |
160 | my $type_func = '(\w+)\(\)'; | 160 | my $type_func = '(\w+)\(\)'; |
161 | my $type_param = '\@(\w+)'; | 161 | my $type_param = '\@(\w+)'; |
162 | my $type_struct = '\&((struct\s*)?[_\w]+)'; | 162 | my $type_struct = '\&((struct\s*)*[_\w]+)'; |
163 | my $type_struct_xml = '\\\amp;((struct\s*)*[_\w]+)'; | ||
163 | my $type_env = '(\$\w+)'; | 164 | my $type_env = '(\$\w+)'; |
164 | 165 | ||
165 | # Output conversion substitutions. | 166 | # Output conversion substitutions. |
@@ -168,7 +169,8 @@ my $type_env = '(\$\w+)'; | |||
168 | # these work fairly well | 169 | # these work fairly well |
169 | my %highlights_html = ( $type_constant, "<i>\$1</i>", | 170 | my %highlights_html = ( $type_constant, "<i>\$1</i>", |
170 | $type_func, "<b>\$1</b>", | 171 | $type_func, "<b>\$1</b>", |
171 | $type_struct, "<i>\$1</i>", | 172 | $type_struct_xml, "<i>\$1</i>", |
173 | $type_env, "<b><i>\$1</i></b>", | ||
172 | $type_param, "<tt><b>\$1</b></tt>" ); | 174 | $type_param, "<tt><b>\$1</b></tt>" ); |
173 | my $blankline_html = "<p>"; | 175 | my $blankline_html = "<p>"; |
174 | 176 | ||
@@ -331,7 +333,7 @@ while ($ARGV[0] =~ m/^-(.*)/) { | |||
331 | # using the s// operator. | 333 | # using the s// operator. |
332 | my $dohighlight = ""; | 334 | my $dohighlight = ""; |
333 | foreach my $pattern (keys %highlights) { | 335 | foreach my $pattern (keys %highlights) { |
334 | # print "scanning pattern $pattern ($highlights{$pattern})\n"; | 336 | # print STDERR "scanning pattern:$pattern, highlight:($highlights{$pattern})\n"; |
335 | $dohighlight .= "\$contents =~ s:$pattern:$highlights{$pattern}:gs;\n"; | 337 | $dohighlight .= "\$contents =~ s:$pattern:$highlights{$pattern}:gs;\n"; |
336 | } | 338 | } |
337 | 339 | ||
@@ -378,8 +380,14 @@ sub output_highlight { | |||
378 | # confess "output_highlight got called with no args?\n"; | 380 | # confess "output_highlight got called with no args?\n"; |
379 | # } | 381 | # } |
380 | 382 | ||
383 | # print STDERR "contents b4:$contents\n"; | ||
381 | eval $dohighlight; | 384 | eval $dohighlight; |
382 | die $@ if $@; | 385 | die $@ if $@; |
386 | if ($output_mode eq "html") { | ||
387 | $contents =~ s/\\\\//; | ||
388 | } | ||
389 | # print STDERR "contents af:$contents\n"; | ||
390 | |||
383 | foreach $line (split "\n", $contents) { | 391 | foreach $line (split "\n", $contents) { |
384 | if ($line eq ""){ | 392 | if ($line eq ""){ |
385 | print $lineprefix, $blankline; | 393 | print $lineprefix, $blankline; |
@@ -466,11 +474,12 @@ sub output_struct_html(%) { | |||
466 | $type = $args{'parametertypes'}{$parameter}; | 474 | $type = $args{'parametertypes'}{$parameter}; |
467 | if ($type =~ m/([^\(]*\(\*)\s*\)\s*\(([^\)]*)\)/) { | 475 | if ($type =~ m/([^\(]*\(\*)\s*\)\s*\(([^\)]*)\)/) { |
468 | # pointer-to-function | 476 | # pointer-to-function |
469 | print " <i>$1</i><b>$parameter</b>) <i>($2)</i>;<br>\n"; | 477 | print " <i>$1</i><b>$parameter</b>) <i>($2)</i>;<br>\n"; |
470 | } elsif ($type =~ m/^(.*?)\s*(:.*)/) { | 478 | } elsif ($type =~ m/^(.*?)\s*(:.*)/) { |
471 | print " <i>$1</i> <b>$parameter</b>$2;<br>\n"; | 479 | # bitfield |
480 | print " <i>$1</i> <b>$parameter</b>$2;<br>\n"; | ||
472 | } else { | 481 | } else { |
473 | print " <i>$type</i> <b>$parameter</b>;<br>\n"; | 482 | print " <i>$type</i> <b>$parameter</b>;<br>\n"; |
474 | } | 483 | } |
475 | } | 484 | } |
476 | print "};<br>\n"; | 485 | print "};<br>\n"; |