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."