{files 'dir', base='app'} scans a directory and iterates its entries, one
occurrence each, with five fields: path (the full path), file (the
name), ext (the extension, empty for a directory), item (the entry
relative to the scanned directory, the extension taken off a file - the name a page is
addressed by) and dir (the part of item before its last slash).
base= says what the directory is relative to: app the
application, data DATA/, pad the path as given; otherwise it is read
from the file system root. Whatever the base, the directory must lie inside the applications,
the engine or DATA - anything else is an error. A directory that is not there is an error
under the strict check, an empty list without it.
recursive walks every subdirectory and lists the files below; mask
and exclude keep or drop names by a shell pattern, onlyFiles and
onlyDirs keep one kind, and names starting with a dot are left out unless
includeHidden is given. . and .. never come along.
The entries come in the order the file system keeps them, which differs between machines:
add sort='item' (any handling option works) when the order matters. The tag
reads a group parameter of its own as well, but the handling option of that name
takes it first, so it cannot be used. {dir} is the plain version - the
names only.