Update tui_layout.sh

This commit is contained in:
Sofia
2026-01-21 14:23:29 +08:00
committed by GitHub
parent 25c0680e3a
commit 41595bb643

View File

@@ -21,17 +21,14 @@ content_line() {
return return
fi fi
printf '%b' "$raw_input" | awk -v table_width="$TABLE_WIDTH" ' printf '%b' "$raw_input" | LC_ALL=C awk -v table_width="$TABLE_WIDTH" '
BEGIN { BEGIN {
textWidth = table_width - 3 textWidth = table_width - 3
currentDisplayWidth = 0 currentDisplayWidth = 0
wordWidth = 0 wordWidth = 0
currentLine = "" currentLine = ""
wordBuffer = "" wordBuffer = ""
lastColor = "" lastColor = ""
ESC = sprintf("%c", 27) ESC = sprintf("%c", 27)
} }
@@ -42,24 +39,37 @@ content_line() {
r = chars[i] r = chars[i]
if (r == ESC && i+1 <= n && chars[i+1] == "[") { if (r == ESC && i+1 <= n && chars[i+1] == "[") {
# Scan forward until "m"
ansiSeq = "" ansiSeq = ""
for (j = i; j <= n; j++) { for (j = i; j <= n; j++) {
ansiSeq = ansiSeq chars[j] ansiSeq = ansiSeq chars[j]
if (chars[j] == "m") { if (chars[j] == "m") {
i = j # Advance main loop i = j
break break
} }
} }
wordBuffer = wordBuffer ansiSeq wordBuffer = wordBuffer ansiSeq
lastColor = ansiSeq # Remember color for wrapping lastColor = ansiSeq
continue continue
} }
charWidth = 1 charWidth = 1
if (r ~ /[^\001-\177]/) {
if (r <= "\177") {
charWidth = 1
}
else if (r >= "\340" && r <= "\357" && i+2 <= n) {
r = chars[i] chars[i+1] chars[i+2]
i += 2
charWidth = 2 charWidth = 2
} }
else if (r >= "\300" && r <= "\337" && i+1 <= n) {
r = chars[i] chars[i+1]
i += 1
charWidth = 1
}
else {
charWidth = 1
}
if (r == " " || charWidth == 2) { if (r == " " || charWidth == 2) {
if (currentDisplayWidth + wordWidth + charWidth > textWidth) { if (currentDisplayWidth + wordWidth + charWidth > textWidth) {