Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754788AbbHXOes (ORCPT ); Mon, 24 Aug 2015 10:34:48 -0400 Received: from mga02.intel.com ([134.134.136.20]:9119 "EHLO mga02.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753594AbbHXOeq (ORCPT ); Mon, 24 Aug 2015 10:34:46 -0400 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.15,738,1432623600"; d="scan'208";a="789910412" Message-ID: <1440426880.11872.2.camel@linux.intel.com> Subject: Re: [PATCH] scripts/kernel-doc: Improve Markdown results From: Graham Whaley To: Danilo Cesar Lemes de Paula , Daniel Vetter , dri-devel Cc: Randy Dunlap , Laurent Pinchart , Jonathan Corbet , Herbert Xu , Stephan Mueller , Michal Marek , linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org, intel-gfx Date: Mon, 24 Aug 2015 15:34:40 +0100 In-Reply-To: <1440185942-31030-1-git-send-email-danilo.cesar@collabora.co.uk> References: <1440185942-31030-1-git-send-email-danilo.cesar@collabora.co.uk> Organization: Intel OTC Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.16.5 (3.16.5-1.fc22) Mime-Version: 1.0 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 7611 Lines: 223 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: > .. > ... > > 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 > 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 > danilo.cesar@collabora.co.uk> > Cc: Randy Dunlap > Cc: Daniel Vetter > Cc: Laurent Pinchart > Cc: Jonathan Corbet > Cc: Herbert Xu > Cc: Stephan Mueller > Cc: Michal Marek > Cc: linux-kernel@vger.kernel.org > Cc: linux-doc@vger.kernel.org > Cc: intel-gfx > Cc: dri-devel > Cc: Graham Whaley > --- > 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 "\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 "\n" unless $use_markdown; > print "\n"; > - } else { > + } elsif (! $use_markdown) { > print "\n"; > } > print "\n"; > @@ -1066,7 +1070,9 @@ sub output_function_xml(%) { > print " " . $args{'function'} . "\n"; > print " \n"; > print " "; > + $output_markdown_nopara = 1; > output_highlight ($args{'purpose'}); > + $output_markdown_nopara = 0; > print " \n"; > print "\n"; > > @@ -1104,10 +1110,12 @@ sub output_function_xml(%) { > $parameter_name =~ s/\[.*//; > > print " \n > $parameter\n"; > - print " \n \n"; > + print " \n"; > + print " \n" unless $use_markdown; > $lineprefix=" "; > > output_highlight($args{'parameterdescs'}{$parameter_name}); > - print " \n \n > \n"; > + print " \n" unless $use_markdown; > + print " \n \n"; > } > print " \n"; > } else { > @@ -1143,7 +1151,9 @@ sub output_struct_xml(%) { > print " " . $args{'type'} . " " . $args{'struct'} . > "\n"; > print " \n"; > print " "; > + $output_markdown_nopara = 1; > output_highlight ($args{'purpose'}); > + $output_markdown_nopara = 0; > print " \n"; > print "\n"; > > @@ -1196,9 +1206,11 @@ sub output_struct_xml(%) { > ($args{'parameterdescs'}{$parameter_name} ne $undescribed) || > next; > print " "; > print " $parameter\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 " \n"; > } > print " \n"; > @@ -1237,7 +1249,9 @@ sub output_enum_xml(%) { > print " enum " . $args{'enum'} . "\n"; > print " \n"; > print " "; > + $output_markdown_nopara = 1; > output_highlight ($args{'purpose'}); > + $output_markdown_nopara = 0; > print " \n"; > print "\n"; > > @@ -1267,9 +1281,11 @@ sub output_enum_xml(%) { > > print " "; > print " $parameter\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 " \n"; > } > print " \n"; > @@ -1335,14 +1351,14 @@ sub output_blockhead_xml(%) { > if ($section =~ m/EXAMPLE/i) { > print "\n"; > $output_preformatted = 1; > - } else { > + } elsif (! $use_markdown) { > print "\n"; > } > output_highlight($args{'sections'}{$section}); > $output_preformatted = 0; > if ($section =~ m/EXAMPLE/i) { > print "\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 > { -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/