summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEuAndreh <eu@euandre.org>2025-04-16 15:48:33 -0300
committerEuAndreh <eu@euandre.org>2025-04-16 15:48:33 -0300
commit3009d26665a9c59968b50da35e839f06f273ff83 (patch)
tree214239e3da181aaeef6f668044f7933ace343614
parentsrc/adoc: Set "-" as header ID separator (diff)
downloadadoc-3009d26665a9c59968b50da35e839f06f273ff83.tar.gz
adoc-3009d26665a9c59968b50da35e839f06f273ff83.tar.xz
src/adoc: New "add_linenums()" step
-rwxr-xr-xsrc/adoc56
1 files changed, 56 insertions, 0 deletions
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|^\(<h2 .*\)\(<a .*</a>\)\(.*\)\(</h2>\)$|\1\3\2\4|'
}
+add_linenums() {
+ awk -F'>' '
+ /^<pre class="highlight"><code [^>]*>/ {
+ 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 "<table><tbody><tr><td><pre class=\"lineno\">"
+ for (i = 1; i < lines + 2; i++) {
+ if (i > 1) {
+ printf "\n"
+ }
+ ID = "B" BLOCK_N "-L" i
+ class = "class=\"code-line-anchor\""
+ printf "<a %s id=\"%s\" href=\"#%s\">%s</a>", \
+ class,
+ ID,
+ ID,
+ i
+ }
+ printf "</pre></td><td><pre>"
+ 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 = "</code></pre>"
+ printf "%s", substr($0, 1, length($0) - length(PAT))
+ printf "</pre></td></tr></tbody></table></code></pre>\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 <html> + <body> + <main> + <article>
printf '<div><div><div><div>%s</div></div></div></div>' "$(cat -)" |
runtidy |
head -n -4 |
@@ -82,4 +137,5 @@ cat "$FILENAME" |
plaintext_links |
runadoc |
fix_header_anchor_position |
+ add_linenums |
indent_4_blocks