The version date of this specification is 2024/08/30.
Each Object starts at the beginning of a line and white space to the left of the Object is not treated as an Object.
An open-brace { (U+007B) followed by any white space until a new line terminates a possible valid Object.
White space after the last printable character of the Object but before the brace { (U+0037B) is not considered part of the Object.
An Object is not considered fully valid until a valid close-brace } (U+007D) is found, designating the end of the Content.
Non-white space printable characters may not follow the open-brace { (U+007B) of a valid Object.
Implementations of the standard may choose to include the white space to the left and to the right of a valid Object may be included as an untrimmed Object.
Content is represented as a single Content column of every line following a valid Object until the end of file (or string) or until a non-delimited close-brace } (U+007D).
Any Content column that could be interpreted as an end of Content must be delimited if it should be part of the Content.
White space may follow a valid close-brace } (U+007D) but a terminating new line must be present to designate a valid end of Content.
There is no single-quote (U+0027), double-quote (U+0022), or grave (U+0060) delimitation in this specification.
Only an open-brace { (U+007B) that would result in a valid Object or the close-brace } (U+007D) that would terminate valid Content can be delimited.
When inside potentially valid Content (which follows a valid Object) the open-brace { (U+007B) cannot be delimited because this standard is not-recursive.
When not inside any potentially valid Content (that is, there is no previous unclosed Object), then the Object may be delimited.
Likewise, the close-brace } (U+007D) may only be delimited if it is within any potentially valid Content.
Each delimit slash in a delimitable open-brace { (U+007B) is treated as a potential delimit such that two slashes represents a single delimited slash (\\{ would represent \{).
Only the first delimit slash in a delimitable close-brace } (U+007D) is treated as a potential delimit (\\\} would represent \\}).
Empty Objects are allowed, that is, the length of the Object may be zero.
Key:
\s= White space, except new line.\o= Any printable character, except unescaped{(U+007B).\c= Either white space or printable, including new line, that is not interpretable as an Object.\n= Newline.*= Zero or more occurrences.
Before Structure:
Structure:
\s*\o\s*{\s*\n\c*\n\s*}\s*\n
After Structure:
Example:
# fss-0003
# valid comments are ignored.
"The Object" {
Does not need to be quoted.
This: does not need to be delimited.
\}
}
Second {
Continues until EOS/EOF.
All white space, including new line (and leading white space) is "part of content."
# Valid comments are still ignored.
}
Example Results:
Objects would be:
1) "The Object"
2) Second
Contents would be:
1.1) Does not need to be quoted.
This: does not need to be delimited.
}
2.1) Continues until EOS/EOF.
All white space, including new line (and leading white space) is "part of content."