The version date of this specification is 2024/01/15
.
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 newline terminates a possible valid 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.
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 newline must be present to designate a valid end of Content.
There is no single-quote, double-quote, or grave delimitation in this specification.
Only an open-brace {
(U+007B
) that would result in a valid Object or a 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 newline.\o
= Any printable character, except unescaped{
(U+007B
).\l
= Any printable character or white space, except unescaped}
(U+007D
).\c
= Either white space or printable, including newline, that is not interpretable as an Object.\n
= Newline.*
= Zero or more occurrences.
Before Structure:
Structure:
\s*\o\l*{\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 newline (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 newline (and leading white space) is "part of content."