From 3009d26665a9c59968b50da35e839f06f273ff83 Mon Sep 17 00:00:00 2001 From: EuAndreh Date: Wed, 16 Apr 2025 15:48:33 -0300 Subject: src/adoc: New "add_linenums()" step --- src/adoc | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) diff --git a/src/adoc b/src/adoc index 5014409..9792eec 100755 --- a/src/adoc +++ b/src/adoc @@ -50,6 +50,60 @@ fix_header_anchor_position() { sed 's|^\(

\)\(.*\)\(

\)$|\1\3\2\4|' } +add_linenums() { + awk -F'>' ' + /^
]*>/ {
+		line1cnt = 0
+		for (i = 1; i < NF + 1; i++) {
+			line1[line1cnt++] = $i
+		}
+		lines = 0
+		alllines[lines++] = $0
+		next
+	}
+	lines > 0 && /<\/code><\/pre>$/ {
+		BLOCK_N++
+		printf "%s>%s>", line1[0], line1[1]
+		printf "
"
+		for (i = 1; i < lines + 2; i++) {
+			if (i > 1) {
+				printf "\n"
+			}
+			ID = "B" BLOCK_N "-L" i
+			class = "class=\"code-line-anchor\""
+			printf "%s", \
+				class,
+				ID,
+				ID,
+				i
+		}
+		printf "
"
+		for (i = 2; i < line1cnt; i++) {
+			printf "%s", line1[i]
+			if (i < line1cnt - 1) {
+				printf ">"
+			}
+		}
+		printf "\n"
+
+		for (i = 1; i < lines; i++) {
+			print alllines[i]
+		}
+
+		PAT = "
" + printf "%s", substr($0, 1, length($0) - length(PAT)) + printf "
\n" + lines = 0 + next + } + lines > 0 { + alllines[lines++] = $0 + next + } + { print } + ' +} + runtidy() { statusconv 1:0 tidy \ -quiet \ @@ -62,6 +116,7 @@ runtidy() { } indent_4_blocks() { + # 4 as in + +
+
printf '
%s
' "$(cat -)" | runtidy | head -n -4 | @@ -82,4 +137,5 @@ cat "$FILENAME" | plaintext_links | runadoc | fix_header_anchor_position | + add_linenums | indent_4_blocks -- cgit v1.2.3