Re: [PATCH] scripts/kernel-doc: Improve Markdown results

Graham Whaley
2015-08-24T14:34:40Z

On Fri, 2015-08-21 at 16:39 -0300, Danilo Cesar Lemes de Paula wrote:
> Using pandoc as the Markdown engine cause some minor side effects as
> pandoc includes main tags for almost everything.
> Original Markdown support approach removes those main tags, but it
> caused
> some inconsistencies when that tag is not the main one, like:
> <something>..</something>
> ...
>
> As kernel-doc was already including a tag, it causes the
> presence
> of double tags ( ), which is not supported by
> DocBook
> spec.
>
> Html target gets away with it, so it causes no harm, although other
> targets might not be so lucky (pdf as example).
>
> We're now delegating the inclusion of the main tag to pandoc
> only, as it knows when it's necessary or not.
>
> That behavior causes a corner case, the only situation where we're
> certainly that is not needed, which is the <refpurpose>
> content.
> For those cases, we're using a $output_markdown_nopara = 1 control
> var.
>
> Signed-off-by: Danilo Cesar Lemes de Paula <

Feel free to add my:
Tested-by: Graham Whaley <graham.whaley@linux.intel.com>

Graham
> danilo.cesar@collabora.co.uk>
> Cc: Randy Dunlap <rdunlap@infradead.org>
> Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
> Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> Cc: Jonathan Corbet <corbet@lwn.net>
> Cc: Herbert Xu <herbert@gondor.apana.org.au>
> Cc: Stephan Mueller <smueller@chronox.de>
> Cc: Michal Marek <mmarek@suse.cz>
> Cc: linux-kernel@vger.kernel.org
> Cc: linux-doc@vger.kernel.org
> Cc: intel-gfx <intel-gfx@lists.freedesktop.org>
> Cc: dri-devel <dri-devel@lists.freedesktop.org>
> Cc: Graham Whaley <graham.whaley@linux.intel.com>
> ---
> Thanks to Graham Whaley who helped me to debug this.
>
> scripts/kernel-doc | 48 ++++++++++++++++++++++++++++++++++----------
> ----
> 1 file changed, 34 insertions(+), 14 deletions(-)
>
> diff --git a/scripts/kernel-doc b/scripts/kernel-doc
> index 3850c1e..12a106c 100755
> --- a/scripts/kernel-doc
> +++ b/scripts/kernel-doc
> @@ -288,6 +288,7 @@ my $use_markdown = 0;
> my $verbose = 0;
> my $output_mode = "man";
> my $output_preformatted = 0;
> +my $output_markdown_nopara = 0;
> my $no_doc_sections = 0;
> my @highlights = @highlights_man;
> my $blankline = $blankline_man;
> @@ -529,8 +530,11 @@ sub markdown_to_docbook {
> close(CHLD_OUT);
> close(CHLD_ERR);
>
> - # pandoc insists in adding Main , we should
> remove them.
> - $content =~ s:\A\s* \s*\n(.*)\n \Z$:$1:egsm;
> + if ($output_markdown_nopara) {
> + # pandoc insists in adding Main ,
> sometimes we
> + # want to remove them.
> + $content =~
> s:\A\s* \s*\n(.*)\n \Z$:$1:egsm;
> + }
>
> return $content;
> }
> @@ -605,7 +609,7 @@ sub output_highlight {
> $line =~ s/^\s*//;
> }
> if ($line eq ""){
> - if (! $output_preformatted) {
> + if (! $output_preformatted && ! $use_markdown) {
> print $lineprefix, local_unescape($blankline);
> }
> } else {
> @@ -1026,7 +1030,7 @@ sub output_section_xml(%) {
> # programlisting is already included by pandoc
> print "<programlisting>\n" unless $use_markdown;
> $output_preformatted = 1;
> - } else {
> + } elsif (! $use_markdown) {
> print " \n";
> }
> output_highlight($args{'sections'}{$section});
> @@ -1034,7 +1038,7 @@ sub output_section_xml(%) {
> if ($section =~ m/EXAMPLE/i) {
> print "</programlisting>\n" unless $use_markdown;
> print "</informalexample>\n";
> - } else {
> + } elsif (! $use_markdown) {
> print " \n";
> }
> print "</refsect1>\n";
> @@ -1066,7 +1070,9 @@ sub output_function_xml(%) {
> print " <refname>" . $args{'function'} . "</refname>\n";
> print " <refpurpose>\n";
> print " ";
> + $output_markdown_nopara = 1;
> output_highlight ($args{'purpose'});
> + $output_markdown_nopara = 0;
> print " </refpurpose>\n";
> print "</refnamediv>\n";
>
> @@ -1104,10 +1110,12 @@ sub output_function_xml(%) {
> $parameter_name =~ s/\[.*//;
>
> print " <varlistentry>\n
> <term><parameter>$parameter</parameter></term>\n";
> - print " \n \n";
> + print " \n";
> + print " \n" unless $use_markdown;
> $lineprefix=" ";
>
> output_highlight($args{'parameterdescs'}{$parameter_name});
> - print " \n \n
> </varlistentry>\n";
> + print " \n" unless $use_markdown;
> + print " \n </varlistentry>\n";
> }
> print " </variablelist>\n";
> } else {
> @@ -1143,7 +1151,9 @@ sub output_struct_xml(%) {
> print " <refname>" . $args{'type'} . " " . $args{'struct'} .
> "</refname>\n";
> print " <refpurpose>\n";
> print " ";
> + $output_markdown_nopara = 1;
> output_highlight ($args{'purpose'});
> + $output_markdown_nopara = 0;
> print " </refpurpose>\n";
> print "</refnamediv>\n";
>
> @@ -1196,9 +1206,11 @@ sub output_struct_xml(%) {
> ($args{'parameterdescs'}{$parameter_name} ne $undescribed) ||
> next;
> print " <varlistentry>";
> print " <term>$parameter</term>\n";
> - print " \n";
> + print " \n";
> + print " \n" unless $use_markdown;
> output_highlight($args{'parameterdescs'}{$parameter_name});
> - print " \n";
> + print " \n" unless $use_markdown;
> + print " \n";
> print " </varlistentry>\n";
> }
> print " </variablelist>\n";
> @@ -1237,7 +1249,9 @@ sub output_enum_xml(%) {
> print " <refname>enum " . $args{'enum'} . "</refname>\n";
> print " <refpurpose>\n";
> print " ";
> + $output_markdown_nopara = 1;
> output_highlight ($args{'purpose'});
> + $output_markdown_nopara = 0;
> print " </refpurpose>\n";
> print "</refnamediv>\n";
>
> @@ -1267,9 +1281,11 @@ sub output_enum_xml(%) {
>
> print " <varlistentry>";
> print " <term>$parameter</term>\n";
> - print " \n";
> + print " \n";
> + print " \n" unless $use_markdown;
> output_highlight($args{'parameterdescs'}{$parameter_name});
> - print " \n";
> + print " \n" unless $use_markdown;
> + print " \n";
> print " </varlistentry>\n";
> }
> print " </variablelist>\n";
> @@ -1335,14 +1351,14 @@ sub output_blockhead_xml(%) {
> if ($section =~ m/EXAMPLE/i) {
> print "<example> \n";
> $output_preformatted = 1;
> - } else {
> + } elsif (! $use_markdown) {
> print " \n";
> }
> output_highlight($args{'sections'}{$section});
> $output_preformatted = 0;
> if ($section =~ m/EXAMPLE/i) {
> print " </example>\n";
> - } else {
> + } elsif (! $use_markdown) {
> print " ";
> }
> if (!$args{'content-only'}) {
> @@ -2684,7 +2700,11 @@ sub process_file($) {
> {
> if ( $1 eq "" )
> {
> - $contents .= $blankline;
> + if ($use_markdown) {
> + $contents .= "\n";
> + } else {
> + $contents .= $blankline;
> + }
> }
> else
> {
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org