# # == 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.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 }