Pick a name for the subcomponents of an ArtiPathComponent

Context

We need a name for the individual subcomponents (substrings) of non-leaf ArtiPathComponents. These subcomponents (let's call them "slugs" for the purposes of this ticket) have the following properties:

  • slugs can be concatenated to build file names
  • when concatenating slugs, they should be separated using /, +, or .. The first slug should not be empty
  • slugs should not be concatenated without separators (for security reasons)
  • their charset is: lowercase ASCII alphanumerics and underscore. We may extend this to allow additional characters in the future, but /, +, and . (the slug separators) will never be valid slug characters
  • they may be empty, but most (all?) of our use cases don't allow empty slugs

HsNicknames, non-leaf ArtiPathComponents are slugs, as are the non-leaf components that make up KeySpecifier. The leaf component of an ArtiPath consists of one or more slugs, concatenated using + (for example, some keys have a TimePeriod slug)

Some possible names

Here are some possible names for the slugs described here:

  • Slug
  • PathElement
  • FnameElement
  • NameElement
  • IdElt
  • PathSlug
  • IdStr
  • FsId
  • FnameId
  • PathBlob
  • PathSlug
  • PathChunk
  • Name
  • Nick
  • ...something else?

Platform-specific restrictions

On Windows, the following slugs are forbidden:

  • con
  • prn
  • aux
  • nul
  • com1, com2, com3, com4, com5, com6, com7, com8, com9, com0
  • lpt1, lpt2, lpt3, lpt4, lpt5, lpt6, lpt7, lpt8, lpt9, lpt0