From 0187e255a811bebb0dad3624f2c6d78b829d15c5 Mon Sep 17 00:00:00 2001 From: Syndamia Date: Tue, 17 Jan 2023 16:15:28 +0200 Subject: [awk] Reworked generation to happen via a combined script, updated scripts and added info in scripts readme --- awk-edits/File-lists.awk | 165 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 165 insertions(+) create mode 100644 awk-edits/File-lists.awk (limited to 'awk-edits/File-lists.awk') diff --git a/awk-edits/File-lists.awk b/awk-edits/File-lists.awk new file mode 100644 index 0000000..8903b95 --- /dev/null +++ b/awk-edits/File-lists.awk @@ -0,0 +1,165 @@ +# +# == About == +# +# Each file list is a "details" element, that contains a table, each row being a different file +# or alternatively, just the table on it's own. +# +# -- Result HTML -- +# +#
+# Folder Info +# +# File Data +#
+#
+# or +# +# File Data +#
+ +# +# == ftags == +# +# &&folder The text right afterwards is the title of the folder. All files +# are hidden inside the collapsed details tag (click to show). +# The file table is indented. You cannot have a folder inside a folder. +# It can be omitted, and the files table will be shown as-is. +# +# &&file Everything that follows this tag is the data for a file. You should +# use &&fd to specify columns of information! Depending on the context, +# it might be flrepllaced with the start of a table, closing the summary +# and starting table, or closing and opening a table row. +# +# &&/files This tag must exist at the bottom of a file list, no matter if it was +# started with or without a &&folder. +# +# &&fd Defines a column of information for a file (row). Practically, it is +# flrepllaced with , and is added to the end of the line. +# If you don't use it, make sure to have the leading and trailing td tags! +# +# &&ft-TYPE Depending on TYPE, it inserts an image tag that contains the file "icon" +# for the corresponding type. +# Available values for TYPE: photo, text, zip, movie, markdown +# +# -- Placement/Flow -- +# +# All ftags, except &&fd, can be placed on their own line (empty line above and below) +# or before/after another ftag. +# Folder title must be inside the same paragraph as the ftag itself. This means that, +# after +# every &&folder ftag, the text can continue directly next to it and/or on new lines, +# without there being any empty lines (you can add those with
or two spaces at +# line end). +# +# -- Example Usage -- +# +# (I like to indent a bit &&fd ftags, for readability's sake, but you don't have to) +# +# &&file +# &&ft-text +# &&fd Notes +# &&fd 10 KB +# &&/files +# +# &&folder Math +# &&file +# &&ft-text +# &&fd Homework 1 +# &&file +# &&ft-text +# &&fd Homework 2 +# &&/files +# +# &&folder Art Project
+# Status: 70% complete
+# Note: Reserach Van Gogh paintings +# +# &&file +# &&fd Painting 1 +# &&fd 100% Complete +# +# &&file +# &&fd Painting 2 +# &&fd 40% Complete +# +# &&/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] = "photo-tabler.svg" + flname[6] = "ft-text" + flrepl[6] = "file-text-tabler.svg" + flname[7] = "ft-zip" + flrepl[7] = "file-zip-tabler.svg" + flname[8] = "ft-movie" + flrepl[8] = "movie-tabler.svg" + flname[9] = "ft-markdown" + flrepl[9] = "markdown-tabler.svg" + + for (i = 1; i <= length(flname); i++) { + flpat[i] = "&&" flname[i] + if (index(flname[i], "ft") == 1) + flrepl[i] = "" + } +} + +function fileSubstitute(ind) { + gsub(/(

|<\/p>)/, "") + + # &&file + if (ind == 2 && fileStarted == 0) { + if (noFolder == 1) + gsub("&&file", "") + else + gsub("&&file", "
") + fileStarted = 1 + } + # &&/files + else if (ind == 3 && noFolder == 1) { + gsub("&&/files", "
") + } + # &&fd + else if (ind == 4) { + gsub(/&&fd[ \t]*/, "") + gsub(/$/, "") + } + else + gsub(flpat[ind], flrepl[ind]) + + # &&folder + if (ind == 1) { + noFolder = 0 + searchEndP = 1 + } + # &&/files + else if (ind == 3) { + fileStarted = 0 + noFolder = 1 + } +} + +/^[ \t]*(

|)&&/ { + for (i = 1; i <= length(flname); i++) { + if (index($0, flpat[i]) != 0) + fileSubstitute(i) + } +} + +searchEndP == 1 && /<\/p>/ { + gsub(/<\/p>/, "") + searchEndP = 0 +} -- cgit v1.3.1-26-gb76a