From 8ebd7c53abcba01743b9336d10617372dd4e064a Mon Sep 17 00:00:00 2001
From: Syndamia
Date: Mon, 11 Sep 2023 12:23:57 +0300
Subject: [File-lists] Simplified awk code significantly
Though this has slightly increased runtimes
---
awk-edits/File-lists.awk | 112 +++++++++++++++++------------------------------
1 file changed, 40 insertions(+), 72 deletions(-)
(limited to 'awk-edits/File-lists.awk')
diff --git a/awk-edits/File-lists.awk b/awk-edits/File-lists.awk
index d3e0725..b952b55 100644
--- a/awk-edits/File-lists.awk
+++ b/awk-edits/File-lists.awk
@@ -84,84 +84,52 @@
#
# &&/files
-BEGIN {
- fileStarted = 0
- noFolder = 1
- searchEndP = 0 # Used to remove trailing
in file row
-
- # Special formatting
- flname[1] = "folder"
- flrepl[1] = ""
- flname[2] = "file"
- flrepl[2] = ""
- flname[3] = "/files" # /files
- flrepl[3] = "
"
- flname[4] = "fd"
- flrepl[4] = "" # Not used, refer to fileSubstitute function
-
- flname[5] = "ft-photo"
- flrepl[5] = "\\"
- flname[6] = "ft-text"
- flrepl[6] = "\\"
- flname[7] = "ft-zip"
- flrepl[7] = "\\"
- flname[8] = "ft-movie"
- flrepl[8] = "\\"
- flname[9] = "ft-markdown"
- flrepl[9] = "\\"
-
- flnamelength = 9 # POSIX compatibility: length(flname) is not valid
-
- for (i = 1; i <= flnamelength; i++) {
- flpat[i] = "&&" flname[i]
- if (index(flname[i], "ft") == 1)
- flrepl[i] = "" flrepl[i] " | "
- }
+function flSub(name, repl, isft) {
+ if (isft)
+ repl = "" repl " | "
+ sub("&&" name, repl)
+ fl_rmPar = 1
}
-function fileSubstitute(ind) {
- gsub(/(|<\/p>)/, "")
+/&&folder/ {
+ flSub("folder", "")
+ fl_folder = 1
+}
+/&&file/ {
+ # if inside folder and not the first &&file
+ if (fl_folder == 2)
+ flSub("file", "")
- # &&file
- if (ind == 2 && fileStarted == 0) {
- if (noFolder == 1)
- sub("&&file", "")
- else
- sub("&&file", "")
- fileStarted = 1
- }
- # &&/files
- else if (ind == 3 && noFolder == 1) {
- sub("&&/files", "
")
+ # if inside folder and being the first &&file
+ else if (fl_folder == 1) {
+ flSub("file", "")
+ fl_folder = 2
}
- # &&fd
- else if (ind == 4) {
- sub(/&&fd[ \t]*/, "| ")
- $0 = $0 " | "
- }
- else
- sub(flpat[ind], flrepl[ind])
- # &&folder
- if (ind == 1) {
- noFolder = 0
- searchEndP = 1
- }
- # &&/files
- else if (ind == 3) {
- fileStarted = 0
- noFolder = 1
- }
+ # if not inside folder (standalone)
+ else
+ flSub("file", "")
}
-
-/^[ \t]*(|)&&/ {
- for (i = 1; i <= flnamelength; i++) {
- if (index($0, flpat[i]) != 0)
- fileSubstitute(i)
+/&&/files/ {
+ # if inside folder
+ if (fl_folder) {
+ flSub("/files", "
")
+ fl_folder = 0
}
-}
-/<\/p>/ && searchEndP == 1 {
- sub(/<\/p>/, "")
- searchEndP = 0
+ else
+ flSub("/files", "
")
}
+/&&fd/ {
+ sub(/&&fd[ \t]*/, "")
+ $0 = $0 " | "
+ fl_rmPar = 1
+}
+/&&ft-photo/ { flSub("ft-photo", "\\", 1) }
+/&&ft-text/ { flSub("ft-text", "\\", 1) }
+/&&ft-zip/ { flSub("ft-zip", "\\", 1) }
+/&&ft-movie/ { flSub("ft-movie", "\\", 1) }
+/&&ft-markdown/ { flSub("ft-markdown", "\\", 1) }
+
+// && fl_rmPar { sub(/
/, "") }
+/<\/p>/ && fl_rmPar { sub(/<\/p>/, "") ; fl_rmPar = 0 }
--
cgit v1.3.1-26-gb76a