diff options
author | EuAndreh <eu@euandre.org> | 2025-04-16 15:48:33 -0300 |
---|---|---|
committer | EuAndreh <eu@euandre.org> | 2025-04-16 15:48:33 -0300 |
commit | 3009d26665a9c59968b50da35e839f06f273ff83 (patch) | |
tree | 214239e3da181aaeef6f668044f7933ace343614 | |
parent | src/adoc: Set "-" as header ID separator (diff) | |
download | adoc-3009d26665a9c59968b50da35e839f06f273ff83.tar.gz adoc-3009d26665a9c59968b50da35e839f06f273ff83.tar.xz |
src/adoc: New "add_linenums()" step
-rwxr-xr-x | src/adoc | 56 |
1 files changed, 56 insertions, 0 deletions
@@ -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 |