aboutsummaryrefslogtreecommitdiff
path: root/trbldoc.sh
diff options
context:
space:
mode:
authorAlexander M Pickering <alex@cogarr.net>2026-08-03 21:52:33 -0500
committerAlexander M Pickering <alex@cogarr.net>2026-08-03 21:52:33 -0500
commit6705bdc69e1682982832ebea24e791581c44d0d2 (patch)
tree48ec63b522c03f4e0b5abf6a2cd520dc96ba7eee /trbldoc.sh
parent21eb6acc2fdf0c43a2a1f6d4892cbd253909f82b (diff)
downloadtrbldoc-6705bdc69e1682982832ebea24e791581c44d0d2.tar.gz
trbldoc-6705bdc69e1682982832ebea24e791581c44d0d2.tar.bz2
trbldoc-6705bdc69e1682982832ebea24e791581c44d0d2.zip
Allow comments to have tabsHEADmaster
Currently, comments need to be left-aligned, even if they appear in an indented block. change the comment form to strip the same whitespace as the first line so that comments can be indented without embedding indents in the stdin.
Diffstat (limited to 'trbldoc.sh')
-rw-r--r--trbldoc.sh42
1 files changed, 34 insertions, 8 deletions
diff --git a/trbldoc.sh b/trbldoc.sh
index 99e89be..4e27c28 100644
--- a/trbldoc.sh
+++ b/trbldoc.sh
@@ -183,18 +183,23 @@ BEGIN {
program_p = ""
ref_p = ""
}
-{sub(/\r$/, "", $0)}
/^[[:blank:]]*@file / && from_p == "" {
from_p = $0
sub(/^[[:blank:]]*@file /, "", from_p)
}
-/^[[:blank:]]*@name / && namespace_p == "" { namespace_p = $2 }
-/^[[:blank:]]*@priority / && priority_p == "" { priority_p = $2 }
+/^[[:blank:]]*@name / && namespace_p == "" {
+ namespace_p = $2
+}
+/^[[:blank:]]*@priority / && priority_p == "" {
+ priority_p = $2
+}
/^[[:blank:]]*@exec / && program_p == "" {
program_p = $0
sub(/^[[:blank:]]*@exec /, "", program_p)
}
-/^[[:blank:]]*@ref / && ref_p == "" { ref_p = $2 }
+/^[[:blank:]]*@ref / && ref_p == "" {
+ ref_p = $2
+}
END {
printf "%s%s%s%s%s%s%s%s%s\n", from_p, us, namespace_p, us, priority_p, us, program_p, us, ref_p
}
@@ -452,15 +457,27 @@ lua,\]\],\-\-\[\[
# Helper: write comment-extraction awk script from start/end regex pair.
# Uses single-quote splicing to inject shell variables into awk source.
+# Opening-tag indent (spaces/tabs before the start delimiter) is recorded and
+# stripped from subsequent body lines so indented source comments do not become
+# accidental Markdown code blocks.
_write_comment_form() {
printf '%s\n' '
BEGIN{}
/'"$2"'/ {
if(in_comment) {print "EOF"}
in_comment=0
+ indent=""
+}
+in_comment {
+ line=$0
+ if (indent != "" && index(line, indent) == 1) {
+ line=substr(line, length(indent)+1)
+ }
+ print line
}
-in_comment {print}
/'"$3"' .+/ && !/'"$2"'$/ {
+ indent=$0
+ sub(/[^[:space:]].*/, "", indent)
print "chunkfile=$(mktemp -p '"${cache_dir}"'/chunks)"
print "cat > $chunkfile << \"EOF\"\n@file " name ":" NR ;
if($2) {$1=""; print "@exec " $0}
@@ -488,17 +505,26 @@ for _alias_ext in moon tl; do
cp "$comment_form_dir/lua.awk" "$comment_form_dir/${_alias_ext}.awk" 2>/dev/null || true
done
-# Python: ''' is both the open and close delimiter. Renderer name is
+# Python: ''' is both the open and close delimiter; the renderer name is
# glued directly after the opening ''' with no space required (e.g. '''md).
-# Custom AWK uses sub() for renderer extraction instead of field splitting.
+# A custom AWK uses sub() for renderer extraction instead of field splitting.
sed "s|__PY_CACHE__|${cache_dir}|g" << 'PYAWK' > "$comment_form_dir/py.awk"
BEGIN{}
/'''/ {
if(in_comment) {print "EOF"}
in_comment=0
+ indent=""
+}
+in_comment {
+ line=$0
+ if (indent != "" && index(line, indent) == 1) {
+ line=substr(line, length(indent)+1)
+ }
+ print line
}
-in_comment {print}
/'''.+/ && !/'''$/ {
+ indent=$0
+ sub(/[^[:space:]].*/, "", indent)
print "chunkfile=$(mktemp -p __PY_CACHE__/chunks)"
print "cat > $chunkfile << \"EOF\"\n@file " name ":" NR ;
renderer = $0