Add queryhash and queryq/queryhashq template variables for helping to derive a uniq filename from a request, independent of time.
Add *i file template variables for including the "index" as needed regardless of position in the template string.
Add dirname template variable and rework shelve.getDocumentFilename for efficiency and clarity.
Rewrite getDocumentFilename for simplicity and efficiency
Add dirnameshorten template variable which expands to the dirname with each path component, if longer than MAXNAMELEN, shortened to have a unique hash appended and be at MAXNAMELEN in length. Directory creation should never fail now.
Add archivefilename which generates a filename for archival purposes. The filename is shortened, if necessary, to include the hash of the filename, queryhashq, and extension.
Add help documentation for new template variables (english only).
Renamed shelve.addEventListener to shelve.shelveEventListener
shelve.expandTemplateWithParams()
shelve.cleanPath()
shelveUtils.isWindows()
shelveUtils.shortenWithHash(), shelveUtils.cleanhashstring()
shelveUtils.validPlaceholders: correct order of names in rx
Misc code cleanup
Use shelveUtils.isWindows()
Templates: Call shelve.cleanPath() when returning a path in raw mode
Place-holder archivefilename: Use shelveUtils.shortenWithHash() and shelve.expandTemplateWithParams()
Place-holders queryq, queryhashq: Use a separator character depending on the OS
Place-holders queryhash, queryhashq: Use shelveUtils.cleanhashstring()
Place-holder dirnameshorten: Use shelveUtils.shortenWithHash()