1. Strings
    1. pretty
  2. path

Strings

All string types must implement the following keys:

When serializing, a error should be generated if the string cannot fit in the target size. An error should be generated if the encoding is invalid, though map structs should handle their own error generation in the case of using one.

When stringifying, all syntactic types just return their string value as-is. This means parsing is the same as setting the value.

Syntactic types:

Refstr and multistring, while being a syntactic types, cannot be referred to as a type such as in a struct declaration.

pretty

path

All paths are considered relative. The basing should be something that the user of the value cares about rather than this value itself.

When defined/set, must use either "/" or "\" as the path separator and "." as the extension separator but only the last occurrence within the final element, assuming it is not the first or last character of the final element. The struct should store whether or not there was an initial slash. TODO: Should this store the presence of a trailing slash as well?

When retrieved, it will return the path as defined but using your system's path and extension separators.

path must implement the following additional keys:

Possible extensions: URIs with protocols (protocol://…), network shares (\\share\…)