scripts: get_abi.pl: parse description line per line

Change the description parsing logic in rst mode in order
to parse it line per line.

The end result is the same, but doing line per line allows
to add some code to escape literal blocks when seeking for
cross-references.

Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
Link: https://lore.kernel.org/r/d33cfa2e59ecf8f28d4ed7de7402468cf2168921.1616668017.git.mchehab+huawei@kernel.org
Signed-off-by: Jonathan Corbet <corbet@lwn.net>
This commit is contained in:
Mauro Carvalho Chehab 2021-03-25 11:38:26 +01:00 коммит произвёл Jonathan Corbet
Родитель 87ec9ea1fc
Коммит c27c2e3441
1 изменённых файлов: 32 добавлений и 25 удалений

Просмотреть файл

@ -381,34 +381,41 @@ sub output_rest {
# Enrich text by creating cross-references
$desc =~ s,Documentation/(?!devicetree)(\S+)\.rst,:doc:`/$1`,g;
my $new_desc = "";
open(my $fh, "+<", \$desc);
while (my $d = <$fh>) {
$d =~ s,Documentation/(?!devicetree)(\S+)\.rst,:doc:`/$1`,g;
my @matches = $desc =~ m,Documentation/ABI/([\w\/\-]+),g;
foreach my $f (@matches) {
my $xref = $f;
my $path = $f;
$path =~ s,.*/(.*/.*),$1,;;
$path =~ s,[/\-],_,g;;
$xref .= " <abi_file_" . $path . ">";
$desc =~ s,\bDocumentation/ABI/$f\b,:ref:`$xref`,g;
}
# Seek for cross reference symbols like /sys/...
@matches = $desc =~ m/$xref_match/g;
foreach my $s (@matches) {
next if (!($s =~ m,/,));
if (defined($data{$s}) && defined($data{$s}->{label})) {
my $xref = $s;
$xref =~ s/$symbols/\\$1/g;
$xref = ":ref:`$xref <" . $data{$s}->{label} . ">`";
$desc =~ s,$start$s$bondary,$1$xref$2,g;
my @matches = $d =~ m,Documentation/ABI/([\w\/\-]+),g;
foreach my $f (@matches) {
my $xref = $f;
my $path = $f;
$path =~ s,.*/(.*/.*),$1,;;
$path =~ s,[/\-],_,g;;
$xref .= " <abi_file_" . $path . ">";
$d =~ s,\bDocumentation/ABI/$f\b,:ref:`$xref`,g;
}
}
print "$desc\n\n";
# Seek for cross reference symbols like /sys/...
@matches = $d =~ m/$xref_match/g;
foreach my $s (@matches) {
next if (!($s =~ m,/,));
if (defined($data{$s}) && defined($data{$s}->{label})) {
my $xref = $s;
$xref =~ s/$symbols/\\$1/g;
$xref = ":ref:`$xref <" . $data{$s}->{label} . ">`";
$d =~ s,$start$s$bondary,$1$xref$2,g;
}
}
$new_desc .= $d;
}
close $fh;
print "$new_desc\n\n";
} else {
$desc =~ s/^\s+//;