lkml.org 
[lkml]   [2020]   [Oct]   [30]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v2 04/39] scripts: get_abi.pl: improve its parser to better catch up indentation
    Date
    The original parser for indentation were relying on having
    just one description for each "what". However, that's not
    the case: there are a number of ABI symbols that got defined
    multiple times.

    Improve the parser for it to better handle descriptions
    if entries are duplicated.

    Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
    ---
    scripts/get_abi.pl | 42 +++++++++++++++++++-----------------------
    1 file changed, 19 insertions(+), 23 deletions(-)

    diff --git a/scripts/get_abi.pl b/scripts/get_abi.pl
    index 6a4d387ebf3b..bd018eb3815b 100755
    --- a/scripts/get_abi.pl
    +++ b/scripts/get_abi.pl
    @@ -147,17 +147,19 @@ sub parse_abi {
    parse_error($file, $ln, "'What:' should come first:", $_);
    next;
    }
    - if ($tag eq "description") {
    - # Preserve initial spaces for the first line
    + if ($new_tag eq "description") {
    + $sep =~ s,:, ,;
    $content = ' ' x length($new_tag) . $sep . $content;
    - $content =~ s,^(\s*):,$1 ,;
    - if ($content =~ m/^(\s*)(.*)$/) {
    + while ($content =~ s/\t+/' ' x (length($&) * 8 - length($`) % 8)/e) {}
    + if ($content =~ m/^(\s*)(\S.*)$/) {
    + # Preserve initial spaces for the first line
    $space = $1;
    - $content = $2;
    + $content = "$2\n";
    + $data{$what}->{$tag} .= $content;
    + } else {
    + undef($space);
    }
    - while ($space =~ s/\t+/' ' x (length($&) * 8 - length($`) % 8)/e) {}

    - $data{$what}->{$tag} .= "$content\n" if ($content);
    } else {
    $data{$what}->{$tag} = $content;
    }
    @@ -174,28 +176,22 @@ sub parse_abi {
    if ($tag eq "description") {
    my $content = $_;
    while ($content =~ s/\t+/' ' x (length($&) * 8 - length($`) % 8)/e) {}
    - if (!$data{$what}->{description}) {
    + if (m/^\s*\n/) {
    + $data{$what}->{$tag} .= "\n";
    + next;
    + }
    +
    + if (!defined($space)) {
    # Preserve initial spaces for the first line
    - if ($content =~ m/^(\s*)(.*)$/) {
    + if ($content =~ m/^(\s*)(\S.*)$/) {
    $space = $1;
    - $content = $2;
    + $content = "$2\n";
    }
    -
    - $data{$what}->{$tag} .= "$content\n" if ($content);
    } else {
    - if (m/^\s*\n/) {
    - $data{$what}->{$tag} .= $content;
    - next;
    - }
    -
    $space = "" if (!($content =~ s/^($space)//));
    -
    -# # Compress spaces with tabs
    -# $content =~ s<^ {8}> <\t>;
    -# $content =~ s<^ {1,7}\t> <\t>;
    -# $content =~ s< {1,7}\t> <\t>;
    - $data{$what}->{$tag} .= $content;
    }
    + $data{$what}->{$tag} .= $content;
    +
    next;
    }
    if (m/^\s*(.*)/) {
    --
    2.26.2
    \
     
     \ /
      Last update: 2020-10-30 08:44    [W:4.375 / U:0.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site