#
# == 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
#
#
# or
#
#
# == 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.svg"
flname[6] = "ft-text"
flrepl[6] = "file-text.svg"
flname[7] = "ft-zip"
flrepl[7] = "file-zip.svg"
flname[8] = "ft-movie"
flrepl[8] = "movie.svg"
flname[9] = "ft-markdown"
flrepl[9] = "markdown.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
}