[PATCH v2 5/7] scripts: get_abi.pl: parse description line per line

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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@xxxxxxxxxx>
---
 scripts/get_abi.pl | 47 ++++++++++++++++++++++++++--------------------
 1 file changed, 27 insertions(+), 20 deletions(-)

diff --git a/scripts/get_abi.pl b/scripts/get_abi.pl
index eb1a23103afa..e5d1da492c1e 100755
--- a/scripts/get_abi.pl
+++ b/scripts/get_abi.pl
@@ -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;
-				}
+					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;
+					}
 
-				# Seek for cross reference symbols like /sys/...
-				@matches = $desc =~ m/$xref_match/g;
+					# 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;
+					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} . ">`";
+							$xref =~ s/$symbols/\\$1/g;
+							$xref = ":ref:`$xref <" . $data{$s}->{label} . ">`";
 
-						$desc =~ s,$start$s$bondary,$1$xref$2,g;
+							$d =~ s,$start$s$bondary,$1$xref$2,g;
+						}
 					}
+					$new_desc .= $d;
 				}
+				close $fh;
+
 
-				print "$desc\n\n";
+				print "$new_desc\n\n";
 			} else {
 				$desc =~ s/^\s+//;
 
-- 
2.30.2




[Index of Archives]     [Kernel Newbies]     [Security]     [Netfilter]     [Bugtraq]     [Linux FS]     [Yosemite Forum]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]     [Linux Resources]

  Powered by Linux