Add new specifications.
Update existing specifications.
The following is an example on how I started generating the HTML from the specifications.
```
fss_basic_list_read iki.txt +Q -c | iki_read +Q -w -rr FLL '<abbr title="Featureless Linux Library">FLL</abbr>' FSS '<abbr title="Featureless Settings Specifications">FSS</abbr>' -WWWWWW character '<code class="code">' "</code>" UTF-8 '<abbr title="Unicode Transformation Format 8-bit">' '</abbr>' italic '<em class="em">' '</em>' unicode '<code class="code">' '</code>' code '<code class="code">' '</code>' file '<code class="code">' '</code>'
```
I then make manual modifications as needed.
--- /dev/null
+# fss-0002 iki-0000
+#
+# license open-standard-license-1.0-or-later
+# version 2024/11/03
+#
+# This file (assumed to be named eki-0000.txt) can be more easily read using the following iki_read commands:
+# iki_read eki-0000.txt +Q -w -WW character "'" "'" code '"' '"'
+#
+# To read the "EKI Specification: 0000 - Unrestricted" section of this file, use this command sequence:
+# fss_basic_list_read eki-0000.txt +Q -cn "EKI Specification: 0000 - Unrestricted" | iki_read +Q -w -WW character "'" "'" code '"' '"'
+#
+
+EKI Specification: 0000 - Unrestricted:
+ This specification provides no restrictions on the vocabulary.
+
+ See the file:"eki.txt" specification file for details on the syntax rules.
--- /dev/null
+# fss-0002 iki-0000
+#
+# license open-standard-license-1.0-or-later
+# version 2024/11/03
+#
+# This file (assumed to be named eki-0001.txt) can be more easily read using the following iki_read commands:
+# iki_read eki-0001.txt +Q -w -rrr URI URI URL URL URN URN -WW character "'" "'" code '"' '"'
+#
+# To read the "EKI Specification: 0001 - Basic" section of this file, use this command sequence:
+# fss_basic_list_read eki-0001.txt +Q -cn "EKI Specification: 0001 - Basic" | iki_read +Q -w -rrr URI URI URL URL URN URN -WW character "'" "'" code '"' '"'
+#
+
+EKI Specification: 0001 - Basic:
+ This specification provides a small set of vocabulary names meant to be associated with common uses, such as e-mail addresses and URL:"Uniform Resource Locator"s.
+
+ Vocabulary\:
+ - address: Any mailing address, except for e-mail and URI:"Uniform Resource Identifier".
+ - code: All text contained within represent code and should be presented as such.
+ - email: Any valid e-mail address.
+ - phone: Any valid phone number.
+ - quote: All text within represents some quote.
+ - uri: Any valid URI:"Uniform Resource Identifier" (allows URL:"Uniform Resource Locator" and URN:"Uniform Resource Name").
+ - url: Any valid URL:"Uniform Resource Locator".
+ - urn: Any valid URN:"Uniform Resource Name".
+ - var: All text contained within represents some sort of variable.
+
+ See the file:"eki.txt" specification file for details on the syntax rules.
--- /dev/null
+# fss-0002 iki-0000
+#
+# license open-standard-license-1.0-or-later
+# version 2024/11/21
+#
+# This file (assumed to be named eki.txt) can be more easily read using the following iki_read commands:
+# iki_read eki.txt +Q -w -WWW character "'" "'" code '"' '"' italic '"' '"'
+#
+# To read the "EKI Specifications" section of this file, use this command sequence:
+# fss_basic_list_read eki.txt +Q -cn "EKI Specifications" | iki_read +Q -w -WWW character "'" "'" code '"' '"' italic '"' '"'
+#
+
+EKI Specifications:
+ EKI is an extended EKI format that introduces the ability to have multiple variable names (italic:"Objects") per variable value (italic:"Content").
+
+ The EKI syntax is identical to the EKI syntax and all of its rules apply except for the modification defined in this specification.
+
+ This variable name, or italic:"Object", now supports an additional character, character:":" (unicode:"U+003A"), is used to separate each individual variable name.
+ Each variable name must follow the same requirements of a valid variable name as specified in the EKI specification.
+ Only the last character:":" (unicode:"U+003A") before the opening single quote (unicode:"U+0027"), double quote (unicode:"U+0022"), or grave (unicode:"U+0060") shall be a candidate for being escaped.
+ When this escape is in place of a valid EKI variable, then that would be variable is no longer considered an EKI variable.
+
+ Key\:
+ code:"\o" = any printable word character, including character:"_", character:"-", character:"+" (and Unicode equivalents).
+ code:"\O" = any printable word character, including character:"_", character:"-", character:"+" (and Unicode equivalents) followed by a colon character:":" (unicode:"U+003A") (cannot be only a colon by itself).
+ code:"\c" = any character, including white space and non-printing, and any delimited quote (used as the opening quote) or a any quote (undelimited) not used as the opening quote.
+ code:"\q" = either a single quote character:"'" (unicode:"U+0027"), a double quote character:'"' (unicode:"U+0022"), or a grave character:'`' (unicode:"U+0060").
+ code:"\x" = any character.
+ code:"\W" = any non-word character, discluding character:"_" (and Unicode equivalents), character:"-" (and Unicode equivalents), character:"+" (and Unicode equivalents), and colon character:":" (unicode:"U+003A").
+ code:"\e" = an optional escape sequence of any number of backslashes, such as character:"\\" (unicode:"U+005C").
+ code:"[" = a single conditionally optional open bracket, character:"[" (unicode:"U+005B").
+ code:"]" = a single conditionally optional close bracket, character:"]" (unicode:"U+005D").
+ code:"*" = zero or more occurrences.
+ code:"~" = one or more occurrences, or zero if at start of file.
+ code:"+" = one or more occurrences.
+ code:":" = The colon character:":" (unicode:"U+003A").
+
+ Before Structure\:
+ code:"\x*\W~"
+
+ Structure\:
+ code:"[\O*\o+]\e:\q\c\q"
+
+ After Structure\:
+ code:""
+
+ Example\:
+ code:`# fss-000c eki-0000
+
+ This is my sentence, anything can go here but sometimes I want to italic\:"emphasize some text".
+
+ Other times I want to render a URL with bold such as this example URL: bold:url:\'http://www.example.com/url with space/'.
+
+ There are no comments, except for maybe the FSS\:"Featureless Settings Specification" header (which would not resolve to any EKI syntax anyway).
+
+ Quotes may be included, such as: code\:"const char *string = \"My \\\"quoted\\\" C string.\";".
+
+ The following bold:italic\\:"is escaped to not be treated as EKI data".
+
+ The conditionally optional open and close brackets allow for putting a variable directly next to another word character like: [context]\:"bold"this[context]\:"bold".
+
+ Multiple Objects within a bracket is also valid, like: before[bold:context]\:"important"after.
+
+ These are examples of escapes: one\:"\" escape", two\:"\\" escape", three\:"\\\" escape", six\:"\\\\\\" escape".
+
+ These are examples of non-escapes: one\:"\' escape", two\:"\\' escape", three\:"\\\' escape", six\:"\\\\\\' escape".
+
+ These slashes \ \\ \\\ are not escaped because there is now quote immediately after each of them.`
+
+ Objects (also called vocabulary or variable name) would be\:
+ 1.1) italic
+ 2.1) bold
+ 2.2) URL
+ 3.1) FSS
+ 4.1) code
+ 5.1) context
+ 6.1) context
+ 7.1) bold
+ 7.2) context
+ 8.1) one
+ 9.1) two
+ 10.1) three
+ 11.1) six
+ 12.1) one
+ 13.1) two
+ 14.1) three
+ 15.1) six
+
+ Contents (also called variable value) would be\:
+ 1.1) emphasize some text
+ 2.1) http://www.example.com/url with space/
+ 3.1) Featureless Settings Specification
+ 4.1) const char *string = "My \"quoted\" C string.";
+ 5.1) bold
+ 6.1) bold
+ 7.1) important
+ 8.1) " escape
+ 9.1) \\
+ 10.1) \" escape
+ 11.1) \\\
+ 12.1) \' escape
+ 13.1) \\' escape
+ 14.1) \\\' escape
+ 15.1) \\\\\\' escape
+
+ The following are core specifications (each with a common name associated with the specification number)\:
+ - eki-0000: Unrestricted
+ - eki-0001: Basic
code:""
Example\:
- # fss-0000
- # valid comments are ignored.
+ \# fss-0000
+ \# valid comments are ignored.
"The Object" Content until new line.
Second object set.
code:""
Example\:
- # fss-0001
- # valid comments are ignored.
+ \# fss-0001
+ \# valid comments are ignored.
"The Object" Content "content 2" content_3.
Second object set.
# fss-0002 iki-0000
#
# license open-standard-license-1.0-or-later
-# version 2024/01/15
+# version 2024/08/30
#
# This file (assumed to be named fss-0002.txt) can be more easily read using the following iki_read commands:
# iki_read fss-0002.txt +Q -w -WW character "'" "'" code '"' '"'
#
Featureless Settings Specification: 0002 - Basic List:
- Each Object starts at the beginning of a line and white space to the left of the Object is not treated as an object.
+ Each Object starts at the beginning of a line and white space to the left of the Object is not treated as an Object.
A colon character:":" (unicode:"U+003A") followed by any white space until a new line terminates a valid Object.
+ White space after the last printable character of the Object but before the colon character:":" (unicode:"U+003A") is not considered part of the Object.
Non-white space printable characters may not follow the colon 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 the next valid Object is found.
+ Content is represented as a single Content column of every line following a valid Object until the end of file (or string) or until the next valid Object is found.
Any Content that could be interpreted as a valid Object must have the colon delimited.
There is no single-quote (unicode:"U+0027"), double-quote (unicode:"U+0022"), or grave (unicode:"U+0060") delimitation in this specification.
Only a colon character:":" (unicode:"U+003A") that would result in a valid Object can be delimited.
- Empty Objects are allowed, that is, the length of the object may be zero.
+ Empty Objects are allowed, that is, the length of the Object may be zero.
Key\:
code:"\s" = White space, except new line.
code:"\o" = Any printable character, except unescaped character:":" (unicode:"U+003A").
- code:"\l" = Any printable character or white space, except unescaped character:":" (unicode:"U+003A").
code:"\c" = Either white space or printable, including new line, that not interpretable as an Object.
code:"\n" = New line.
code:"*" = Zero or more occurrences.
code:""
Structure\:
- code:"\s*\o\l*:\s*\n\c*\n*"
+ code:"\s*\o\s*:\s*\n\c*\n*"
After Structure\:
code:""
Example\:
- # fss-0002
- # valid comments are ignored.
+ \# fss-0002
+ \# 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.
+ \# Valid comments are still ignored.
Objects would be\:
1) "The Object"
# fss-0002 iki-0000
#
# license open-standard-license-1.0-or-later
-# version 2024/01/15
+# version 2024/08/30
#
# This file (assumed to be named fss-0003.txt) can be more easily read using the following iki_read commands:
# iki_read fss-0003.txt +Q -w -WW character "'" "'" code '"' '"'
#
Featureless Settings Specification: 0003 - Extended List:
- Each Object starts at the beginning of a line and white space to the left of the Object is not treated as an object.
+ 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 character:"{" (unicode:"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 character:"{" (unicode:"U+0037B") is not considered part of the Object.
An Object is not considered fully valid until a valid close-brace character:"}" (unicode:"U+007D") is found, designating the end of the Content.
Non-white space printable characters may not follow the open-brace character:"{" (unicode:"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 character:"}" (unicode:"U+007D").
+ 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 character:"}" (unicode:"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 character:"}" (unicode:"U+007D") but a terminating new line must be present to designate a valid end of Content.
Each delimit slash in a delimitable open-brace character:"{" (unicode:"U+007B") is treated as a potential delimit such that two slashes represents a single delimited slash (code:"\\{" would represent code:"\{").
Only the first delimit slash in a delimitable close-brace character:"}" (unicode:"U+007D") is treated as a potential delimit (code:"\\\}" would represent code:"\\}").
- Empty Objects are allowed, that is, the length of the object may be zero.
+ Empty Objects are allowed, that is, the length of the Object may be zero.
Key\:
code:"\s" = White space, except new line.
code:"\o" = Any printable character, except unescaped character:"{" (unicode:"U+007B").
- code:"\l" = Any printable character or white space, except unescaped character:"}" (unicode:"U+007D").
code:"\c" = Either white space or printable, including new line, that is not interpretable as an Object.
code:"\n" = Newline.
code:"*" = Zero or more occurrences.
code:""
Structure\:
- code:"\s*\o\l*{\s*\n\c*\n\s*}\s*\n"
+ code:"\s*\o\s*{\s*\n\c*\n\s*}\s*\n"
After Structure\:
code:""
Example\:
- # fss-0003
- # valid comments are ignored.
+ \# 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.
+ \# Valid comments are still ignored.
}
Objects would be\:
See the file:"fss-0000.txt" and file:"fss-0002.txt" specification files for details on the syntax rules.
Example\:
- # fss-0004
- # valid comments are ignored.
+ \# fss-0004
+ \# 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.
+ \# Valid comments are still ignored.
Outer Objects would be\:
1) "The Object"
See the file:"fss-0001.txt" and file:"fss-0002.txt" specification files for details on the syntax rules.
Example\:
- # fss-0005
- # valid comments are ignored.
+ \# fss-0005
+ \# 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.
+ \# Valid comments are still ignored.
Outer Objects would be\:
1) "The Object"
See the file:"fss-0000.txt" and file:"fss-0003.txt" specification files for details on the syntax rules.
Example\:
- # fss-0006
- # valid comments are ignored.
+ \# fss-0006
+ \# 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.
+ \# Valid comments are still ignored.
}
Outer Objects would be\:
See the file:"fss-0001.txt" and file:"fss-0003.txt" specification files for details on the syntax rules.
Example\:
- # fss-0007
- # valid comments are ignored.
+ \# fss-0007
+ \# 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.
+ \# Valid comments are still ignored.
}
Outer Objects would be\:
See the file:"fss-0003.txt" specification file for details on the syntax rules.
Example\:
- # fss-0008
- # valid comments are ignored.
+ \# fss-0008
+ \# valid comments are ignored.
"The Object" {
Does not need to be quoted.
This: does not need to be delimited.
code:""
Example\:
- # fss-0009
- # valid comments are ignored.
+ \# fss-0009
+ \# valid comments are ignored.
Content from new line. "The Object"
object set. Second
code:""
Example\:
- # fss-000a
- # valid comments are ignored.
+ \# fss-000a
+ \# valid comments are ignored.
Content "content 2" content_3. "The Object"
object set. Second
See the file:"fss-0002.txt" and file:"fss-0003.txt" specification files for details on the syntax rules.
Example\:
- # fss-000b
- # valid comments are ignored.
+ \# fss-000b
+ \# valid comments are ignored.
"The Object" {
Does not need to be quoted.
This: does not need to be delimited.
Second {
Nested Example.
- Third:
- Fourth:
+ Third\:
+ Fourth\:
There is parallel to Second rather than nested within Second.
}
2.1.1) Nested Example.
- Third:
- Fourth:
+ Third\:
+ Fourth\:
There is parallel to Second rather than nested within Second.
Inner Contents (depth 1) would be\:
# fss-0002 iki-0000
#
# license open-standard-license-1.0-or-later
-# version 2023/07/14
+# version 2023/11/19
#
# This file (assumed to be named fss-000c.txt) can be more easily read using the following iki_read commands:
# iki_read fss-000c.txt +Q -w -r FSS FSS -WWW character "'" "'" code '"' '"' italic '"' '"'
Featureless Settings Specification: 000C - IKI Text:
The IKI specifications are separate specifications from the FSS:"Featureless Settings Specifications".
This is simply a more formal way to designate that this format utilizes IKI syntax.
+ This may also be used to designate EKI syntax.
+
+ When neither an IKI nor an EKI header is specified and (other than code:"fss-000c" is specified) and the syntax is not known through some other means, then this can be assumed to be in IKI syntax rather than EKI syntax.
The IKI syntax may be used in any FSS:"Featureless Settings Specifications".
- The IKI format may be added to the.
See the file:"iki.txt" specification for details on the IKI specifications.
+ See the file:"eki.txt" specification for details on the EKI specifications.
+
+ Example\:
+ \# fss-000c iki-0000
+
+ This is a italic\:"formal example" utilizing the FSS and IKI headers.
+
+ Example\:
+ \# iki-0000
+
+ This is a italic\:"informal example" utilizing only the IKI headers.
+
Example\:
- # fss-000c iki-0000
+ \# fss-000c eki-0000
- This is a italic:"formal example" utilizing the FSS headers.
+ This is a bold:italic\:"informal example" utilizing the FSS and EKI headers.
Example\:
- # iki-0000
+ \# fss-000c
- This is a italic:"informal example" utilizing the IKI headers.
+ This is a italic:"formal example" utilizing only the FSS headers, which in this case is treated as IKI rather than EKI.
See the file:"fss-0000.txt", file:"fss-0001.txt", and file:"fss-0003.txt" specification files for details on the syntax rules.
Example\:
- # fss-000d
- main:
+ \# fss-000d
+ main\:
name "Boot Devices"
- script:
+ script\:
start {
ip addr add 127.0.0.1/8 label lo dev lo;
ip link set lo up;
ip link set lo down;
}
- command:
+ command\:
start mount -a -O no_netdev
stop umount -arf -O no_netdev
- For best portability, consider using status as a name string to ensure cross-system or cross-binary compatibility.
Example\:
- # fss-000e
- # valid comments are ignored.
+ \# fss-000e
+ \# valid comments are ignored.
header\:
type error
status 296
# fss-0002 iki-0000
#
# license open-standard-license-1.0-or-later
-# version 2024/07/10
+# version 2024/11/21
#
# This file (assumed to be named iki.txt) can be more easily read using the following iki_read commands:
# iki_read iki.txt +Q -w -WWW character "'" "'" code '"' '"' italic '"' '"'
IKI Specifications:
IKI is a minimally structured WIKI-like syntax meant to be simpler than WIKI syntax.
- The IKI syntax provides a vocabulary name (with specific context associated with it) followed by quoted value that is associated with the given vocabulary name.
- The vocabulary represents a list of allowed variable names that may also have specific contextual meaning defined by a given IKI specification.
- The variable name is considered the italic:"Object" and is also considered the vocabulary.
- The variable value is considered the italic:"Content".
- The variable name may be wrapped by a single open bracket, character:"[" (unicode:"U+005B"), at the start and a single close bracket, character:"]" (unicode:"U+005D"), at the end.
+ The IKI syntax describes a italic:"Variable" that is defined by a italic:"Vocabulary" name followed by quoted value called the italic:"Content".
- The wrapping characters characters are not part of the variable name and must not be contained within a variable name.
+ The italic:"Variable" refers to the italic:"Vocabulary", italic:"Content", and associated syntax that describes the italic:"Variable".
+ The italic:"Variable" name may be wrapped by a single open bracket, character:"[" (unicode:"U+005B"), at the start and a single close bracket, character:"]" (unicode:"U+005D"), at the end.
+ The open and close brackets, also called the wrapping characters, for the italic:"Variable" do not utilize escaping characters and instead any escaping is perform against the colon character:":" (unicode:"U+003A") that separates the italic:"Vocabulary" from the italic:"Content".
+ The italic:"Vocabulary" generally defines the context and many of the IKI specifications may provide a discrete set of allowed italic:"Vocabulary".
+ The italic:"Vocabulary" may also be referred to as the italic:"Object".
+ The italic:"Vocabulary" only allows word characters or one of character:"_" (unicode:"U+005F"), character:"-" (unicode:"U+002D"), character:"+" (unicode:"U+002B"), character:"[" (unicode:"U+005B")).
+ White space, non-word, and non character:"_" (unicode:"U+005F"), character:"-" (unicode:"U+002D"), character:"+" (unicode:"U+002B")) character punctuation may not exist as part of the variable name.
+ The only Unicode dash-like characters allowed as a "dash" are those intended to connect, such as the Unicode hyphens (unicode:"U+2010" and unicode:"U+2011").
+ Unicode punctuation connector characters are supported just like character:"_", except when they connect outside the current line (such as unicode:"U+FE33" character:"︳").
+ The immediate left of a italic:"Vocabulary" must not be a valid italic:"Vocabulary" character, unless the italic:"Vocabulary" is wrapped using the wrapping characters.
+ Unicode invisible punctuation (such as invisible plus: unicode:"U+2064") are not considered a punctuation in this standard (because they a zero-width characters), therefore they are not to be considered a valid character:"_" (unicode:"U+005F"), character:"-" (unicode:"U+002D"), or character:"+" (unicode:"U+002B") Unicode equivalents.
+
+ The wrapping characters characters are not part of the italic:"Vocabulary" name and instead only provide the syntax used to help identify a valid italic:"Variable".
+ The wrapping characters characters are part of the italic:"Variable".
The wrapping characters do not support escaping.
Both wrapping characters must be specified or neither.
- The IKI format will use code:"iki-0000" to represent an IKI with no explicitly defined vocabulary.
- Whereas code:"iki-0001" and beyond represent a specific IKI vocabulary.
-
- A potential IKI variable name starts on word character or one of character:"_" (unicode:"U+005F"), character:"-" (unicode:"U+002D"), character:"+" (unicode:"U+002B"), character:"[" (unicode:"U+005B")).
- White space, non-word, and non character:"_" (unicode:"U+005F"), character:"-" (unicode:"U+002D"), character:"+" (unicode:"U+002B")) character punctuations may not exist as part of the variable name.
- The only Unicode dash-like characters allowed as a "dash" are those intended to connect, such as the Unicode hyphens (unicode:"U+2010" and unicode:"U+2011").
+ The italic:"Content" refers to the value of the italic:"Variable".
+ The italic:"Content" is wrapped one of the following quote characters: single quote character:"'" (unicode:"U+0027"), double quote character:'"' (unicode:"U+0022"), or grave character:'`' (unicode:"U+0060").
+ The italic:"Content" must escape any quotes that match the open and close quote used for the italic:"Variable" by utilizing a backslash character:"\\" (unicode:"U+005C").
+ If a matching closing quote is not found until the end of the data (or file), then this unclosed italic:"Variable" is considered invalid.
+ The handling of this erroneous case is left to the implementation.
- Any potential IKI data must be escaped to make it treated as non-IKI data by prepending a backslash character:"\\" before the colon character:":" that is before the opening quote (single, double, or grave (backtick)). Potential IKI data refers to any valid IKI sequence without considering the closing single quote character:"'" (unicode:"U+0027"), closing double quote character:'"' (unicode:"U+0022"), or closing grave character:'`' (unicode:"U+0060").
+ The backslashes used for escaping quotes use character:"\\" (unicode:"U+005C").
+ Unless otherwise specified, these backslash escapes are performed only when required and not unilaterally.
+ One backslash escapes the valid quote, resulting in the quote being part of the italic:"Content".
+ Two backslashes escape the backslash, resulting in the backslash (but not the quote) being part of the italic:"Content".
+ An odd number of backslashes before a valid quote results in the backslashes and the quote being escaped.
+ An even number of backslashes before a valid quote results in the backslashes but not the quote being escaped.
- Unicode punctuation connector characters are supported just like character:"_", except when they connect outside the current line (such as unicode:"U+FE33" character:"︳").
- Unicode invisible punctuations (such as invisible plus: unicode:"U+2064") are not considered a punctuations in this standard (because they a zero-width characters), therefore they are not to be considered a valid character:"_", character:"-", or character:"+" Unicode equivalents.
+ The IKI format will use code:"iki-0000" to represent an IKI with no explicitly defined vocabulary.
+ Whereas code:"iki-0001" and beyond represent a specific IKI vocabulary.
Key\:
- code:"\o" = any printable word character, including character:"_", character:"-", character:"+" (and Unicode equivalents).
- code:"\c" = any character, including white space and non-printing, and any delimited quote (used as the opening quote) or a any quote (undelimited) not used as the opening quote.
+ code:"\o" = any printable word character, including character:"_" (unicode:"U+005F"), character:"-" (unicode:"U+002D"), character:"+" (unicode:"U+002B") (and Unicode equivalents).
+ code:"\c" = any character, including white space and non-printing, and any escaped quote (used as the opening quote) or a any quote (unescaped) not used as the opening quote.
code:"\q" = either a single quote character:"'" (unicode:"U+0027"), a double quote character:'"' (unicode:"U+0022"), or a grave character:'`' (unicode:"U+0060").
code:"\x" = any character.
- code:"\W" = any non-word character, discluding character:"_", character:"-", character:"+" (and Unicode equivalents).
- code:"\e" = an optional escape sequence of any number of backslashes, such as character:"\\".
- code:"[" = a single conditionally optional open bracket, character:"[" (unicode:"U+005B").
- code:"]" = a single conditionally optional close bracket, character:"]" (unicode:"U+005D").
+ code:"\W" = any non-word character, discluding character:"_" (unicode:"U+005F") (and Unicode equivalents), character:"-" (unicode:"U+002D") (and Unicode equivalents), and character:"+" (unicode:"U+002B") (and Unicode equivalents).
+ code:"\e" = an optional escape sequence of any number of backslashes, such as character:"\\" (unicode:"U+005C").
+ code:"[" = a single (conditionally optional) open bracket, character:"[" (unicode:"U+005B").
+ code:"]" = a single (conditionally optional) close bracket, character:"]" (unicode:"U+005D").
code:"*" = zero or more occurrences.
code:"~" = one or more occurrences, or zero if at start of file.
+ code:"+" = one or more occurrences.
+ code:":" = The colon character:":" (unicode:"U+003A").
Before Structure\:
- code:"\x*\W~\*:*"
+ code:"\x*\W~"
Structure\:
- code:"[\o\e:]\q\c\q"
+ code:"[\o+]\e:\q\c\q"
After Structure\:
code:""
Example\:
- code:'# fss-000c iki-0000
+ code:`# fss-000c iki-0000
This is my sentence, anything can go here but sometimes I want to italic\:"emphasize some text".
- Other times I want to render a url such as this example url: url\:\'http://www.example.com/url with space/\'.
+ Other times I want to render a URL such as this example URL: url\:'http://www.example.com/url with space/'.
There are no comments, except for maybe the FSS\:"Featureless Settings Specification" header (which would not resolve to any IKI syntax anyway).
Quotes may be included, such as: code\:"const char *string = \"My \\\"quoted\\\" C string.\";".
- The following italic\:"is escaped to not be treated as IKI data".
+ The following italic\\:"is escaped to not be treated as IKI Variable".
+
+ The conditionally optional open and close brackets allow for putting a variable directly next to another word character like: [context]\:"bold"this[context]\:"bold".
+
+ These are examples of escapes: one\:"\" escape", two\:"\\" escape", three\:"\\\" escape", six\:"\\\\\\" escape".
+
+ These are examples of non-escapes: one\:"\' escape", two\:"\\' escape", three\:"\\\' escape", six\:"\\\\\\' escape".
- The conditionally optional open and close brackets allow for putting a variable directly next to another word character like: [context]\:"bold"this[context]\:"bold".'
+ These slashes \ \\ \\\ are not escaped because there is now quote immediately after each of them.`
Objects (also called vocabulary or variable name) would be\:
- 1) italic
- 2) url
- 3) FSS
- 4) code
- 5) italic
- 6) context
- 7) context
+ 1.1) italic
+ 2.1) URL
+ 3.1) FSS
+ 4.1) code
+ 5.1) context
+ 6.1) context
+ 7.1) one
+ 8.1) two
+ 9.1) three
+ 10.1) six
+ 11.1) one
+ 12.1) two
+ 13.1) three
+ 14.1) six
Contents (also called variable value) would be\:
- 1.1) emphasize some text
- 2.1) http://www.example.com/url with space/
- 3.1) Featureless Settings Specification
- 4.1) const char *string = "My \"quoted\" C string.";
- 5.1) is escaped to not be treated as IKI data
- 6.1) bold
- 7.1) bold
+ 1.1) emphasize some text
+ 2.1) http://www.example.com/url with space/
+ 3.1) Featureless Settings Specification
+ 4.1) const char *string = "My \"quoted\" C string.";
+ 5.1) bold
+ 6.1) bold
+ 7.1) " escape
+ 8.1) \
+ 9.1) \" escape
+ 10.1) \\\
+ 11.1) \' escape
+ 12.1) \\' escape
+ 13.1) \\\' escape
+ 14.1) \\\\\\' escape
The following are core specifications (each with a common name associated with the specification number)\:
- - fss-0000: Unrestricted
- - fss-0001: Basic
- - fss-0002: Simple Script
+ - iki-0000: Unrestricted
+ - iki-0001: Basic
+ - iki-0002: Simple Script
Consider "inet" for classic internet.
example resolution file (/etc/resolution):
- # fss-????
+ \# fss-????
inet:
namesever 208.67.222.222
extension kevux 127.0.0.2:123
# fss-0002 iki-0000
#
# license open-standard-license-1.0-or-later
-# version 2023/12/16
+# version 2024/11/23
#
# This file (assumed to be named time.txt) can be more easily read using the following iki_read commands:
# iki_read time.txt +Q -r UTC UTC -w -WW character "'" "'" code '"' '"'
Time Specification:
There are two units of bold:"Time", the first is simply called bold:"Time" and the second is called bold:"EpochTime".
- Both bold:"Time" and bold:"EpochTime" are measured without the year but may contain a year to designate the point in the counting begins.
+ Both bold:"Time" and bold:"EpochTime" are measured without the base time but may contain a base time to designate the point in the counting begins.
These are both represented by a single 64-bit (unsigned) integer.
The default timezone is always UTC:"Coordinated Universal Time".
- The common form is intended as the non-technical form that is form common use.
+ If no special designation is provided or otherwise understood, then a year is the default and expected base time.
+ Anything may be used as an alternative base point of time.
+ It could a decade, a day, a minute, or even a microsecond.
+ The base time must either be understand or be communicated somehow.
+
+ The common form is intended for use as a less technical form for use in a more casual manner.
This may have a negative value or be more than 64-bit digits long.
- This is simply not expected to be interpreted as a unit of time on a computer (but nothing stops it from being interpreted).
+ This is simply not expected to be interpreted as a unit of time on a computer (but nothing stops it from being interpreted as such).
- The technical forms are limited to 64-bit unsigned for technical use but should technology advance to a point where larger bits are needed then this allows for that.
+ The more technical forms are limited to 64-bit unsigned for technical use but should technology advance to a point where larger bits are needed then this allows for that.
The systems should expect 64-bit and larger bits would have to become common before something larger than 64-bit is the expected or assumed default.
Negative signs can be allowed but they must not prevent the full use of the 64-bit.
The implementation of how this is done is left to the implementer except that the signs are immediately to the left of the digit.
- For example code:"2022:-5" would be 5 units before the start of the year 2022.
- Because the negative is allowed, so must the positive character (such as code:"2022:+5").
- A positive value is the default interpretation when no sign is valid.
-
- The unit of time called bold:"Time" is counted increments of a nanosecond, or 10^-9 seconds.
- A unit of bold:"Time" is, therefore, equivalent to a nanosecond.
- When the year is not specified, then the behavior of the year is not defined.
- The year can be inferred, directly designated through some other means, understood, asserted, or simply unknown or otherwise unspecified.
- The general recommendation is that the default year for bold:"Time" is the current year.
-
- The unit of time called bold:"EpochTime" is counted increments of a second, or 10^-9 seconds.
- A unit of bold:"EpochTime" is, therefore, equivalent to a second.
- The behavior when the year is not specified is the same as described for the bold:"Time".
- The general recommendation is that the default year for bold:"EpochTime" is the bold:"UNIX Epoch", sometimes called bold:"Unix time".
-
- The unit bold:"Time" has two technical forms and one common form, with the year and without the year.
+ For example code:"2022:-5" for the standard base time, a year, would be 5 units before the start of the year 2022.
+ The negative is allowed and so must the positive character also be allowed (such as code:"2022:+5").
+ A positive value is the default interpretation when there is no explicit sign used.
+
+ The unit of time called bold:"Time" is counted in increments of a nanosecond, or 10^-9 seconds, unless otherwise specified or understood.
+ The base unit of bold:"Time" is not exclusively fixed to a year and can be fixed to any base point of time.
+ The base unit can be inferred, directly designated through some other means, understood, asserted, or simply unknown or otherwise unspecified.
+ The general recommendation is that the default base unit, a year, for bold:"Time" is to represent the current year.
+ This recommendation may also be followed for other base formats, such as a day, where the bold:"Time" is to represent the current day.
+ When the base unit is not specified, then the behavior of the base unit is not explicitly defined and must be somehow understood.
+
+ The unit of time called bold:"EpochTime" is counted increments of a second.
+ The bold:"EpochTime" is always expected to always be relative to the bold:"UNIX Epoch" year.
+ Specifying a custom base time itself is still relative to the bold:"UNIX Epoch" year.
+ Another common name for bold:"UNIX Epoch" is bold:"Unix time".
+ The general recommendation is that the default base unit to be a year for bold:"EpochTime".
+
+ The unit bold:"Time" has two technical forms and one common form, with the base unit and without the base unit.
+
+ A suggested use would be to wrap the bold:"Time" or bold:"EpochTime" in something that provides further context, such as bold:"IKI" and bold:"EKI".
+ The bold:"EKI" can more easily describe the base time changes.
+
+ The bold:"IKI" could be used to designate the standard units bold:"time" and bold:"epochtime" like the following\:
+ code:`time:"12345"`.
+ code:`time:"2022:12345"`.
+ code:`epochtime:"12345"`.
+ code:`epochtime:"2022:12345"`.
+
+ The bold:"EKI" could be used to designate the standard unit bold:"time" and bold:"epochtime" along with a more explicit base time like the following\:
+ code:`day:time:"12345"`.
+ code:`day:time:"100:12345"`.
+ code:`year:time:"2022:12345"`.
+ code:`day:epochtime:"12345"`.
+ code:`day:epochtime:"100:12345"`.
+ code:`year:epochtime:"2022:12345"`.
+
+ In the previous examples for bold:"EKI" show code:"day" along with code:"epochtime".
+ For code:`day:epochtime:"100:12345"`, this means that the timestamp starts 100 days after the bold:"UNIX Epoch" year.
+
+ In the previous examples for bold:"EKI" show code:"year" along with code:"epochtime".
+ For code:`year:epochtime:"2022:12345"`, this means that the timestamp start 2022 years after the bold:"UNIX Epoch" year.
Key\:
code:"\s" = White space.
<a href="fll/specifications/iki/iki-0002.html" class="nav-text link"><div>IKI-0002</div><div>(Simple Script)</div></a>
</div>
<div class="nav-item block">
+ <a href="fll/specifications.html#eki" class="nav-text link">EKI</a>
+ </div>
+ <div class="nav-item block">
+ <a href="fll/specifications/eki/eki-0000.html" class="nav-text link"><div>EKI-0000</div><div>(Unrestricted)</div></a>
+ </div>
+ <div class="nav-item block">
+ <a href="fll/specifications/eki/eki-0001.html" class="nav-text link"><div>EKI-0001</div><div>(Basic)</div></a>
+ </div>
+ <div class="nav-item block">
<a href="fll/specifications.html#other" class="nav-text link">Other</a>
</div>
<div class="nav-item block">
<div class="section-content">
<p class="p">
- The version date of this specification is <code class="code">2024/06/11</code>.
+ The version date of this specification is <code class="code">2024/11/21</code>.
</p>
<p class="p">
The license (copyright) is <a href="licenses/oslv1.html" class="link">Open Standard License 1.0 or greater</a>.
IKI is a minimally structured WIKI-like syntax meant to be simpler than WIKI syntax.
</p>
<p class="p">
- The IKI syntax provides a vocabulary name (with specific context associated with it) followed by quoted value that is associated with the given vocabulary name.
- The vocabulary represents a list of allowed variable names that may also have specific contextual meaning defined by a given IKI specification.
- The variable name is considered the <em class="em">Object</em> and is also considered the vocabulary.
- The variable value is considered the <em class="em">Content</em>.
- The variable name may be wrapped by a single open bracket, <code class="code">[</code> (<code class="code">U+005B</code>), at the start and a single close bracket, <code class="code">]</code> (<code class="code">U+005D</code>), at the end.
+ The IKI syntax describes a <em class="em">Variable</em> that is defined by a <em class="em">Vocabulary</em> name followed by quoted value called the <em class="em">Content</em>.
</p>
<p class="p">
- The wrapping characters characters are not part of the variable name and must not be contained within a variable name.
+ The <em class="em">Variable</em> refers to the <em class="em">Vocabulary</em>, <em class="em">Content</em>, and associated syntax that describes the <em class="em">Variable</em>.
+ The <em class="em">Variable</em> name may be wrapped by a single open bracket, <code class="code">[</code> (<code class="code">U+005B</code>), at the start and a single close bracket, <code class="code">]</code> (<code class="code">U+005D</code>), at the end.
+ The open and close brackets, also called the wrapping characters, for the <em class="em">Variable</em> do not utilize escaping characters and instead any escaping is perform against the colon <code class="code">:</code> (<code class="code">U+003A</code>) that separates the <em class="em">Vocabulary</em> from the <em class="em">Content</em>.
+ The <em class="em">Vocabulary</em> generally defines the context and many of the IKI specifications may provide a discrete set of allowed <em class="em">Vocabulary</em>.
+ The <em class="em">Vocabulary</em> may also be referred to as the <em class="em">Object</em>.
+ The <em class="em">Vocabulary</em> only allows word characters or one of <code class="code">_</code> (<code class="code">U+005F</code>), <code class="code">-</code> (<code class="code">U+002D</code>), <code class="code">+</code> (<code class="code">U+002B</code>), <code class="code">[</code> (<code class="code">U+005B</code>)).
+ White space, non-word, and non <code class="code">_</code> (<code class="code">U+005F</code>), <code class="code">-</code> (<code class="code">U+002D</code>), <code class="code">+</code> (<code class="code">U+002B</code>)) character punctuation may not exist as part of the variable name.
+ The only Unicode dash-like characters allowed as a "dash" are those intended to connect, such as the Unicode hyphens (<code class="code">U+2010</code> and <code class="code">U+2011</code>).
+ Unicode punctuation connector characters are supported just like <code class="code">_</code>, except when they connect outside the current line (such as <code class="code">U+FE33</code> <code class="code">︳</code>).
+ The immediate left of a <em class="em">Vocabulary</em> must not be a valid <em class="em">Vocabulary</em> character, unless the <em class="em">Vocabulary</em> is wrapped using the wrapping characters.
+ Unicode invisible punctuation (such as invisible plus: <code class="code">U+2064</code>) are not considered a punctuation in this standard (because they a zero-width characters), therefore they are not to be considered a valid <code class="code">_</code> (<code class="code">U+005F</code>), <code class="code">-</code> (<code class="code">U+002D</code>), or <code class="code">+</code> (<code class="code">U+002B</code>) Unicode equivalents.
+ </p>
+ <p class="p">
+ The wrapping characters characters are not part of the <em class="em">Vocabulary</em> name and instead only provide the syntax used to help identify a valid <em class="em">Variable</em>.
+ The wrapping characters characters are part of the <em class="em">Variable</em>.
The wrapping characters do not support escaping.
Both wrapping characters must be specified or neither.
</p>
<p class="p">
+ The <em class="em">Content</em> refers to the value of the <em class="em">Variable</em>.
+ The <em class="em">Content</em> is wrapped one of the following quote characters: single quote <code class="code">'</code> (<code class="code">U+0027</code>), double quote <code class="code">"</code> (<code class="code">U+0022</code>), or grave <code class="code">`</code> (<code class="code">U+0060</code>).
+ The <em class="em">Content</em> must escape any quotes that match the open and close quote used for the <em class="em">Variable</em> by utilizing a backslash <code class="code">\</code> (<code class="code">U+005C</code>).
+ If a matching closing quote is not found until the end of the data (or file), then this unclosed <em class="em">Variable</em> is considered invalid.
+ The handling of this erroneous case is left to the implementation.
+ </p>
+ <p class="p">
+ The backslashes used for escaping quotes use <code class="code">\</code> (<code class="code">U+005C</code>).
+ Unless otherwise specified, these backslash escapes are performed only when required and not unilaterally.
+ One backslash escapes the valid quote, resulting in the quote being part of the <em class="em">Content</em>.
+ Two backslashes escape the backslash, resulting in the backslash (but not the quote) being part of the <em class="em">Content</em>.
+ An odd number of backslashes before a valid quote results in the backslashes and the quote being escaped.
+ An even number of backslashes before a valid quote results in the backslashes but not the quote being escaped.
+ </p>
+ <p class="p">
The IKI format will use <code class="code">iki-0000</code> to represent an IKI with no explicitly defined vocabulary.
Whereas <code class="code">iki-0001</code> and beyond represent a specific IKI vocabulary.
</p>
<p class="p">
- A potential IKI variable name starts on word character or one of <code class="code">_</code> (<code class="code">U+005F</code>), <code class="code">-</code> (<code class="code">U+002D</code>), <code class="code">+</code> (<code class="code">U+002B</code>), <code class="code">[</code> (<code class="code">U+005B</code>).
- White space, non-word, and non <code class="code">_</code> (<code class="code">U+005F</code>), <code class="code">-</code> (<code class="code">U+002D</code>), <code class="code">+</code> (<code class="code">U+002B</code>) character punctuations may not exist as part of the variable name.
- The only Unicode dash-like characters allowed as a "dash" are those intended to connect, such as the Unicode hyphens (<code class="code">U+2010</code> and <code class="code">U+2011</code>).
+ Key:
</p>
+ <ul>
+ <li><code class="code">\o</code> = any printable word character, including <code class="code">_</code> (<code class="code">U+005F</code>), <code class="code">-</code> (<code class="code">U+002D</code>), <code class="code">+</code> (<code class="code">U+002B</code>) (and Unicode equivalents).</li>
+ <li><code class="code">\c</code> = any character, including white space and non-printing, and any escaped quote (used as the opening quote) or a any quote (unescaped) not used as the opening quote.</li>
+ <li><code class="code">\q</code> = either a single quote <code class="code">'</code> (<code class="code">U+0027</code>), a double quote <code class="code">"</code> (<code class="code">U+0022</code>), or a grave <code class="code">`</code> (<code class="code">U+0060</code>).</li>
+ <li><code class="code">\x</code> = any character.</li>
+ <li><code class="code">\W</code> = any non-word character, discluding <code class="code">_</code> (<code class="code">U+005F</code>) (and Unicode equivalents), <code class="code">-</code> (<code class="code">U+002D</code>) (and Unicode equivalents), and <code class="code">+</code> (<code class="code">U+002B</code>) (and Unicode equivalents).</li>
+ <li><code class="code">\e</code> = an optional escape sequence of any number of backslashes, such as <code class="code">\</code> (<code class="code">U+005C</code>).</li>
+ <li><code class="code">[</code> = a single (conditionally optional) open bracket, <code class="code">[</code> (<code class="code">U+005B</code>).</li>
+ <li><code class="code">]</code> = a single (conditionally optional) close bracket, <code class="code">]</code> (<code class="code">U+005D</code>).</li>
+ <li><code class="code">*</code> = zero or more occurrences.</li>
+ <li><code class="code">~</code> = one or more occurrences, or zero if at start of file.</li>
+ <li><code class="code">+</code> = one or more occurrences.</li>
+ <li><code class="code">:</code> = The colon <code class="code">:</code> (<code class="code">U+003A</code>).</li>
+ </ul>
<p class="p">
- Any potential IKI data must be escaped to make it treated as non-IKI data by prepending a backslash <code class="code">\</code> before the colon <code class="code">:</code> that is before the opening quote (single, double, or grave (backtick)). Potential IKI data refers to any valid IKI sequence without considering the closing single quote <code class="code">'</code> (<code class="code">U+0027</code>), closing double quote <code class="code">"</code> (<code class="code">U+0022</code>), or closing grave <code class="code">`</code> (<code class="code">U+0060</code>).
+ Before Structure:
</p>
+ <ul>
+ <li><code class="code">\x*\W~</code></li>
+ </ul>
<p class="p">
- Unicode punctuation connector characters are supported just like <code class="code">_</code>, except when they connect outside the current line (such as <code class="code">U+FE33</code> <code class="code">︳</code>).
- Unicode invisible punctuations (such as invisible plus: <code class="code">U+2064</code>) are not considered a punctuations in this standard (because they a zero-width characters), therefore they are not to be considered a valid <code class="code">_</code>, <code class="code">-</code>, or <code class="code">+</code> Unicode equivalents.
+ Structure:
+ </p>
+ <p class="p">
+ <li><code class="code">[\o+]\e:\q\c\q</code></li>
+ </p>
+ <p class="p">
+ After Structure:
+ </p>
+ <ul>
+ <li><code class="code"></code></li>
+ </ul>
+ <p class="p">
+ Example File:
+ </p><pre class="preserve">
+# fss-000c iki-0000
+
+This is my sentence, anything can go here but sometimes I want to italic:"emphasize some text".
+
+Other times I want to render a URL such as this example URL: url:'http://www.example.com/url with space/'.
+
+There are no comments, except for maybe the FSS:"Featureless Settings Specification" header (which would not resolve to any IKI syntax anyway).
+
+Quotes may be included, such as: code:"const char *string = \"My \\\"quoted\\\" C string.\";".
+
+The following italic\:"is escaped to not be treated as IKI Variable".
+
+The conditionally optional open and close brackets allow for putting a variable directly next to another word character like: [context]:"bold"this[context]:"bold".
+
+These are examples of escapes: one:"\" escape", two:"\\" escape", three:"\\\" escape", six:"\\\\\\" escape".
+
+These are examples of non-escapes: one:"\' escape", two:"\\' escape", three:"\\\' escape", six:"\\\\\\' escape".
+
+These slashes \ \\ \\\ are not escaped because there is now quote immediately after each of them.
+</pre>
+ <p class="p">
+ Example Results:
+ </p><pre class="preserve">
+Objects (also called vocabulary or variable name) would be:
+ 1.1) italic
+ 2.1) URL
+ 3.1) FSS
+ 4.1) code
+ 5.1) context
+ 6.1) context
+ 7.1) one
+ 8.1) two
+ 9.1) three
+ 10.1) six
+ 11.1) one
+ 12.1) two
+ 13.1) three
+ 14.1) six
+
+Contents (also called variable value) would be:
+ 1.1) emphasize some text
+ 2.1) http://www.example.com/url with space/
+ 3.1) Featureless Settings Specification
+ 4.1) const char *string = "My \"quoted\" C string.";
+ 5.1) bold
+ 6.1) bold
+ 7.1) " escape
+ 8.1) \
+ 9.1) \" escape
+ 10.1) \\\
+ 11.1) \' escape
+ 12.1) \\' escape
+ 13.1) \\\' escape
+ 14.1) \\\\\\' escape
+</pre>
+ <p class="p">
+ The following are core specifications (each with a common name associated with the specification number):
+ </p>
+ <ul>
+ <li><a href="fll/specifications/iki/iki-0000.html" class="link">iki-0000: Unrestricted</a></li>
+ <li><a href="fll/specifications/iki/iki-0001.html" class="link">iki-0001: Basic</a></li>
+ <li><a href="fll/specifications/iki/iki-0002.html" class="link">iki-0002: Simple Script</a></li>
+ </ul>
+ </div>
+ </section>
+
+ <section id="eki" class="section">
+ <header class="section-header header separate">
+ <h2 class="section-title h h2">EKI</h2>
+ </header>
+
+ <div class="section-content">
+ <p class="p">
+ The version date of this specification is <code class="code">2024/11/21</code>.
+ </p>
+ <p class="p">
+ The license (copyright) is <a href="licenses/oslv1.html" class="link">Open Standard License 1.0 or greater</a>.
+ </p>
+ <p class="p">
+ EKI is an extended EKI format that introduces the ability to have multiple variable names (<em class="em">Objects</em>) per variable value (<em class="em">Content</em>).
+ </p>
+ <p class="p">
+ The EKI syntax is identical to the EKI syntax and all of its rules apply except for the modification defined in this specification.
+ </p>
+ <p class="p">
+ This variable name, or <em class="em">Object</em>, now supports an additional character, <code class="code">:</code> (<code class="code">U+003A</code>), is used to separate each individual variable name.
+ Each variable name must follow the same requirements of a valid variable name as specified in the EKI specification.
+ Only the last <code class="code">:</code> (<code class="code">U+003A</code>) before the opening single quote (<code class="code">U+0027</code>), double quote (<code class="code">U+0022</code>), or grave (<code class="code">U+0060</code>) shall be a candidate for being escaped.
+ When this escape is in place of a valid EKI variable, then that would be variable is no longer considered an EKI variable.
</p>
<p class="p">
Key:
</p>
<ul>
<li><code class="code">\o</code> = any printable word character, including <code class="code">_</code>, <code class="code">-</code>, <code class="code">+</code> (and Unicode equivalents).</li>
+ <li><code class="code">\O</code> = any printable word character, including <code class="code">_</code>, <code class="code">-</code>, <code class="code">+</code> (and Unicode equivalents) followed by a colon <code class="code">:</code> (<code class="code">U+003A</code>) (cannot be only a colon by itself).</li>
<li><code class="code">\c</code> = any character, including white space and non-printing, and any delimited quote (used as the opening quote) or a any quote (undelimited) not used as the opening quote.</li>
<li><code class="code">\q</code> = either a single quote <code class="code">'</code> (<code class="code">U+0027</code>), a double quote <code class="code">"</code> (<code class="code">U+0022</code>), or a grave <code class="code">`</code> (<code class="code">U+0060</code>).</li>
<li><code class="code">\x</code> = any character.</li>
- <li><code class="code">\W</code> = any non-word character, discluding <code class="code">_</code>, <code class="code">-</code>, <code class="code">+</code> (and Unicode equivalents).</li>
- <li><code class="code">\e</code> = an optional escape sequence of any number of backslashes, such as <code class="code">\</code>.</li>
+ <li><code class="code">\W</code> = any non-word character, discluding <code class="code">_</code> (and Unicode equivalents), <code class="code">-</code> (and Unicode equivalents), <code class="code">+</code> (and Unicode equivalents), and colon <code class="code">:</code> (<code class="code">U+003A</code>).</li>
+ <li><code class="code">\e</code> = an optional escape sequence of any number of backslashes, such as <code class="code">\</code> (<code class="code">U+005C</code>).</li>
<li><code class="code">[</code> = a single conditionally optional open bracket, <code class="code">[</code> (<code class="code">U+005B</code>).</li>
<li><code class="code">]</code> = a single conditionally optional close bracket, <code class="code">]</code> (<code class="code">U+005D</code>).</li>
<li><code class="code">*</code> = zero or more occurrences.</li>
<li><code class="code">~</code> = one or more occurrences, or zero if at start of file.</li>
+ <li><code class="code">+</code> = one or more occurrences.</li>
+ <li><code class="code">:</code> = The colon <code class="code">:</code> (<code class="code">U+003A</code>).</li>
</ul>
<p class="p">
Before Structure:
</p>
<ul>
- <li><code class="code">\x*\W~\*:*</code></li>
+ <li><code class="code">\x*\W~</code></li>
</ul>
<p class="p">
Structure:
</p>
<ul>
- <li><code class="code">\o\e:\q\c\q</code></li>
+ <li><code class="code">[\O*\o+]\e:\q\c\q</code></li>
</ul>
<p class="p">
After Structure:
<p class="p">
Example File:
</p><pre class="preserve">
-# fss-000c iki-0000
+# fss-000c eki-0000
+
+This is my sentence, anything can go here but sometimes I want to italic:"emphasize some text".
+
+Other times I want to render a URL with bold such as this example URL: bold:url:'http://www.example.com/url with space/'.
-This is my sentence, anything can go here but sometimes I want to italic\:"emphasize some text".
+There are no comments, except for maybe the FSS:"Featureless Settings Specification" header (which would not resolve to any EKI syntax anyway).
-Other times I want to render a url such as this example url: url\:'http://www.example.com/url with space/'.
+Quotes may be included, such as: code:"const char *string = \"My \\\"quoted\\\" C string.\";".
-There are no comments, except for maybe the FSS\:"Featureless Settings Specification" header (which would not resolve to any IKI syntax anyway).
+The following bold:italic\:"is escaped to not be treated as EKI data".
-Quotes may be included, such as: code\:"const char *string = \"My \\\"quoted\\\" C string.\";".
+The conditionally optional open and close brackets allow for putting a variable directly next to another word character like: [context]:"bold"this[context]:"bold".
-The following italic\:"is escaped to not be treated as IKI data".
+Multiple Objects within a bracket is also valid, like: before[bold:context]:"important"after.
-The conditionally optional open and close brackets allow for putting a variable directly next to another word character like: [context]\:"strong"this[context]\:"strong".
+These are examples of escapes: one:"\" escape", two:"\\" escape", three:"\\\" escape", six:"\\\\\\" escape".
+
+These are examples of non-escapes: one:"\' escape", two:"\\' escape", three:"\\\' escape", six:"\\\\\\' escape".
+
+These slashes \ \\ \\\ are not escaped because there is now quote immediately after each of them.
</pre>
<p class="p">
Example Results:
</p><pre class="preserve">
Objects (also called vocabulary or variable name) would be:
- 1) italic
- 2) url
- 3) FSS
- 4) code
- 5) italic
- 6) context
- 7) context
+ 1.1) italic
+ 2.1) bold
+ 2.2) URL
+ 3.1) FSS
+ 4.1) code
+ 5.1) context
+ 6.1) context
+ 7.1) bold
+ 7.2) context
+ 8.1) one
+ 9.1) two
+ 10.1) three
+ 11.1) six
+ 12.1) one
+ 13.1) two
+ 14.1) three
+ 15.1) six
Contents (also called variable value) would be:
- 1.1) emphasize some text
- 2.1) http://www.example.com/url with space/
- 3.1) Featureless Settings Specification
- 4.1) const char *string = "My \"quoted\" C string.";
- 5.1) is escaped to not be treated as IKI data
- 6.1) strong
- 7.1) strong
+ 1.1) emphasize some text
+ 2.1) http://www.example.com/url with space/
+ 3.1) Featureless Settings Specification
+ 4.1) const char *string = "My \"quoted\" C string.";
+ 5.1) bold
+ 6.1) bold
+ 7.1) important
+ 8.1) " escape
+ 9.1) \\
+ 10.1) \" escape
+ 11.1) \\\
+ 12.1) \' escape
+ 13.1) \\' escape
+ 14.1) \\\' escape
+ 15.1) \\\\\\' escape
</pre>
<p class="p">
The following are core specifications (each with a common name associated with the specification number):
</p>
<ul>
- <li><a href="fll/specifications/iki/iki-0000.html" class="link">iki-0000: Unrestricted</a></li>
- <li><a href="fll/specifications/iki/iki-0001.html" class="link">iki-0001: Basic</a></li>
- <li><a href="fll/specifications/iki/iki-0002.html" class="link">iki-0002: Simple Script</a></li>
+ <li><a href="fll/specifications/eki/eki-0000.html" class="link">eki-0000: Unrestricted</a></li>
+ <li><a href="fll/specifications/eki/eki-0001.html" class="link">eki-0001: Basic</a></li>
</ul>
</div>
</section>
<div class="section-content">
<p class="p">
- The <abbr title="Featureless Settings Specifications">FSS</abbr> and the <strong class="strong">IKI</strong> are not the only standards provided by the <abbr title="Featureless Linux Library">FLL</abbr>.
+ The <abbr title="Featureless Settings Specifications">FSS</abbr>, <strong class="strong">IKI</strong> and <strong class="strong">EKI</strong> are not the only standards provided by the <abbr title="Featureless Linux Library">FLL</abbr>.
</p>
<p class="p">
The following are other specifications that are provided:
--- /dev/null
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+ <title>FLL - Specifications - EKI-0000 (Unrestricted)</title>
+
+ <base href="../../../">
+
+ <meta charset="UTF-8">
+ <meta name="author" content="Kevin Day">
+ <meta name="description" content="Featurless Linux Library Specifications">
+ <meta name="keywords" content="Kevin Day, Kevux, FLL, Featureless, Linux, Library, Distribution, Open-Source, specification, standard, eki-0000, unrestricted">
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+ <link type="text/css" rel="stylesheet" media="all" href="css/kevux.css">
+ <link type="text/css" rel="stylesheet" media="only screen" href="css/kevux-screen.css">
+ <link type="text/css" rel="stylesheet" media="only screen and (min-device-width:501px)" href="css/kevux-screen-desktop.css">
+ <link type="text/css" rel="stylesheet" media="only screen and (max-device-width:500px)" href="css/kevux-screen-mobile.css">
+ <link type="text/css" rel="stylesheet" media="only screen and (min-device-width:1201px)" href="css/kevux-screen-large.css">
+ <link type="text/css" rel="stylesheet" media="only screen and (min-device-width:501px) and (max-device-width:1200px)" href="css/kevux-screen-normal.css">
+ <link type="text/css" rel="stylesheet" media="only screen and (min-device-width:251px) and (max-device-width:500px)" href="css/kevux-screen-small.css">
+ <link type="text/css" rel="stylesheet" media="only screen and (max-device-width:250px)" href="css/kevux-screen-tiny.css">
+ <link type="text/css" rel="stylesheet" media="only print" href="css/kevux-print.css">
+ <link type="text/css" rel="stylesheet" media="only print and (orientation:landscape)" href="css/kevux-print-landscape.css">
+ <link type="text/css" rel="stylesheet" media="only print and (orientation:portrait)" href="css/kevux-print-portrait.css">
+
+ <link rel="canonical" href="fll/specifications/eki/eki-0000.html">
+ <link type="image/x-icon" rel="icon" href="images/kevux.ico">
+ <link type="image/x-icon" rel="shortcut" href="images/kevux.ico">
+ <link type="text/html" rel="license" href="licenses.html">
+ <link type="text/html" rel="next" href="fll/specifications/eki/eki-0001.html">
+ </head>
+
+ <body id="kevux" class="kevux no-js fll specifications">
+ <div role="banner" class="header-block">
+ <header class="header-section header">
+ <div class="header-site">Kevux Systems and Software</div>
+ </header>
+
+ <div class="nav-block">
+ <nav id="kevux-site-nav" class="nav-menu">
+ <div class="nav-item"><a href="news.html" class="nav-text link">News</a></div>
+ <div class="nav-item"><a href="distributions.html" class="nav-text link">Distributions</a></div>
+ <div class="nav-item active"><a href="fll.html" class="nav-text link">FLL</a></div>
+ <div class="nav-item"><a href="projects.html" class="nav-text link">Projects</a></div>
+ <div class="nav-item"><a href="documentation.html" class="nav-text link">Documentation</a></div>
+ </nav>
+ </div>
+ </div>
+
+ <div class="content-block">
+ <div id="nav-expanded" class="nav-block">
+ <nav id="kevux-document-nav" class="nav-menu">
+ <div class="nav-item block back">
+ <a href="fll/specifications.html" class="nav-text link back">Back</a>
+ </div>
+ <div class="nav-item block highlight unlink">
+ <div class="nav-text notice">FLL Specification</div>
+ <div class="nav-text unlink">EKI</div>
+ </div>
+ <div class="nav-item block">
+ <a href="fll/specifications/eki/eki-0000.html#eki-0000" class="nav-text link"><div>EKI-0000</div><div>(Unrestricted)</div></a>
+ </div>
+ <div class="nav-item block">
+ <a href="fll/specifications/eki/eki-0000.html#common" class="nav-text link">Common Specification Rules</a>
+ </div>
+ <div class="nav-item block ellipses">
+ <a href="fll/specifications/eki/eki-0000.html#nav-expanded" class="nav-text link open" title="Expand Menu">…</a>
+ <a href="fll/specifications/eki/eki-0000.html" class="nav-text link close">Collapse Menu</a>
+ </div>
+ </nav>
+ </div>
+
+ <div role="document" class="main-block">
+ <main class="main">
+ <header class="section-header header">
+ <h1 class="section-title h h1">Featureless Linux Library Specification</h1>
+ </header>
+
+ <section id="eki-0000" class="section">
+ <header class="section-header header">
+ <h2 class="section-title h h2">EKI-0000 (Unrestricted)</h2>
+ </header>
+
+ <div class="section-content">
+ <p class="p">
+ The version date of this specification is <code class="code">2024/11/03</code>.
+ </p>
+ <p class="p">
+ This specification provides no restrictions on the vocabulary.
+ </p>
+ </div>
+ </section>
+
+ <section id="common" class="section">
+ <header class="section-header header separate">
+ <h2 class="section-title h h2">Common Specification Rules</h2>
+ </header>
+
+ <div class="section-content">
+ <p class="p">
+ EKI is an extended EKI format that introduces the ability to have multiple variable names (<em class="em">Objects</em>) per variable value (<em class="em">Content</em>).
+ </p>
+ <p class="p">
+ The EKI syntax is identical to the EKI syntax and all of its rules apply except for the modification defined in this specification.
+ </p>
+ <p class="p">
+ This variable name, or <em class="em">Object</em>, now supports an additional character, <code class="code">:</code> (<code class="code">U+003A</code>), is used to separate each individual variable name.
+ Each variable name must follow the same requirements of a valid variable name as specified in the EKI specification.
+ Only the last <code class="code">:</code> (<code class="code">U+003A</code>) before the opening single quote (<code class="code">U+0027</code>), double quote (<code class="code">U+0022</code>), or grave (<code class="code">U+0060</code>) shall be a candidate for being escaped.
+ When this escape is in place of a valid EKI variable, then that would be variable is no longer considered an EKI variable.
+ </p>
+ <p class="p">
+ Key:
+ </p>
+ <ul>
+ <li><code class="code">\o</code> = any printable word character, including <code class="code">_</code>, <code class="code">-</code>, <code class="code">+</code> (and Unicode equivalents).</li>
+ <li><code class="code">\O</code> = any printable word character, including <code class="code">_</code>, <code class="code">-</code>, <code class="code">+</code> (and Unicode equivalents) followed by a colon <code class="code">:</code> (<code class="code">U+003A</code>) (cannot be only a colon by itself).</li>
+ <li><code class="code">\c</code> = any character, including white space and non-printing, and any delimited quote (used as the opening quote) or a any quote (undelimited) not used as the opening quote.</li>
+ <li><code class="code">\q</code> = either a single quote <code class="code">'</code> (<code class="code">U+0027</code>), a double quote <code class="code">"</code> (<code class="code">U+0022</code>), or a grave <code class="code">`</code> (<code class="code">U+0060</code>).</li>
+ <li><code class="code">\x</code> = any character.</li>
+ <li><code class="code">\W</code> = any non-word character, discluding <code class="code">_</code> (and Unicode equivalents), <code class="code">-</code> (and Unicode equivalents), <code class="code">+</code> (and Unicode equivalents), and colon <code class="code">:</code> (<code class="code">U+003A</code>).</li>
+ <li><code class="code">\e</code> = an optional escape sequence of any number of backslashes, such as <code class="code">\</code> (<code class="code">U+005C</code>).</li>
+ <li><code class="code">[</code> = a single conditionally optional open bracket, <code class="code">[</code> (<code class="code">U+005B</code>).</li>
+ <li><code class="code">]</code> = a single conditionally optional close bracket, <code class="code">]</code> (<code class="code">U+005D</code>).</li>
+ <li><code class="code">*</code> = zero or more occurrences.</li>
+ <li><code class="code">~</code> = one or more occurrences, or zero if at start of file.</li>
+ <li><code class="code">+</code> = one or more occurrences.</li>
+ <li><code class="code">:</code> = The colon <code class="code">:</code> (<code class="code">U+003A</code>).</li>
+ </ul>
+ <p class="p">
+ Before Structure:
+ </p>
+ <ul>
+ <li><code class="code">\x*\W~</code></li>
+ </ul>
+ <p class="p">
+ Structure:
+ </p>
+ <ul>
+ <li><code class="code">[\O*\o+]\e:\q\c\q</code></li>
+ </ul>
+ <p class="p">
+ After Structure:
+ </p>
+ <ul>
+ <li><code class="code"></code></li>
+ </ul>
+ <p class="p">
+ Example File:
+ </p><pre class="preserve">
+# fss-000c eki-0000
+
+This is my sentence, anything can go here but sometimes I want to italic:"emphasize some text".
+
+Other times I want to render a URL with bold such as this example URL: bold:url:'http://www.example.com/url with space/'.
+
+There are no comments, except for maybe the FSS:"Featureless Settings Specification" header (which would not resolve to any EKI syntax anyway).
+
+Quotes may be included, such as: code:"const char *string = \"My \\\"quoted\\\" C string.\";".
+
+The following bold:italic\:"is escaped to not be treated as EKI data".
+
+The conditionally optional open and close brackets allow for putting a variable directly next to another word character like: [context]:"bold"this[context]:"bold".
+
+Multiple Objects within a bracket is also valid, like: before[bold:context]:"important"after.
+
+These are examples of escapes: one:"\" escape", two:"\\" escape", three:"\\\" escape", six:"\\\\\\" escape".
+
+These are examples of non-escapes: one:"\' escape", two:"\\' escape", three:"\\\' escape", six:"\\\\\\' escape".
+
+These slashes \ \\ \\\ are not escaped because there is now quote immediately after each of them.
+</pre>
+ <p class="p">
+ Example Results:
+ </p><pre class="preserve">
+Objects (also called vocabulary or variable name) would be:
+ 1.1) italic
+ 2.1) bold
+ 2.2) URL
+ 3.1) FSS
+ 4.1) code
+ 5.1) context
+ 6.1) context
+ 7.1) bold
+ 7.2) context
+ 8.1) one
+ 9.1) two
+ 10.1) three
+ 11.1) six
+ 12.1) one
+ 13.1) two
+ 14.1) three
+ 15.1) six
+
+Contents (also called variable value) would be:
+ 1.1) emphasize some text
+ 2.1) http://www.example.com/url with space/
+ 3.1) Featureless Settings Specification
+ 4.1) const char *string = "My \"quoted\" C string.";
+ 5.1) bold
+ 6.1) bold
+ 7.1) important
+ 8.1) " escape
+ 9.1) \\
+ 10.1) \" escape
+ 11.1) \\\
+ 12.1) \' escape
+ 13.1) \\' escape
+ 14.1) \\\' escape
+ 15.1) \\\\\\' escape
+</pre>
+ </div>
+ </section>
+ </main>
+ </div>
+ </div>
+ </body>
+</html>
--- /dev/null
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+ <title>FLL - Specifications - EKI-0001 (Basic)</title>
+
+ <base href="../../../">
+
+ <meta charset="UTF-8">
+ <meta name="author" content="Kevin Day">
+ <meta name="description" content="Featurless Linux Library Specifications">
+ <meta name="keywords" content="Kevin Day, Kevux, FLL, Featureless, Linux, Library, Distribution, Open-Source, specification, standard, eki-0001, basic">
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+ <link type="text/css" rel="stylesheet" media="all" href="css/kevux.css">
+ <link type="text/css" rel="stylesheet" media="only screen" href="css/kevux-screen.css">
+ <link type="text/css" rel="stylesheet" media="only screen and (min-device-width:501px)" href="css/kevux-screen-desktop.css">
+ <link type="text/css" rel="stylesheet" media="only screen and (max-device-width:500px)" href="css/kevux-screen-mobile.css">
+ <link type="text/css" rel="stylesheet" media="only screen and (min-device-width:1201px)" href="css/kevux-screen-large.css">
+ <link type="text/css" rel="stylesheet" media="only screen and (min-device-width:501px) and (max-device-width:1200px)" href="css/kevux-screen-normal.css">
+ <link type="text/css" rel="stylesheet" media="only screen and (min-device-width:251px) and (max-device-width:500px)" href="css/kevux-screen-small.css">
+ <link type="text/css" rel="stylesheet" media="only screen and (max-device-width:250px)" href="css/kevux-screen-tiny.css">
+ <link type="text/css" rel="stylesheet" media="only print" href="css/kevux-print.css">
+ <link type="text/css" rel="stylesheet" media="only print and (orientation:landscape)" href="css/kevux-print-landscape.css">
+ <link type="text/css" rel="stylesheet" media="only print and (orientation:portrait)" href="css/kevux-print-portrait.css">
+
+ <link rel="canonical" href="fll/specifications/eki/eki-0001.html">
+ <link type="image/x-icon" rel="icon" href="images/kevux.ico">
+ <link type="image/x-icon" rel="shortcut" href="images/kevux.ico">
+ <link type="text/html" rel="license" href="licenses.html">
+ <link type="text/html" rel="prev" href="fll/specifications/eki/eki-0000.html">
+ </head>
+
+ <body id="kevux" class="kevux no-js fll specifications">
+ <div role="banner" class="header-block">
+ <header class="header-section header">
+ <div class="header-site">Kevux Systems and Software</div>
+ </header>
+
+ <div class="nav-block">
+ <nav id="kevux-site-nav" class="nav-menu">
+ <div class="nav-item"><a href="news.html" class="nav-text link">News</a></div>
+ <div class="nav-item"><a href="distributions.html" class="nav-text link">Distributions</a></div>
+ <div class="nav-item active"><a href="fll.html" class="nav-text link">FLL</a></div>
+ <div class="nav-item"><a href="projects.html" class="nav-text link">Projects</a></div>
+ <div class="nav-item"><a href="documentation.html" class="nav-text link">Documentation</a></div>
+ </nav>
+ </div>
+ </div>
+
+ <div class="content-block">
+ <div id="nav-expanded" class="nav-block">
+ <nav id="kevux-document-nav" class="nav-menu">
+ <div class="nav-item block back">
+ <a href="fll/specifications.html" class="nav-text link back">Back</a>
+ </div>
+ <div class="nav-item block highlight unlink">
+ <div class="nav-text notice">FLL Specification</div>
+ <div class="nav-text unlink">EKI</div>
+ </div>
+ <div class="nav-item block">
+ <a href="fll/specifications/eki/eki-0001.html#eki-0001" class="nav-text link"><div>EKI-0001</div><div>(Basic)</div></a>
+ </div>
+ <div class="nav-item block">
+ <a href="fll/specifications/eki/eki-0001.html#common" class="nav-text link">Common Specification Rules</a>
+ </div>
+ <div class="nav-item block ellipses">
+ <a href="fll/specifications/eki/eki-0001.html#nav-expanded" class="nav-text link open" title="Expand Menu">…</a>
+ <a href="fll/specifications/eki/eki-0001.html" class="nav-text link close">Collapse Menu</a>
+ </div>
+ </nav>
+ </div>
+
+ <div role="document" class="main-block">
+ <main class="main">
+ <header class="section-header header">
+ <h1 class="section-title h h1">Featureless Linux Library Specification</h1>
+ </header>
+
+ <section id="eki-0001" class="section">
+ <header class="section-header header">
+ <h2 class="section-title h h2">EKI-0001 (Basic)</h2>
+ </header>
+
+ <div class="section-content">
+ <p class="p">
+ The version date of this specification is <code class="code">2024/11/03</code>.
+ </p>
+ <p class="p">
+ This specification provides a small set of vocabulary names meant to be associated with common uses, such as e-mail addresses and Uniform Resource Locators.
+ </p>
+ <p class="p">
+ Vocabulary:
+ </p>
+ <dl class="dl">
+ <div class="di">
+ <dt class="dt">address</dt>
+ <dd class="dd">Any mailing address, except for e-mail and <abbr title="Uniform Resource Identifier">URI</abbr>.</dd>
+ </div>
+ <div class="di">
+ <dt class="dt">code</dt>
+ <dd class="dd">All text contained within represent code and should be presented as such.</dd>
+ </div>
+ <div class="di">
+ <dt class="dt">email</dt>
+ <dd class="dd">Any valid e-mail address.</dd>
+ </div>
+ <div class="di">
+ <dt class="dt">phone</dt>
+ <dd class="dd">Any valid phone number.</dd>
+ </div>
+ <div class="di">
+ <dt class="dt">quote</dt>
+ <dd class="dd">All text within represents some quote.</dd>
+ </div>
+ <div class="di">
+ <dt class="dt">uri</dt>
+ <dd class="dd">Any valid <abbr title="Uniform Resource Identifier">URI</abbr> (allows <abbr title="Uniform Resource Locator">URL</abbr> and <abbr title="Uniform Resource Name">URN</abbr>).</dd>
+ </div>
+ <div class="di">
+ <dt class="dt">url</dt>
+ <dd class="dd">Any valid <abbr title="Uniform Resource Locator">URL</abbr>.</dd>
+ </div>
+ <div class="di">
+ <dt class="dt">urn</dt>
+ <dd class="dd">Any valid <abbr title="Uniform Resource Name">URN</abbr>.</dd>
+ </div>
+ <div class="di">
+ <dt class="dt">var</dt>
+ <dd class="dd">All text contained within represents some sort of variable.</dd>
+ </div>
+ </dl>
+ </div>
+ </section>
+
+ <section id="common" class="section">
+ <header class="section-header header separate">
+ <h2 class="section-title h h2">Common Specification Rules</h2>
+ </header>
+
+ <div class="section-content">
+ <p class="p">
+ EKI is an extended EKI format that introduces the ability to have multiple variable names (<em class="em">Objects</em>) per variable value (<em class="em">Content</em>).
+ </p>
+ <p class="p">
+ The EKI syntax is identical to the EKI syntax and all of its rules apply except for the modification defined in this specification.
+ </p>
+ <p class="p">
+ This variable name, or <em class="em">Object</em>, now supports an additional character, <code class="code">:</code> (<code class="code">U+003A</code>), is used to separate each individual variable name.
+ Each variable name must follow the same requirements of a valid variable name as specified in the EKI specification.
+ Only the last <code class="code">:</code> (<code class="code">U+003A</code>) before the opening single quote (<code class="code">U+0027</code>), double quote (<code class="code">U+0022</code>), or grave (<code class="code">U+0060</code>) shall be a candidate for being escaped.
+ When this escape is in place of a valid EKI variable, then that would be variable is no longer considered an EKI variable.
+ </p>
+ <p class="p">
+ Key:
+ </p>
+ <ul>
+ <li><code class="code">\o</code> = any printable word character, including <code class="code">_</code>, <code class="code">-</code>, <code class="code">+</code> (and Unicode equivalents).</li>
+ <li><code class="code">\O</code> = any printable word character, including <code class="code">_</code>, <code class="code">-</code>, <code class="code">+</code> (and Unicode equivalents) followed by a colon <code class="code">:</code> (<code class="code">U+003A</code>) (cannot be only a colon by itself).</li>
+ <li><code class="code">\c</code> = any character, including white space and non-printing, and any delimited quote (used as the opening quote) or a any quote (undelimited) not used as the opening quote.</li>
+ <li><code class="code">\q</code> = either a single quote <code class="code">'</code> (<code class="code">U+0027</code>), a double quote <code class="code">"</code> (<code class="code">U+0022</code>), or a grave <code class="code">`</code> (<code class="code">U+0060</code>).</li>
+ <li><code class="code">\x</code> = any character.</li>
+ <li><code class="code">\W</code> = any non-word character, discluding <code class="code">_</code> (and Unicode equivalents), <code class="code">-</code> (and Unicode equivalents), <code class="code">+</code> (and Unicode equivalents), and colon <code class="code">:</code> (<code class="code">U+003A</code>).</li>
+ <li><code class="code">\e</code> = an optional escape sequence of any number of backslashes, such as <code class="code">\</code> (<code class="code">U+005C</code>).</li>
+ <li><code class="code">[</code> = a single conditionally optional open bracket, <code class="code">[</code> (<code class="code">U+005B</code>).</li>
+ <li><code class="code">]</code> = a single conditionally optional close bracket, <code class="code">]</code> (<code class="code">U+005D</code>).</li>
+ <li><code class="code">*</code> = zero or more occurrences.</li>
+ <li><code class="code">~</code> = one or more occurrences, or zero if at start of file.</li>
+ <li><code class="code">+</code> = one or more occurrences.</li>
+ <li><code class="code">:</code> = The colon <code class="code">:</code> (<code class="code">U+003A</code>).</li>
+ </ul>
+ <p class="p">
+ Before Structure:
+ </p>
+ <ul>
+ <li><code class="code">\x*\W~</code></li>
+ </ul>
+ <p class="p">
+ Structure:
+ </p>
+ <ul>
+ <li><code class="code">[\O*\o+]\e:\q\c\q</code></li>
+ </ul>
+ <p class="p">
+ After Structure:
+ </p>
+ <ul>
+ <li><code class="code"></code></li>
+ </ul>
+ <p class="p">
+ Example File:
+ </p><pre class="preserve">
+# fss-000c eki-0000
+
+This is my sentence, anything can go here but sometimes I want to italic:"emphasize some text".
+
+Other times I want to render a URL with bold such as this example URL: bold:url:'http://www.example.com/url with space/'.
+
+There are no comments, except for maybe the FSS:"Featureless Settings Specification" header (which would not resolve to any EKI syntax anyway).
+
+Quotes may be included, such as: code:"const char *string = \"My \\\"quoted\\\" C string.\";".
+
+The following bold:italic\:"is escaped to not be treated as EKI data".
+
+The conditionally optional open and close brackets allow for putting a variable directly next to another word character like: [context]:"bold"this[context]:"bold".
+
+Multiple Objects within a bracket is also valid, like: before[bold:context]:"important"after.
+
+These are examples of escapes: one:"\" escape", two:"\\" escape", three:"\\\" escape", six:"\\\\\\" escape".
+
+These are examples of non-escapes: one:"\' escape", two:"\\' escape", three:"\\\' escape", six:"\\\\\\' escape".
+
+These slashes \ \\ \\\ are not escaped because there is now quote immediately after each of them.
+</pre>
+ <p class="p">
+ Example Results:
+ </p><pre class="preserve">
+Objects (also called vocabulary or variable name) would be:
+ 1.1) italic
+ 2.1) bold
+ 2.2) URL
+ 3.1) FSS
+ 4.1) code
+ 5.1) context
+ 6.1) context
+ 7.1) bold
+ 7.2) context
+ 8.1) one
+ 9.1) two
+ 10.1) three
+ 11.1) six
+ 12.1) one
+ 13.1) two
+ 14.1) three
+ 15.1) six
+
+Contents (also called variable value) would be:
+ 1.1) emphasize some text
+ 2.1) http://www.example.com/url with space/
+ 3.1) Featureless Settings Specification
+ 4.1) const char *string = "My \"quoted\" C string.";
+ 5.1) bold
+ 6.1) bold
+ 7.1) important
+ 8.1) " escape
+ 9.1) \\
+ 10.1) \" escape
+ 11.1) \\\
+ 12.1) \' escape
+ 13.1) \\' escape
+ 14.1) \\\' escape
+ 15.1) \\\\\\' escape
+</pre>
+ </div>
+ </section>
+ </main>
+ </div>
+ </div>
+ </body>
+</html>
<p class="p">
Each Object starts at the beginning of a line and white space to the left of the Object is not treated as part of the object.
White space separates an Object from the Content.
- An Object may be preceded by a newline, in which case means that the Object has no Content.
+ An Object may be preceded by a new line character, in which case means that the Object has no Content.
If only printing white spaces or non-printable characters follow a valid Object, then that Object is considered to have no Content.
- An Object may be quoted to include whitespace where a single quote <code class="code">'</code> (<code class="code">U+0027</code>), a double quote <code class="code">"</code> (<code class="code">U+0022</code>), or a grave <code class="code">`</code> (<code class="code">U+0060</code>) are used to quote.
+ An Object may be quoted to include white space where a single quote <code class="code">'</code> (<code class="code">U+0027</code>), a double quote <code class="code">"</code> (<code class="code">U+0022</code>), or a grave <code class="code">`</code> (<code class="code">U+0060</code>) are used to quote.
+ An Object is only considered quoted if the first and last character of the Object are the same quote.
+ Any quote characters in a non-quoted Object are treated as part of the Object rather than as a quote.
+ An Object that properly starts with a quote character but is not properly terminated before the new line is reached is considered to be an Object terminating at the end of the line.
+ A quoted Objected terminating at the new line in this way preserves the quotes as part of the Object.
</p>
<p class="p">
Content exists on the same line as the Object.
- Content is represented as a single Content column terminated by a newline.
- Content column consists of everything following the first non-white space character until the newline.
- Content column includes trailing white space before newline is reached.
+ Content is represented as a single Content column terminated by a new line.
+ Content column consists of everything following the first non-white space character until the new line.
+ Content column includes trailing white space before new line is reached.
Content column does not include any of the leading white space.
No delimits are supported in the Content.
</p>
Key:
</p>
<ul>
- <li><code class="code">\s</code> = White space, except newline.</li>
- <li><code class="code">\b</code> = Either white space or printable, except newline.</li>
- <li><code class="code">\q</code> = Non-white space or quoted white space (and non-whitespace) with no white space outside of the quotes.</li>
- <li><code class="code">\n</code> = Newline.</li>
+ <li><code class="code">\s</code> = White space, except new line.</li>
+ <li><code class="code">\b</code> = Either white space or printable, except new line.</li>
+ <li><code class="code">\q</code> = Non-white space or quoted white space (and non-white space) with no white space outside of the quotes.</li>
+ <li><code class="code">\n</code> = New line.</li>
<li><code class="code">*</code> = Zero or more occurrences.</li>
<li><code class="code">+</code> = One or more occurrences.</li>
</ul>
</p>
<ul>
<li><code class="code"></code></li>
- </ul>
- <p class="p">
- Example:
- </p><pre class="preserve">
-# fss-0000
-# valid comments are ignored.
-"The Object" Content until newline.
-Second object set.
+ </ul><pre class="preserve">
+Example:
+ # fss-0000
+ # valid comments are ignored.
+ "The Object" Content until new line.
+ Second object set.
</pre>
<p class="p">
Example Result:
2) Second
Content would be:
- 1.1) Content until newline.
+ 1.1) Content until new line.
2.1) object set.
</pre>
</div>
<p class="p">
Each Object starts at the beginning of a line and white space to the left of the Object is not treated as an object.
White space separates an Object from the Content.
- An Object may be followed by a newline, in which case means that the Object has no Content.
+ An Object may be followed by a new line, in which case means that the Object has no Content.
If only printing white spaces or non-printable characters follow a valid Object, then that Object is considered to have no Content.
- An Object may be quoted to include whitespace where a single quote <code class="code">'</code> (<code class="code">U+0027</code>), a double quote <code class="code">"</code> (<code class="code">U+0022</code>), or a grave <code class="code">`</code> (<code class="code">U+0060</code>) are used to quote.
+ An Object may be quoted to include white space where a single quote <code class="code">'</code> (<code class="code">U+0027</code>), a double quote <code class="code">"</code> (<code class="code">U+0022</code>), or a grave <code class="code">`</code> (<code class="code">U+0060</code>) are used to quote.
+ An Object is only considered quoted if the first and last character of the Object are the same quote.
+ Any quote characters in a non-quoted Object are treated as part of the Object rather than as a quote.
+ An Object that properly starts with a quote character but is not properly terminated before the new line is reached is considered to be an Object terminating at the end of the line.
+ A quoted Objected terminating at the new line in this way preserves the quotes as part of the Object.
</p>
<p class="p">
Content exists on the same line as the Object.
Content is represented as multiple Content columns.
- Content columns are white space separated parts within the Content and terminated by a newline.
- Any number of Content columns may exist in the Content until the newline is reached.
+ Content columns are white space separated parts within the Content and terminated by a new line.
+ Any number of Content columns may exist in the Content until the new line is reached.
+ Content follows the same quoting rules as an Object.
</p>
<p class="p">
Key:
</p>
<ul>
- <li><code class="code">\s</code> = White space, except newline.</li>
- <li><code class="code">\b</code> = Either white space or printable, except newline.</li>
- <li><code class="code">\q</code> = Non-white space or quoted white space (and non-whitespace) with no white space outside of the quotes.</li>
- <li><code class="code">\n</code> = Newline.</li>
+ <li><code class="code">\s</code> = White space, except new line.</li>
+ <li><code class="code">\b</code> = Either white space or printable, except new line.</li>
+ <li><code class="code">\q</code> = Non-white space or quoted white space (and non-white space) with no white space outside of the quotes.</li>
+ <li><code class="code">\n</code> = New line.</li>
<li><code class="code">*</code> = Zero or more occurrences.</li>
<li><code class="code">+</code> = One or more occurrences.</li>
<li><code class="code">()*</code> = Grouping that repeats zero or more times.</li>
</ul>
<p class="p">
Example:
- </p><pre class="preserve">
+ </p>
+ <pre class="preserve">
# fss-0001
# valid comments are ignored.
"The Object" Content "content 2" content_3.
<div class="section-content">
<p class="p">
- The version date of this specification is <code class="code">2024/01/15</code>.
+ The version date of this specification is <code class="code">2024/08/30</code>.
</p>
<p class="p">
- Each Object starts at the beginning of a line and white space to the left of the Object is not treated as an object.
- A colon <code class="code">:</code> (<code class="code">U+003A</code>) followed by any white space until a newline terminates a valid Object.
+ Each Object starts at the beginning of a line and white space to the left of the Object is not treated as an Object.
+ A colon <code class="code">:</code> (<code class="code">U+003A</code>) followed by any white space until a new line terminates a valid Object.
+ White space after the last printable character of the Object but before the colon <code class="code">:</code> (<code class="code">U+003A</code>) is not considered part of the Object.
Non-white space printable characters may not follow the colon 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.
</p>
<p class="p">
- Content is represented as a single Content column of every line following a valid object until the end of file (or string) or until the next valid Object is found.
+ Content is represented as a single Content column of every line following a valid Object until the end of file (or string) or until the next valid Object is found.
Any Content that could be interpreted as a valid Object must have the colon delimited.
</p>
<p class="p">
- There is no single-quote, double-quote, or grave delimitation in this specification.
+ There is no single-quote (<code class="code">U+0027</code>), double-quote (<code class="code">U+0022</code>), or grave (<code class="code">U+0060</code>) delimitation in this specification.
Only a colon <code class="code">:</code> (<code class="code">U+003A</code>) that would result in a valid Object can be delimited.
</p>
<p class="p">
- Empty Objects are allowed, that is, the length of the object may be zero.
+ Empty Objects are allowed, that is, the length of the Object may be zero.
</p>
<p class="p">
Key:
</p>
<ul>
- <li><code class="code">\s</code> = White space, except newline.</li>
+ <li><code class="code">\s</code> = White space, except new line.</li>
<li><code class="code">\o</code> = Any printable character, except unescaped <code class="code">:</code> (<code class="code">U+003A</code>).</li>
- <li><code class="code">\l</code> = Any printable character or white space, except unescaped <code class="code">:</code> (<code class="code">U+003A</code>).</li>
- <li><code class="code">\c</code> = either white space or printable, including newline, that not interpretable as an Object.</li>
- <li><code class="code">\n</code> = Newline.</li>
+ <li><code class="code">\c</code> = Either white space or printable, including new line, that not interpretable as an Object.</li>
+ <li><code class="code">\n</code> = New line.</li>
<li><code class="code">*</code> = Zero or more occurrences.</li>
</ul>
<p class="p">
Structure:
</p>
<ul>
- <li><code class="code">\s*\o\l*:\s*\n\c*\n*</code></li>
+ <li><code class="code">\s*\o\s*:\s*\n\c*\n*</code></li>
</ul>
<p class="p">
After Structure:
This Does\:
Second:
Continues until EOS/EOF.
- All white space, including newline (and leading white space) is "part of content."
+ All white space, including new line (and leading white space) is "part of content."
# Valid comments are still ignored.
</pre>
<p class="p">
Example Results:
</p><pre class="preserve">
- Objects would be:
- 1) "The Object"
- 2) Second
+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.
- This Does:
- 2.1) Continues until EOS/EOF.
- All white space, including newline (and leading white space) is "part of content."
+Contents would be:
+ 1.1) Does not need to be quoted.
+ This: does not need to be delimited.
+ This Does:
+ 2.1) Continues until EOS/EOF.
+ All white space, including new line (and leading white space) is "part of content."
</pre>
</div>
</section>
<div class="section-content">
<p class="p">
- The version date of this specification is <code class="code">2024/01/15</code>.
+ The version date of this specification is <code class="code">2024/08/30</code>.
</p>
<p class="p">
- 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 <code class="code">{</code> (<code class="code">U+007B</code>) followed by any white space until a newline terminates a possible valid Object.
+ 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 <code class="code">{</code> (<code class="code">U+007B</code>) 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 <code class="code">{</code> (<code class="code">U+0037B</code>) is not considered part of the Object.
An Object is not considered fully valid until a valid close-brace <code class="code">}</code> (<code class="code">U+007D</code>) is found, designating the end of the Content.
Non-white space printable characters may not follow the open-brace <code class="code">{</code> (<code class="code">U+007B</code>) 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.
</p>
<p class="p">
- 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 <code class="code">}</code> (<code class="code">U+007D</code>).
+ 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 <code class="code">}</code> (<code class="code">U+007D</code>).
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 <code class="code">}</code> (<code class="code">U+007D</code>) but a terminating newline must be present to designate a valid end of Content.
+ White space may follow a valid close-brace <code class="code">}</code> (<code class="code">U+007D</code>) but a terminating new line must be present to designate a valid end of Content.
</p>
<p class="p">
- There is no single-quote, double-quote, or grave delimitation in this specification.
- Only an open-brace <code class="code">{</code> (<code class="code">U+007B</code>) that would result in a valid Object or a close-brace <code class="code">}</code> (<code class="code">U+007D</code>) that would terminate valid Content can be delimited.
+ There is no single-quote (<code class="code">U+0027</code>), double-quote (<code class="code">U+0022</code>), or grave (<code class="code">U+0060</code>) delimitation in this specification.
+ Only an open-brace <code class="code">{</code> (<code class="code">U+007B</code>) that would result in a valid Object or the close-brace <code class="code">}</code> (<code class="code">U+007D</code>) that would terminate valid Content can be delimited.
When inside potentially valid Content (which follows a valid Object) the open-brace <code class="code">{</code> (<code class="code">U+007B</code>) 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 <code class="code">}</code> (<code class="code">U+007D</code>) may only be delimited if it is within any potentially valid Content.
Only the first delimit slash in a delimitable close-brace <code class="code">}</code> (<code class="code">U+007D</code>) is treated as a potential delimit (<code class="code">\\\}</code> would represent <code class="code">\\}</code>).
</p>
<p class="p">
- Empty Objects are allowed, that is, the length of the object may be zero.
+ Empty Objects are allowed, that is, the length of the Object may be zero.
+ </p>
<p class="p">
Key:
</p>
<ul>
- <li><code class="code">\s</code> = White space, except newline.</li>
+ <li><code class="code">\s</code> = White space, except new line.</li>
<li><code class="code">\o</code> = Any printable character, except unescaped <code class="code">{</code> (<code class="code">U+007B</code>).</li>
- <li><code class="code">\l</code> = Any printable character or white space, except unescaped <code class="code">}</code> (<code class="code">U+007D</code>).</li>
- <li><code class="code">\c</code> = Either white space or printable, including newline, that is not interpretable as an Object.</li>
+ <li><code class="code">\c</code> = Either white space or printable, including new line, that is not interpretable as an Object.</li>
<li><code class="code">\n</code> = Newline.</li>
<li><code class="code">*</code> = Zero or more occurrences.</li>
</ul>
<ul>
<li><code class="code"></code></li>
</ul>
+
<p class="p">
Structure:
</p>
<ul>
- <li><code class="code">\s*\o\l*{\s*\n\c*\n\s*}\s*\n</code></li>
+ <li><code class="code">\s*\o\s*{\s*\n\c*\n\s*}\s*\n</code></li>
</ul>
<p class="p">
After Structure:
</ul>
<p class="p">
Example:
- </p><pre class="preserve">
+ </p>
+ <pre class="preserve">
# fss-0003
# valid comments are ignored.
"The Object" {
Second {
Continues until EOS/EOF.
- All white space, including newline (and leading white space) is "part of content."
+ All white space, including new line (and leading white space) is "part of content."
# Valid comments are still ignored.
}
</pre>
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."
+ All white space, including new line (and leading white space) is "part of content."
</pre>
</div>
</section>
The version date of this specification is <code class="code">2023/07/14</code>.
</p>
<p class="p">
- This is a <code class="code">fss-0002 (Basic List)</code> whose Content is then processed as <code class="code">fss-0000 (Basic)</code>.
+ This is a <code class="code">FSS-0002 (Basic List)</code> whose Content is then processed as <code class="code">FSS-0000 (Basic)</code>.
</p>
<p class="p">
- All <code class="code">fss-0002 (Basic List)</code> escapes are applied before any <code class="code">fss-0000 (Basic)</code> is identified.
+ All <code class="code">FSS-0002 (Basic List)</code> escapes are applied before any <code class="code">FSS-0000 (Basic)</code> is identified.
</p>
<p class="p">
- See the <a href="fll/specifications/fss/fss-0000.html" class="link">fss-0000 (Basic)</a> and <a href="fll/specifications/fss/fss-0002.html" class="link">fss-0002 (Basic List)</a> specifications for details on the syntax rules.
+ See the <a href="fll/specifications/fss/fss-0000.html" class="link">FSS-0000 (Basic)</a> and <a href="fll/specifications/fss/fss-0002.html" class="link">FSS-0002 (Basic List)</a> specification files for details on the syntax rules.
</p>
<p class="p">
Example:
This Does\:
Second:
Continues until EOS/EOF.
- All white space, including newline (and leading white space) is "part of content."
+ All white space, including new line (and leading white space) is "part of content."
# Valid comments are still ignored.
</pre>
<p class="p">
Inner Objects would be:
1.1) Does
- 1.2) This:
1.3) This
2.1) Continues
1.3.1) Does:
2.1.1) until EOS/EOF.
- 2.2.1) white space, including newline (and leading white space) is "part of content."
+ 2.2.1) white space, including new line (and leading white space) is "part of content."
</pre>
</div>
</section>
The version date of this specification is <code class="code">2023/07/14</code>.
</p>
<p class="p">
- This is a code"fss-0002 (Basic List)" whose Content is then processed as <code class="code">fss-0001 (Extended)</code>.
+ This is a <code class="code">FSS-0002 (Basic List)</code> whose Content is then processed as <code class="code">FSS-0001 (Extended)</code>.
</p>
<p class="p">
- All <code class="code">fss-0002 (Basic List)</code> escapes are applied before any <code class="code">fss-0001 (Extended)</code> is identified.
+ All <code class="code">FSS-0002 (Basic List)</code> escapes are applied before any <code class="code">FSS-0001 (Extended)</code> is identified.
</p>
<p class="p">
- See the <a href="fll/specifications/fss/fss-0001.html" class="link">fss-0001 (Extended)</a> and <a href="fll/specifications/fss/fss-0002.html" class="link">fss-0002 (Basic List)</a> specifications for details on the syntax rules.
+ See the <a href="fll/specifications/fss/fss-0001.html" class="link">FSS-0001 (Extended)</a> and <a href="fll/specifications/fssw/fss-0002.html" class="link">FSS-0002 (Basic List)</a> specification files for details on the syntax rules.
</p>
<p class="p">
Example:
This Does\:
Second:
Continues until EOS/EOF.
- All white space, including newline (and leading white space) is "part of content."
+ All white space, including new line (and leading white space) is "part of content."
# Valid comments are still ignored.
-</pre>
+ </pre>
<p class="p">
Example Results:
</p><pre class="preserve">
Inner Objects would be:
1.1) Does
- 1.2) This:
1.3) This
2.1) Continues
2.1.1) until
2.1.2) EOS/EOF.
- 2.2.1) white space,
- 2.2.2) including
- 2.2.3) newline
- 2.2.4) (and
- 2.2.5) leading
- 2.2.6) white space)
- 2.2.7) is
- 2.2.8) part of content.
+ 2.2.1) white
+ 2.2.2) space,
+ 2.2.3) including
+ 2.2.4) new
+ 2.2.5) line
+ 2.2.6) (and
+ 2.2.7) leading
+ 2.2.8) white space)
+ 2.2.9) is
+ 2.2.10) part of content.
</pre>
</div>
</section>
The version date of this specification is <code class="code">2023/07/14</code>.
</p>
<p class="p">
- This is a <code class="code">fss-0003 (Extended List)</code> whose Content is then processed as <code class="code">fss-0000 (Basic)</code>.
+ This is a <code class="code">FSS-0003 (Extended List)</code> whose Content is then processed as <code class="code">FSS-0000 (Basic)</code>.
</p>
<p class="p">
- All <code class="code">fss-0003 (Extended List)</code> escapes are applied before any <code class="code">fss-0000 (Basic)</code> is identified.
+ All <code class="code">FSS-0003 (Extended List)</code> escapes are applied before any <code class="code">FSS-0000 (Basic)</code> is identified.
</p>
<p class="p">
- See the <a href="fll/specifications/fss/fss-0000.html" class="link">fss-0000 (Basic)</a> and <a href="fll/specifications/fss/fss-0003.html" class="link">fss-0003 (Extended List)</a> specifications for details on the syntax rules.
+ See the <a href="fll/specifications/fss/fss-0000.html" class="link">FSS-0000 (Basic)</a> and <a href="fll/specifications/fss/fss-0003.html" class="link">FSS-0003 (Extended List)</a> specification files for details on the syntax rules.
</p>
<p class="p">
Example:
Second {
Continues until EOS/EOF.
- All white space, including newline (and leading white space) is "part of content."
+ All white space, including new line (and leading white space) is "part of content."
# Valid comments are still ignored.
}
</pre>
1.3.1)
2.1.1) until EOS/EOF.
- 2.2.1) white space, including newline (and leading white space) is "part of content."
+ 2.2.1) white space, including new line (and leading white space) is "part of content."
</pre>
</div>
</section>
The version date of this specification is <code class="code">2023/07/14</code>.
</p>
<p class="p">
- This is a <code class="code">fss-0003 (Extended List)</code> whose Content is then processed as <code class="code">fss-0001 (Extended)</code>.
+ This is a <code class="code">FSS-0003 (Extended List)</code> whose Content is then processed as <code class="code">FSS-0001 (Extended)</code>.
</p>
<p class="p">
- All <code class="code">fss-0003 (Extended List)</code> escapes are applied before any <code class="code">fss-0001 (Extended)</code> is identified.
+ All <code class="code">FSS-0003 (Extended List)</code> escapes are applied before any <code class="code">FSS-0001 (Extended)</code> is identified.
</p>
<p class="p">
- See the <a href="fll/specifications/fss/fss-0001.html" class="link">fss-0001 (Extended)</a> and <a href="fll/specifications/fss/fss-0003.html" class="link">fss-0003 (Extended List)</a> specifications for details on the syntax rules.
+ See the <a href="fll/specifications/fss/fss-0001.html" class="link">FSS-0001 (Extended)</a> and <a href="fll/specifications/fss/fss-0003.html" class="link">FSS-0003 (Extended List)</a> specification files for details on the syntax rules.
</p>
<p class="p">
Example:
</p><pre class="preserve">
-# fss-0007
-# 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.
-}
+ # fss-0007
+ # 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.
+ }
</pre>
<p class="p">
Example Results:
2.1.1) until
2.1.2) EOS/EOF.
- 2.2.1) white space,
- 2.2.2) including
- 2.2.3) newline
- 2.2.4) (and
- 2.2.5) leading
- 2.2.6) white space)
- 2.2.7) is
- 2.2.8) part of content.
+ 2.2.1) white
+ 2.2.2) space,
+ 2.2.3) including
+ 2.2.4) new
+ 2.2.5) line
+ 2.2.6) (and
+ 2.2.7) leading
+ 2.2.8) white space)
+ 2.2.9) is
+ 2.2.10) part of content.
</pre>
</div>
</section>
The version date of this specification is <code class="code">2023/07/14</code>.
</p>
<p class="p">
- This is a <code class="code">fss-0003 (Extended List)</code> whose Content is then recursively processed as <code class="code">fss-0003 (Extended List)</code>.
+ This is a <code class="code">FSS-0003 (Extended List)</code> whose Content is then recursively processed as <code class="code">FSS-0003 (Extended List)</code>.
</p>
<p class="p">
- See the <a href="fll/specifications/fss/fss-0003.html" class="link">fss-0003 (Extended List)</a> specification for details on the syntax rules.
+ See the <a href="fll/specifications/fss/fss-0003.html" class="link">FSS-0003 (Extended List)</a> specification file for details on the syntax rules.
</p>
<p class="p">
Example:
The version date of this specification is <code class="code">2024/06/11</code>.
</p>
<p class="p">
- This is based off of <code class="code">fss-0000 (Basic)</code>, except the Object is at the end of the line.
+ This is based off of <code class="code">FSS-0000 (Basic)</code>, except the Object is at the end of the line.
</p>
<p class="p">
Each Object starts at the end of a line and white space to the left of the Object is not treated as part of the object.
<ul>
<li><code class="code">\s</code> = White space, except new line.</li>
<li><code class="code">\b</code> = Either white space or printable, except new line.</li>
- <li><code class="code">\q</code> = Non-white space or quoted white space (and non-whitespace) with no white space outside of the quotes.</li>
- <li><code class="code">\n</code> = Newline.</li>
+ <li><code class="code">\q</code> = Non-white space or quoted white space (and non-white space) with no white space outside of the quotes.</li>
+ <li><code class="code">\n</code> = New line.</li>
<li><code class="code">*</code> = Zero or more occurrences.</li>
<li><code class="code">+</code> = One or more occurrences.</li>
</ul>
The version date of this specification is <code class="code">2024/06/11</code>.
</p>
<p class="p">
- This is based off of <code class="code">fss-0001 (Extended)</code>, except the Object is at the end of the line.
+ This is based off of <code class="code">FSS-0001 (Extended)</code>, except the Object is at the end of the line.
</p>
<p class="p">
Each Object starts at the end of a line and white space to the left of the Object is not treated as an object.
<ul>
<li><code class="code">\s</code> = White space, except new line.</li>
<li><code class="code">\b</code> = Either white space or printable, except new line.</li>
- <li><code class="code">\q</code> = Non-white space or quoted white space (and non-whitespace) with no white space outside of the quotes.</li>
- <li><code class="code">\n</code> = Newline.</li>
+ <li><code class="code">\q</code> = Non-white space or quoted white space (and non-white space) with no white space outside of the quotes.</li>
+ <li><code class="code">\n</code> = New line.</li>
<li><code class="code">*</code> = Zero or more occurrences.</li>
<li><code class="code">+</code> = One or more occurrences.</li>
<li><code class="code">()*</code> = Grouping that repeats zero or more times.</li>
The version date of this specification is <code class="code">2023/07/14</code>.
</p>
<p class="p">
- This is similar to <code class="code">fss-0008 (Embedded List)</code>, except it is an <code class="code">fss-0003 (Extended List)</code> with a (non-recursive) <code class="code">fss-0002 (Basic List)</code> inside the Content.
+ This is similar to <code class="code">FSS-0008 (Embedded List)</code>, except that it is an <code class="code">FSS-0003 (Extended List)</code> with a (non-recursive) <code class="code">FSS-0002 (Basic List)</code> inside the Content.
</p>
<p class="p">
- See the <a href="fll/specifications/fss/fss-0002.html" class="link">fss-0002 (Basic List)</a> and <a href="fll/specifications/fss/fss-0003.html" class="link">fss-0003 (Extended List)</a> specifications for details on the syntax rules.
+ See the <a href="fll/specifications/fss/fss-0002.html" class="link">FSS-0002 (Basic List)</a> and <a href="fll/specifications/fss/fss-0003.html" class="link">FSS-0003 (Extended List)</a> specification files for details on the syntax rules.
</p>
<p class="p">
Example:
<p class="p">
The IKI specifications are separate specifications from the <abbr title="Featureless Settings Specifications">FSS</abbr>.
This is simply a more formal way to designate that this format utilizes IKI syntax.
+ This may also be used to designate EKI syntax.
+ </p>
+ <p class="p">
+ When neither an IKI nor an EKI header is specified and (other than <code class="code">fss-000c</code> is specified) and the syntax is not known through some other means, then this can be assumed to be in IKI syntax rather than EKI syntax.
</p>
<p class="p">
The IKI syntax may be used in any <abbr title="Featureless Settings Specifications">FSS</abbr>.
- The IKI format may be added to the.
</p>
<p class="p">
- See the iki.txt specification for details on the IKI specifications.
+ See the <a href="fll/specifications.html#iki" class="link">iki.txt</a> specification for details on the IKI specifications.
+ </p>
+ <p class="p">
+ See the <a href="fll/specifications.html#eki" class="link">eki.txt</a> specification for details on the EKI specifications.
</p>
<p class="p">
Example:
</p><pre class="preserve">
# fss-000c iki-0000
-This is a emphasis:"formal example" utilizing the FSS headers.
+This is a italic:"formal example" utilizing the FSS and IKI headers.
</pre>
<p class="p">
Example:
</p><pre class="preserve">
# iki-0000
-This is an emphasis:"informal example" utilizing the IKI headers.
- </pre>
+This is a italic:"informal example" utilizing only the IKI headers.
+</pre>
+ <p class="p">
+ Example:
+ </p><pre class="preserve">
+# fss-000c eki-0000
+
+This is a bold:italic:"informal example" utilizing the FSS and EKI headers.
+</pre>
+ <p class="p">
+ Example:
+ </p><pre class="preserve">
+# fss-000c
+
+This is a italic:"formal example" utilizing only the FSS headers, which in this case is treated as IKI rather than EKI.
+</pre>
</div>
</section>
</main>
<p class="p">
The version date of this specification is <code class="code">2023/07/14</code>.
</p>
- <p class="p">
- This is a special case that follows <code class="code">fss-0002 (Basic List)</code>, and different <abbr title="Featureless Settings Specifications">FSS</abbr> formats inside this <code class="code">fss-0002 (Basic List)</code>.
- This <code class="code">fss-0002 (Basic List)</code> is considered the "Outer List" and the Content of this Outer List is considered the "Inner Content".
+ This is a special case that follows <code class="code">FSS-0002 (Basic List)</code>, and different <abbr title="Featureless Settings Specifications">FSS</abbr> formats inside this <code class="code">FSS-0002 (Basic List)</code>.
+ This <code class="code">FSS-0002 (Basic List)</code> is considered the "Outer List" and the Content of this Outer List is considered the "Inner Content".
</p>
<p class="p">
- The Inner Content may be any of the following <abbr title="Featureless Settings Specifications">FSS</abbr> formats: <code class="code">fss-0000 (Basic)</code>, <code class="code">fss-0001 (Extended)</code>, and <code class="code">fss-0003 (Extended List)</code>.
+ The Inner Content may be any of the following <abbr title="Featureless Settings Specifications">FSS</abbr> formats: <code class="code">FSS-0000 (Basic)</code>, <code class="code">FSS-0001 (Extended)</code>, and <code class="code">FSS-0003 (Extended List)</code>.
The way in which each format is determined is first to see if the Inner Content Object would be a valid Extended List Object.
- If the Inner Content Object is not a valid <code class="code">fss-0003 (Extended List)</code> Object, then check to see if it is an <code class="code">fss-0000 (Basic)</code> or <code class="code">fss-0001 (Extended)</code> Object.
+ If the Inner Content Object is not a valid <code class="code">FSS-0003 (Extended List)</code> Object, then check to see if it is an <code class="code">FSS-0000 (Basic)</code> or <code class="code">FSS-0001 (Extended)</code> Object.
</p>
<p class="p">
- The <code class="code">fss-0000 (Basic)</code> and <code class="code">fss-0001 (Extended)</code> Objects have the same format for Object names but the <code class="code">fss-0003 (Extended List)</code> Object is slightly different.
- Anything that would match an <code class="code">fss-0003 (Extended List)</code> Object must therefore be an <code class="code">fss-0003 (Extended List)</code> Object.
+ The <code class="code">FSS-0000 (Basic)</code> and <code class="code">FSS-0001 (Extended)</code> Objects have the same format for Object names but the <code class="code">FSS-0003 (Extended List)</code> Object is slightly different.
+ Anything that would match an <code class="code">FSS-0003 (Extended List)</code> Object must therefore be an <code class="code">FSS-0003 (Extended List)</code> Object.
</p>
<p class="p">
- This supports the use of <code class="code">iki-0000 (Unrestricted)</code> but only within the Content of the outermost <code class="code">fss-0002 (Basic List)</code>.
+ This supports the use of <code class="code">iki-0000 (Unrestricted)</code> but only within the Content of the outermost <code class="code">FSS-0002 (Basic List)</code>.
That is to say, the IKI is only processed once.
Additional restrictions on the use of IKI syntax is allowed if explicitly defined in the implementing specification.
This additional restriction may also include using a more restrictive IKI syntax, such as <code class="code">iki-0001 (Basic)</code>.
Anything implementing this specification may impose its own restrictions on when to determine if the Inner Content is what <abbr title="Featureless Settings Specifications">FSS</abbr> format, based on Object names.
</p>
<p class="p">
- See the <a href="fll/specifications/fss/fss-0000.html" class="link">fss-0000 (Basic)</a>, <a href="fll/specifications/fss/fss-0001.html" class="link">fss-0001 (Extended)</a>, and <a href="fll/specifications/fss/fss-0003.html" class="link">fss-0003 (Extended List)</a> specifications for details on the syntax rules.
+ See the the <a href="fll/specifications/fss/fss-0000.html" class="link">FSS-0000 (Basic)</a>, <a href="fll/specifications/fss/fss-0001.html" class="link">FSS-0001 (Extended)</a>, and <a href="fll/specifications/fss/fss-0003.html" class="link">FSS-0003 (Extended List)</a> specification files for details on the syntax rules.
</p>
<p class="p">
Example:
The version date of this specification is <code class="code">2024/03/12</code>.
</p>
<p class="p">
- This is a <code class="code">fss-0002 (Basic List)</code> with two required objects:
+ This is a <code class="code">FSS-0002 (Basic List)</code> with one required object and two optional objects:
</p>
<ol>
<li><em class="em">header</em>.</li>
<ul>
<li>The <em class="em">header</em>'s Content is of type <code class="code">FSS-0001 (Extended)</code>.</li>
<li>The <em class="em">header</em> is recommended to have the Objects <em class="em">length</em>, <em class="em">status</em>, <em class="em">part</em>, <em class="em">total</em>, and <em class="em">type</em>.</li>
- The <em class="em">header</em> is suggested to have the Objects <em class="em">salt</em> and <em class="em">time</em>.
+ <li>The <em class="em">header</em> is suggested to have the Objects <em class="em">salt</em> and <em class="em">time</em>.</li>
<li>The recommended <em class="em">length</em> represents the size of the <em class="em">payload</em>.</li>
<li>The recommended <em class="em">part</em> represents a single part of a set of packets for when the data being transmitted is split across multiple payloads.</li>
<li>The recommended <em class="em">status</em> represents status codes (such as success or failure) and multiple.</li>
<li>The <em class="em">payload</em>'s Content may contain anything, including raw binary data.</li>
<li>The <em class="em">payload</em> is <em class="em">required</em> to be the last list Object in the file, if present.</li>
<li>The <em class="em">payload</em> is recommended to have its size designated in some manner in the <em class="em">header</em> (such as with the recommended <em class="em">length</em>).</li>
- <li>The <em class="em">payload</em> is terminated by the <abbr title="End of File">EOF</abbr> character or by the recommended <em class="em">length</em> header.</li>
+ <li>The <em class="em">payload</em> is terminated by the End of File character or by the recommended <em class="em">length</em> header.</li>
<li>The <em class="em">payload</em> may be empty (length may be zero).</li>
<li>Nothing in the <em class="em">payload</em> may be considered a valid list Object by the outer <code class="code">FSS-0002 (Basic List)</code> and therefore escaping is unnecessary (No further processing by the outer <code class="code">FSS-0002 (Basic List)</code> is allowed at this point).</li>
<li>Comments in the <em class="em">payload</em> are not considered comments and are instead considered part of the payload, as-is.</li>
<li>Essentially, the <em class="em">payload</em> should be treated as binary data embedded in a text file.</li>
<li>There may only be a single <em class="em">payload</em> Object and associated Content.</li>
- <li>Any <em class="em">payload</em> Object and associated Content that is not the last must not have its Content data treated as binary in the same way as the last <em class="em">payload"</em> Object and associated Content.</li>
+ <li>Any <em class="em">payload</em> Object and associated Content that is not the last must not have its Content data treated as binary in the same way as the last <em class="em">payload</em> Object and associated Content.</li>
</ul>
<p class="p">
The recommended <em class="em">length</em> <em class="em">header</em> Object used to designate the <em class="em">payload</em> size does not necessarily have to be defined in the <em class="em">header</em>.
That is to say, if the <em class="em">payload</em> is expected to be of some pre-defined or static length then a length does not need to be provided in the <em class="em">header</em>.
</p>
<p class="p">
- The recommended <em class="em">length</em> <em class="em">header</em> Object used to designate the <em class="em">payload</em> size does not necessarily have to be defined in the <em class="em">header</em>.
- That is to say, if the <em class="em">payload</em> is expected to be of some pre-defined or static length then a length does not need to be provided in the <em class="em">header</em>.
- </p>
- <p class="p">
The recommended <em class="em">status</em> <em class="em">header</em> Object may be a string, such as <code class="code">F_okay</code>, or a positive whole number.
- What the status code represents is application specific (or specific to a sub-standard) but may often be used to represent <abbr title="Featureless Linux Library">FLL</abbr> status code.
+ What the status code represents is application specific (or specific to a sub-standard) but may often be used to represent Featureless Linux Library status code.
</p>
<ul>
<li>The <abbr title="Featureless Linux Library">FLL</abbr> status code is a 16-bit digit whose first two high-order bits represent <em class="em">error</em> and <em class="em">warning</em> (representing <em class="em">signal</em>).</li>
The version date of this specification is <code class="code">2024/06/05</code>.
</p>
<p class="p">
- This is a network packet format that often contains <code class="code">fss-000e (Payload)</code> within it.
+ This is a network packet format that often contains <code class="code">FSS-000e (Payload)</code> within it.
</p>
<p class="p">
The <strong class="strong">Magic Block</strong> when containing <code class="code">FSS-000e (Payload)</code> in the <strong class="strong">Payload Block</strong> is: <code class="code">11010010100111101111010000111110</code>.
There are three or four blocks in this format:
</p>
<ol>
- <li>Control Block.</li>
- <li>Size Block.</li>
- <li>Magic Block.</li>
- <li>Payload Block.</li>
+ <li><strong class="strong">Control Block</strong>.</li>
+ <li><strong class="strong">Size Block</strong>.</li>
+ <li><strong class="strong">Magic Block</strong>.</li>
+ <li><strong class="strong">Payload Block</strong>.</li>
</ol>
<p class="p">
The <strong class="strong">Control Block</strong> is the first block in the packet and is considered endianless.
The third bit following the endiannes bit represents the magic bit.
</p>
<p class="p">
- Control Block Structure:
+ <strong class="strong">Control Block</strong> Structure:
</p><pre class="preserve">
[ Endianness Bit ] [ String / Binary Bit ] [ Magic Bit ] [ Remaining 5 Bits (unused) ]
[ size: 1 bit ] [ size: 1 bit ] [ size: 1 bit ] [ size: 5 bits ]
<p class="p">
The endianness bit designates whether or not the packet is in big endian or little endian format.
A bit value of 0 designates that this packet is in little endian and a value of 1 designates that this packet is in big endian format.
- All <em class="em">binary</em> data within this packet, following the Control Block, must respect this endianness bit (including the <strong class="strong">Size Block</strong>).
+ All <em class="em">binary</em> data within this packet, following the <strong class="strong">Control Block</strong>, must respect this endianness bit (including the <strong class="strong">Size Block</strong>).
</p>
<p class="p">
The magic bit designates whether or not the packet contains the optional <strong class="strong">Magic Block</strong>.
<p class="p">
The remaining bits are not defined by this standard and are expected to be 0.
Non-formal or local uses may utilize these remaining 6 bits as desired.
- However, there may be additional standards that expand upon this and utilize these remaining <strong class="strong">Control</strong> bits.
- Anything that utilizes these unused <strong class="strong">Control</strong> bits may add or remove additional <strong class="strong">Blocks</strong> after the <strong class="strong">Control Block</strong> as they see fit.
- One possible use of the remaining bits is to designate a different variation of this <strong class="strong">Simple Packet</strong> standard.
+ However, there may be additional standards that expand upon this and utilize these remaining Control bits.
+ Anything that utilizes these unused Control bits may add or remove additional Blocks after the <strong class="strong">Control Block</strong> as they see fit.
+ One possible use of the remaining bits is to designate a different variation of this Simple Packet standard.
</p>
<p class="p">
- Size Block Structure:
+ <strong class="strong">Size Block</strong> Structure:
</p><pre class="preserve">
[ Size Block ]
[ size: 32 bits ]
The <strong class="strong">Size Block</strong> is an unsigned 32-bit integer representing the size of the entire packet in bytes, including the <strong class="strong">Control Block</strong> and <strong class="strong">Size Block</strong>.
This size must exactly match the packet to be a valid packet.
The size represents number of bytes in the file.
- The <strong class="strong">Control Block</strong> is 1 byte long and the <strong class="strong">Size Block</strong> is 4 bytes long, therefore the maximum available size of the entire <strong class="strong">Simple Packet</strong> structure is <code class="code">(2^32)-6</code>.
- The <strong class="strong">Magic Block</strong> is 4 bytes long, therefore when the magic bit is set, then the maximum available size of the entire <strong class="strong">Simple Packet</strong> structure is <code class="code">(2^32)-9</code>.
+ The <strong class="strong">Control Block</strong> is 1 byte long and the <strong class="strong">Size Block</strong> is 4 bytes long, therefore the maximum available size of the entire Simple Packet structure is <code class="code">(2^32)-5</code>.
+ The <strong class="strong">Magic Block</strong> is 4 bytes long, therefore when the magic bit is set, then the maximum available size of the entire Simple Packet structure is <code class="code">(2^32)-9</code>.
</p>
<p class="p">
- Magic Block Structure:
+ The reason behind why the size includes both the <strong class="strong">Control Block</strong> and the <strong class="strong">Size Block</strong> in addition to the <strong class="strong">Payload Block</strong> is to avoid the need to perform any calculations for handling the size of the entire packet. The idea here is to optimize the packet for the network hardware transferring the packet. The network device should not need to read the contents of the packet in order to transfer the packet and therefore it only needs the number of the entire packet. Anything that wants to analyze this packet will have to incure the cost of calculating the <strong class="strong">Payload Block</strong> size by performing the appropriate subtraction from the size represented in the <strong class="strong">Size Block</strong>.
+ </p>
+ <p class="p">
+ <strong class="strong">Magic Block</strong> Structure:
</p><pre class="preserve">
[ Magic Block ]
[ size: 32 bits ]
</pre>
<p class="p">
- The <strong class="strong">Magic Block</strong> is an unsigned 32-bit digit used to uniquely identify the packet.
+ The <strong class="strong">Magic Block</strong> is an unsigned 32-bit digit used to uniquely identify the packet.
The 32-bits are treated as endianless such that the left to right order of the bits is always the same for both big and little endian systems.
- The <strong class="strong">Magic Block</strong> is required when the magic bit is set and it must not exist when the magic bit is not set.
+ The <strong class="strong">Magic Block</strong> is required when the magic bit is set and it must not exist when the magic bit is not set.
</p>
<p class="p">
This offers optimization in identifying the packet and its structure.
This is particularly unhelpful for security and privacy given that it helps quickly identify the packet.
</p>
<p class="p">
- Payload Block Structure:
+ <strong class="strong">Payload Block</strong> Structure:
</p><pre class="preserve">
[ Payload Block ]
[ size: (2^32)-5 bytes (or (2^32)-9 bytes if magic bit is set) ]
The <code class="code">FSS-000e (Payload)</code> may be represented in either <em class="em">string</em> format or <em class="em">binary</em> format.
The <code class="code">FSS-000e (Payload)</code> may contain multiple <em class="em">header</em>(s) but may only contain a single <em class="em">payload</em>.
With this in mind, it is recommended that only a single <em class="em">header</em> be supported in the <strong class="strong">Payload Block</strong>.
- The <em class="em">payload</em> <strong class="strong">Content</strong> may be in either a <em class="em">binary</em> or <em class="em">string</em> format regardless of the <em class="em">binary</em> bit in the <strong class="strong">Simple Packet</strong> <strong class="strong">Header Block</strong>.
+ The <em class="em">payload</em> Content may be in either a <em class="em">binary</em> or <em class="em">string</em> format regardless of the <em class="em">binary</em> bit in the Simple Packet Header Block.
</p>
<p class="p">
- See the <a href="fll/specifications/fss/fss-000e.html" class="link">fss-000e (Payload)</a> specification file for details on the syntax rules for the <strong class="strong">Payload Block</strong>.
+ See the <a href="fll/specifications/fss/fss-000e.html" class="link">FSS-000e (Payload)</a> specification file for details on the syntax rules for the <strong class="strong">Payload Block</strong>.
</p>
<p class="p">
Example Packet Structure:
<p class="p">
The version date of this specification is <code class="code">2023/07/16</code>.
</p>
+ This is an encrypted form of the network packet format of <code class="code">FSS-000f (Simple Packet)</code>.
+
+ The entire Payload Block is undefined by this standard and is instead defined by the encryption algorithm or standard in use.
+ There is no rule, restriction, requirement, or definition on what encryption can be used.
+ The only rule is that the Payload Block must be of a valid length as defined by the Size Block.
+
+ The general rule is that it can be assumed that the encrypted data in the Payload Block would be of the <code class="code">FSS-000e (Payload)</code> format. Being that the data is supposed to be encrypted, the actual contents of the Payload Block is left undefined.
+
+ The <code class="code">FSS-000f (Simple Packet)</code> that this standard modifies does not require the Payload Block to be in <code class="code">FSS-000e (Payload)</code> format.
+ This standard is even more lax than <code class="code">FSS-000f (Simple Packet)</code> and drops replaces the words <em class="em">should be in</em> from the <code class="code">FSS-000f (Simple Packet)</code> standard and replaces them with <em class="em">could be in</em>.
+
+ This allows for the encrypted data to be anything the user wants, such as but not limited to Hypertext Transfer Protocol.
+
+ When it comes to security, any and all data can be useful. For best encryption, one may want to consider not using this format because of the Control Block and the Size Block are not encrypted.
+
+ The endianness bit should only be used to represent the Size Block to avoid any security concerns. The endianness of the encrypted needs to be determined through some other means for any kind of reasonable security.
+
+ This standard uses the third bit from the left in the Control Block to designate that this is an encrypted packet.
+
+ The 5 remaining control bits are left undefined.
+
+ See the <code class="code">fss-000f.txt</code> specification file for details regarding the <code class="code">FSS-000f (Simple Packet)</code> standard.
+
+ Example Packet Structure:
+ <code class="code">
+ [ Control Block ] [ Size Block ] [ Payload Block ]
+ [ 0b10100000 ] [ 0b00000000 0b00000000 0b00000100 0b11010010 ] [ size: 1229 (1234 - 5) ]
+ </code>
+
+ In the above example, take note that the third bit in the Control Block is a 1.
+
+
<p class="p">
This is an encrypted form of the network packet format of <code class="code">FSS-000f (Simple Packet)</code>.
</p>
IKI is a minimally structured WIKI-like syntax meant to be simpler than WIKI syntax.
</p>
<p class="p">
- The IKI syntax provides a vocabulary name (with specific context associated with it) followed by quoted code that is associated with the given vocabulary name.
- The vocabulary represents a list of allowed variable names that may also have specific contextual meaning defined by a given IKI specification.
- The variable name is considered the <em class="em">Object</em>.
- The variable value is considered the <em class="em">Content</em>.
+ The IKI syntax describes a <em class="em">Variable</em> that is defined by a <em class="em">Vocabulary</em> name followed by quoted value called the <em class="em">Content</em>.
</p>
<p class="p">
- The IKI format will use <code class="code">iki-0000</code> to represent an IKI with no explicitly defined vocabulary.
- Whereas <code class="code">iki-0001</code> and beyond represent a specific IKI vocabulary.
+ The <em class="em">Variable</em> refers to the <em class="em">Vocabulary</em>, <em class="em">Content</em>, and associated syntax that describes the <em class="em">Variable</em>.
+ The <em class="em">Variable</em> name may be wrapped by a single open bracket, <code class="code">[</code> (<code class="code">U+005B</code>), at the start and a single close bracket, <code class="code">]</code> (<code class="code">U+005D</code>), at the end.
+ The open and close brackets, also called the wrapping characters, for the <em class="em">Variable</em> do not utilize escaping characters and instead any escaping is perform against the colon <code class="code">:</code> (<code class="code">U+003A</code>) that separates the <em class="em">Vocabulary</em> from the <em class="em">Content</em>.
+ The <em class="em">Vocabulary</em> generally defines the context and many of the IKI specifications may provide a discrete set of allowed <em class="em">Vocabulary</em>.
+ The <em class="em">Vocabulary</em> may also be referred to as the <em class="em">Object</em>.
+ The <em class="em">Vocabulary</em> only allows word characters or one of <code class="code">_</code> (<code class="code">U+005F</code>), <code class="code">-</code> (<code class="code">U+002D</code>), <code class="code">+</code> (<code class="code">U+002B</code>), <code class="code">[</code> (<code class="code">U+005B</code>)).
+ White space, non-word, and non <code class="code">_</code> (<code class="code">U+005F</code>), <code class="code">-</code> (<code class="code">U+002D</code>), <code class="code">+</code> (<code class="code">U+002B</code>)) character punctuation may not exist as part of the variable name.
+ The only Unicode dash-like characters allowed as a "dash" are those intended to connect, such as the Unicode hyphens (<code class="code">U+2010</code> and <code class="code">U+2011</code>).
+ Unicode punctuation connector characters are supported just like <code class="code">_</code>, except when they connect outside the current line (such as <code class="code">U+FE33</code> <code class="code">︳</code>).
+ The immediate left of a <em class="em">Vocabulary</em> must not be a valid <em class="em">Vocabulary</em> character, unless the <em class="em">Vocabulary</em> is wrapped using the wrapping characters.
+ Unicode invisible punctuation (such as invisible plus: <code class="code">U+2064</code>) are not considered a punctuation in this standard (because they a zero-width characters), therefore they are not to be considered a valid <code class="code">_</code> (<code class="code">U+005F</code>), <code class="code">-</code> (<code class="code">U+002D</code>), or <code class="code">+</code> (<code class="code">U+002B</code>) Unicode equivalents.
</p>
<p class="p">
- A potential IKI variable name starts on word (or <code class="code">_</code>, <code class="code">-</code>, <code class="code">+</code>) characters.
- White space and non-word (and non <code class="code">_</code>, <code class="code">-</code>, <code class="code">+</code>) character punctuations may not exist as part of the variable name.
- The only Unicode dash-like characters allowed as a "dash" are those intended to connect, such as the Unicode hyphens (<code class="code">U+2010</code> and <code class="code">U+2011</code>).
+ The wrapping characters characters are not part of the <em class="em">Vocabulary</em> name and instead only provide the syntax used to help identify a valid <em class="em">Variable</em>.
+ The wrapping characters characters are part of the <em class="em">Variable</em>.
+ The wrapping characters do not support escaping.
+ Both wrapping characters must be specified or neither.
</p>
<p class="p">
- Any valid IKI data may be escaped to make it treated as non-IKI data by prepending a backslash <code class="code">" before the colon code:</code>:" that is before the opening quote (single or double).
+ The <em class="em">Content</em> refers to the value of the <em class="em">Variable</em>.
+ The <em class="em">Content</em> is wrapped one of the following quote characters: single quote <code class="code">'</code> (<code class="code">U+0027</code>), double quote <code class="code">"</code> (<code class="code">U+0022</code>), or grave <code class="code">`</code> (<code class="code">U+0060</code>).
+ The <em class="em">Content</em> must escape any quotes that match the open and close quote used for the <em class="em">Variable</em> by utilizing a backslash <code class="code">\</code> (<code class="code">U+005C</code>).
+ If a matching closing quote is not found until the end of the data (or file), then this unclosed <em class="em">Variable</em> is considered invalid.
+ The handling of this erroneous case is left to the implementation.
</p>
<p class="p">
- Unicode punctuation connector characters are supported just like <code class="code">_</code>, except when they connect outside the current line (such as <code class="code">U+FE33</code> <code class="code">︳</code>).
- Unicode invisible punctuations (such as invisible plus: <code class="code">U+2064</code>) are not considered a punctuations in this standard (because they a zero-width characters), therefore they are not to be considered a valid <code class="code">_</code>, <code class="code">-</code>, or <code class="code">+</code> Unicode equivalents.
+ The backslashes used for escaping quotes use <code class="code">\</code> (<code class="code">U+005C</code>).
+ Unless otherwise specified, these backslash escapes are performed only when required and not unilaterally.
+ One backslash escapes the valid quote, resulting in the quote being part of the <em class="em">Content</em>.
+ Two backslashes escape the backslash, resulting in the backslash (but not the quote) being part of the <em class="em">Content</em>.
+ An odd number of backslashes before a valid quote results in the backslashes and the quote being escaped.
+ An even number of backslashes before a valid quote results in the backslashes but not the quote being escaped.
+ </p>
+ <p class="p">
+ The IKI format will use <code class="code">iki-0000</code> to represent an IKI with no explicitly defined vocabulary.
+ Whereas <code class="code">iki-0001</code> and beyond represent a specific IKI vocabulary.
</p>
<p class="p">
Key:
</p>
<ul>
- <li><code class="code">\o</code> = any printable word character, including <code class="code">_</code>, <code class="code">-</code>, <code class="code">+</code> (and Unicode equivalents).</li>
- <li><code class="code">\c</code> = any character, including white space and non-printing, and any delimited quote (used as the opening quote) or a any quote (undelimited) not used as the opening quote.</li>
- <li><code class="code">\q</code> = either a single quote <code class="code">'</code> or a double quote <code class="code">"</code>.</li>
- <li><code class="code">\x</code> = any character.</li>
- <li><code class="code">\W</code> = any non-word character, discluding <code class="code">_</code>, <code class="code">-</code>, <code class="code">+</code> (and Unicode equivalents).</li>
- <li><code class="code">\e</code> = an optional escape sequence of any number of backslashes, such as <code class="code">\</code>.</li>
- <li><code class="code">*</code> = zero or more occurrences.</li>
- <li><code class="code">~</code> = one or more occurrences, or zero if at start of file.</li>
+ <li><code class="code">\o</code> = any printable word character, including <code class="code">_</code> (<code class="code">U+005F</code>), <code class="code">-</code> (<code class="code">U+002D</code>), <code class="code">+</code> (<code class="code">U+002B</code>) (and Unicode equivalents).</li>
+ <li><code class="code">\c</code> = any character, including white space and non-printing, and any escaped quote (used as the opening quote) or a any quote (unescaped) not used as the opening quote.</li>
+ <li><code class="code">\q</code> = either a single quote <code class="code">'</code> (<code class="code">U+0027</code>), a double quote <code class="code">"</code> (<code class="code">U+0022</code>), or a grave <code class="code">`</code> (<code class="code">U+0060</code>).</li>
+ <li><code class="code">\x</code> = any character.</li>
+ <li><code class="code">\W</code> = any non-word character, discluding <code class="code">_</code> (<code class="code">U+005F</code>) (and Unicode equivalents), <code class="code">-</code> (<code class="code">U+002D</code>) (and Unicode equivalents), and <code class="code">+</code> (<code class="code">U+002B</code>) (and Unicode equivalents).</li>
+ <li><code class="code">\e</code> = an optional escape sequence of any number of backslashes, such as <code class="code">\</code> (<code class="code">U+005C</code>).</li>
+ <li><code class="code">[</code> = a single (conditionally optional) open bracket, <code class="code">[</code> (<code class="code">U+005B</code>).</li>
+ <li><code class="code">]</code> = a single (conditionally optional) close bracket, <code class="code">]</code> (<code class="code">U+005D</code>).</li>
+ <li><code class="code">*</code> = zero or more occurrences.</li>
+ <li><code class="code">~</code> = one or more occurrences, or zero if at start of file.</li>
+ <li><code class="code">+</code> = one or more occurrences.</li>
+ <li><code class="code">:</code> = The colon <code class="code">:</code> (<code class="code">U+003A</code>).</li>
</ul>
<p class="p">
Before Structure:
</p>
<ul>
- <li><code class="code">\x*\W~\*:*</code></li>
+ <li><code class="code">\x*\W~</code></li>
</ul>
<p class="p">
Structure:
</p>
- <ul>
- <li><code class="code">\o\e:\q\c\q</code></li>
- </ul>
+ <p class="p">
+ <li><code class="code">[\o+]\e:\q\c\q</code></li>
+ </p>
<p class="p">
After Structure:
</p>
</p><pre class="preserve">
# fss-000c iki-0000
-This is my sentence, anything can go here but sometimes I want to emphasis:"emphasize some text".
+This is my sentence, anything can go here but sometimes I want to italic:"emphasize some text".
-Other times I want to render a url such as this example url: url:'http://www.example.com/url with space/'.
+Other times I want to render a URL such as this example URL: url:'http://www.example.com/url with space/'.
-There are no comments, except for maybe the FSS header (which would not resolve to any IKI syntax anyway).
+There are no comments, except for maybe the FSS:"Featureless Settings Specification" header (which would not resolve to any IKI syntax anyway).
Quotes may be included, such as: code:"const char *string = \"My \\\"quoted\\\" C string.\";".
-The following emphasis\:"is escaped to not be treated as IKI data".
+The following italic\:"is escaped to not be treated as IKI Variable".
+
+The conditionally optional open and close brackets allow for putting a variable directly next to another word character like: [context]:"bold"this[context]:"bold".
+
+These are examples of escapes: one:"\" escape", two:"\\" escape", three:"\\\" escape", six:"\\\\\\" escape".
+
+These are examples of non-escapes: one:"\' escape", two:"\\' escape", three:"\\\' escape", six:"\\\\\\' escape".
+
+These slashes \ \\ \\\ are not escaped because there is now quote immediately after each of them.
</pre>
<p class="p">
Example Results:
- </p><pre class="preserve margin-below">
-Objects would be:
- 1) emphasis
- 2) url
- 3) code
-
-Contents would be:
- 1.1) emphasize some text
- 2.1) http://www.example.com/url with space/
- 3.1) const char *string = "My \"quoted\" C string.";
+ </p><pre class="preserve">
+Objects (also called vocabulary or variable name) would be:
+ 1.1) italic
+ 2.1) URL
+ 3.1) FSS
+ 4.1) code
+ 5.1) context
+ 6.1) context
+ 7.1) one
+ 8.1) two
+ 9.1) three
+ 10.1) six
+ 11.1) one
+ 12.1) two
+ 13.1) three
+ 14.1) six
+
+Contents (also called variable value) would be:
+ 1.1) emphasize some text
+ 2.1) http://www.example.com/url with space/
+ 3.1) Featureless Settings Specification
+ 4.1) const char *string = "My \"quoted\" C string.";
+ 5.1) bold
+ 6.1) bold
+ 7.1) " escape
+ 8.1) \
+ 9.1) \" escape
+ 10.1) \\\
+ 11.1) \' escape
+ 12.1) \\' escape
+ 13.1) \\\' escape
+ 14.1) \\\\\\' escape
</pre>
</div>
</section>
IKI is a minimally structured WIKI-like syntax meant to be simpler than WIKI syntax.
</p>
<p class="p">
- The IKI syntax provides a vocabulary name (with specific context associated with it) followed by quoted code that is associated with the given vocabulary name.
- The vocabulary represents a list of allowed variable names that may also have specific contextual meaning defined by a given IKI specification.
- The variable name is considered the <em class="em">Object</em>.
- The variable value is considered the <em class="em">Content</em>.
+ The IKI syntax describes a <em class="em">Variable</em> that is defined by a <em class="em">Vocabulary</em> name followed by quoted value called the <em class="em">Content</em>.
</p>
<p class="p">
- The IKI format will use <code class="code">iki-0000</code> to represent an IKI with no explicitly defined vocabulary.
- Whereas <code class="code">iki-0001</code> and beyond represent a specific IKI vocabulary.
+ The <em class="em">Variable</em> refers to the <em class="em">Vocabulary</em>, <em class="em">Content</em>, and associated syntax that describes the <em class="em">Variable</em>.
+ The <em class="em">Variable</em> name may be wrapped by a single open bracket, <code class="code">[</code> (<code class="code">U+005B</code>), at the start and a single close bracket, <code class="code">]</code> (<code class="code">U+005D</code>), at the end.
+ The open and close brackets, also called the wrapping characters, for the <em class="em">Variable</em> do not utilize escaping characters and instead any escaping is perform against the colon <code class="code">:</code> (<code class="code">U+003A</code>) that separates the <em class="em">Vocabulary</em> from the <em class="em">Content</em>.
+ The <em class="em">Vocabulary</em> generally defines the context and many of the IKI specifications may provide a discrete set of allowed <em class="em">Vocabulary</em>.
+ The <em class="em">Vocabulary</em> may also be referred to as the <em class="em">Object</em>.
+ The <em class="em">Vocabulary</em> only allows word characters or one of <code class="code">_</code> (<code class="code">U+005F</code>), <code class="code">-</code> (<code class="code">U+002D</code>), <code class="code">+</code> (<code class="code">U+002B</code>), <code class="code">[</code> (<code class="code">U+005B</code>)).
+ White space, non-word, and non <code class="code">_</code> (<code class="code">U+005F</code>), <code class="code">-</code> (<code class="code">U+002D</code>), <code class="code">+</code> (<code class="code">U+002B</code>)) character punctuation may not exist as part of the variable name.
+ The only Unicode dash-like characters allowed as a "dash" are those intended to connect, such as the Unicode hyphens (<code class="code">U+2010</code> and <code class="code">U+2011</code>).
+ Unicode punctuation connector characters are supported just like <code class="code">_</code>, except when they connect outside the current line (such as <code class="code">U+FE33</code> <code class="code">︳</code>).
+ The immediate left of a <em class="em">Vocabulary</em> must not be a valid <em class="em">Vocabulary</em> character, unless the <em class="em">Vocabulary</em> is wrapped using the wrapping characters.
+ Unicode invisible punctuation (such as invisible plus: <code class="code">U+2064</code>) are not considered a punctuation in this standard (because they a zero-width characters), therefore they are not to be considered a valid <code class="code">_</code> (<code class="code">U+005F</code>), <code class="code">-</code> (<code class="code">U+002D</code>), or <code class="code">+</code> (<code class="code">U+002B</code>) Unicode equivalents.
</p>
<p class="p">
- A potential IKI variable name starts on word (or <code class="code">_</code>, <code class="code">-</code>, <code class="code">+</code>) characters.
- White space and non-word (and non <code class="code">_</code>, <code class="code">-</code>, <code class="code">+</code>) character punctuations may not exist as part of the variable name.
- The only Unicode dash-like characters allowed as a "dash" are those intended to connect, such as the Unicode hyphens (<code class="code">U+2010</code> and <code class="code">U+2011</code>).
+ The wrapping characters characters are not part of the <em class="em">Vocabulary</em> name and instead only provide the syntax used to help identify a valid <em class="em">Variable</em>.
+ The wrapping characters characters are part of the <em class="em">Variable</em>.
+ The wrapping characters do not support escaping.
+ Both wrapping characters must be specified or neither.
</p>
<p class="p">
- Any valid IKI data may be escaped to make it treated as non-IKI data by prepending a backslash <code class="code">" before the colon code:</code>:" that is before the opening quote (single or double).
+ The <em class="em">Content</em> refers to the value of the <em class="em">Variable</em>.
+ The <em class="em">Content</em> is wrapped one of the following quote characters: single quote <code class="code">'</code> (<code class="code">U+0027</code>), double quote <code class="code">"</code> (<code class="code">U+0022</code>), or grave <code class="code">`</code> (<code class="code">U+0060</code>).
+ The <em class="em">Content</em> must escape any quotes that match the open and close quote used for the <em class="em">Variable</em> by utilizing a backslash <code class="code">\</code> (<code class="code">U+005C</code>).
+ If a matching closing quote is not found until the end of the data (or file), then this unclosed <em class="em">Variable</em> is considered invalid.
+ The handling of this erroneous case is left to the implementation.
</p>
<p class="p">
- Unicode punctuation connector characters are supported just like <code class="code">_</code>, except when they connect outside the current line (such as <code class="code">U+FE33</code> <code class="code">︳</code>).
- Unicode invisible punctuations (such as invisible plus: <code class="code">U+2064</code>) are not considered a punctuations in this standard (because they a zero-width characters), therefore they are not to be considered a valid <code class="code">_</code>, <code class="code">-</code>, or <code class="code">+</code> Unicode equivalents.
+ The backslashes used for escaping quotes use <code class="code">\</code> (<code class="code">U+005C</code>).
+ Unless otherwise specified, these backslash escapes are performed only when required and not unilaterally.
+ One backslash escapes the valid quote, resulting in the quote being part of the <em class="em">Content</em>.
+ Two backslashes escape the backslash, resulting in the backslash (but not the quote) being part of the <em class="em">Content</em>.
+ An odd number of backslashes before a valid quote results in the backslashes and the quote being escaped.
+ An even number of backslashes before a valid quote results in the backslashes but not the quote being escaped.
+ </p>
+ <p class="p">
+ The IKI format will use <code class="code">iki-0000</code> to represent an IKI with no explicitly defined vocabulary.
+ Whereas <code class="code">iki-0001</code> and beyond represent a specific IKI vocabulary.
</p>
<p class="p">
Key:
</p>
<ul>
- <li><code class="code">\o</code> = any printable word character, including <code class="code">_</code>, <code class="code">-</code>, <code class="code">+</code> (and Unicode equivalents).</li>
- <li><code class="code">\c</code> = any character, including white space and non-printing, and any delimited quote (used as the opening quote) or a any quote (undelimited) not used as the opening quote.</li>
- <li><code class="code">\q</code> = either a single quote <code class="code">'</code> or a double quote <code class="code">"</code>.</li>
- <li><code class="code">\x</code> = any character.</li>
- <li><code class="code">\W</code> = any non-word character, discluding <code class="code">_</code>, <code class="code">-</code>, <code class="code">+</code> (and Unicode equivalents).</li>
- <li><code class="code">\e</code> = an optional escape sequence of any number of backslashes, such as <code class="code">\</code>.</li>
- <li><code class="code">*</code> = zero or more occurrences.</li>
- <li><code class="code">~</code> = one or more occurrences, or zero if at start of file.</li>
+ <li><code class="code">\o</code> = any printable word character, including <code class="code">_</code> (<code class="code">U+005F</code>), <code class="code">-</code> (<code class="code">U+002D</code>), <code class="code">+</code> (<code class="code">U+002B</code>) (and Unicode equivalents).</li>
+ <li><code class="code">\c</code> = any character, including white space and non-printing, and any escaped quote (used as the opening quote) or a any quote (unescaped) not used as the opening quote.</li>
+ <li><code class="code">\q</code> = either a single quote <code class="code">'</code> (<code class="code">U+0027</code>), a double quote <code class="code">"</code> (<code class="code">U+0022</code>), or a grave <code class="code">`</code> (<code class="code">U+0060</code>).</li>
+ <li><code class="code">\x</code> = any character.</li>
+ <li><code class="code">\W</code> = any non-word character, discluding <code class="code">_</code> (<code class="code">U+005F</code>) (and Unicode equivalents), <code class="code">-</code> (<code class="code">U+002D</code>) (and Unicode equivalents), and <code class="code">+</code> (<code class="code">U+002B</code>) (and Unicode equivalents).</li>
+ <li><code class="code">\e</code> = an optional escape sequence of any number of backslashes, such as <code class="code">\</code> (<code class="code">U+005C</code>).</li>
+ <li><code class="code">[</code> = a single (conditionally optional) open bracket, <code class="code">[</code> (<code class="code">U+005B</code>).</li>
+ <li><code class="code">]</code> = a single (conditionally optional) close bracket, <code class="code">]</code> (<code class="code">U+005D</code>).</li>
+ <li><code class="code">*</code> = zero or more occurrences.</li>
+ <li><code class="code">~</code> = one or more occurrences, or zero if at start of file.</li>
+ <li><code class="code">+</code> = one or more occurrences.</li>
+ <li><code class="code">:</code> = The colon <code class="code">:</code> (<code class="code">U+003A</code>).</li>
</ul>
<p class="p">
Before Structure:
</p>
<ul>
- <li><code class="code">\x*\W~\*:*</code></li>
+ <li><code class="code">\x*\W~</code></li>
</ul>
<p class="p">
Structure:
</p>
- <ul>
- <li><code class="code">\o\e:\q\c\q</code></li>
- </ul>
+ <p class="p">
+ <li><code class="code">[\o+]\e:\q\c\q</code></li>
+ </p>
<p class="p">
After Structure:
</p>
<p class="p">
Example File:
</p><pre class="preserve">
-# fss-000c iki-0001
+# fss-000c iki-0000
-This is my sentence, anything can go here but sometimes I want to emphasis:"emphasize some text".
+This is my sentence, anything can go here but sometimes I want to italic:"emphasize some text".
-Other times I want to render a url such as this example url: url:'http://www.example.com/url with space/'.
+Other times I want to render a URL such as this example URL: url:'http://www.example.com/url with space/'.
-There are no comments, except for maybe the FSS header (which would not resolve to any IKI syntax anyway).
+There are no comments, except for maybe the FSS:"Featureless Settings Specification" header (which would not resolve to any IKI syntax anyway).
Quotes may be included, such as: code:"const char *string = \"My \\\"quoted\\\" C string.\";".
-The following emphasis\:"is escaped to not be treated as IKI data".
+The following italic\:"is escaped to not be treated as IKI Variable".
+
+The conditionally optional open and close brackets allow for putting a variable directly next to another word character like: [context]:"bold"this[context]:"bold".
+
+These are examples of escapes: one:"\" escape", two:"\\" escape", three:"\\\" escape", six:"\\\\\\" escape".
+
+These are examples of non-escapes: one:"\' escape", two:"\\' escape", three:"\\\' escape", six:"\\\\\\' escape".
+
+These slashes \ \\ \\\ are not escaped because there is now quote immediately after each of them.
</pre>
<p class="p">
Example Results:
- </p><pre class="preserve margin-below">
-Objects would be:
- 1) emphasis
- 2) url
- 3) code
-
-Contents would be:
- 1.1) emphasize some text
- 2.1) http://www.example.com/url with space/
- 3.1) const char *string = "My \"quoted\" C string.";
+ </p><pre class="preserve">
+Objects (also called vocabulary or variable name) would be:
+ 1.1) italic
+ 2.1) URL
+ 3.1) FSS
+ 4.1) code
+ 5.1) context
+ 6.1) context
+ 7.1) one
+ 8.1) two
+ 9.1) three
+ 10.1) six
+ 11.1) one
+ 12.1) two
+ 13.1) three
+ 14.1) six
+
+Contents (also called variable value) would be:
+ 1.1) emphasize some text
+ 2.1) http://www.example.com/url with space/
+ 3.1) Featureless Settings Specification
+ 4.1) const char *string = "My \"quoted\" C string.";
+ 5.1) bold
+ 6.1) bold
+ 7.1) " escape
+ 8.1) \
+ 9.1) \" escape
+ 10.1) \\\
+ 11.1) \' escape
+ 12.1) \\' escape
+ 13.1) \\\' escape
+ 14.1) \\\\\\' escape
</pre>
</div>
</section>
IKI is a minimally structured WIKI-like syntax meant to be simpler than WIKI syntax.
</p>
<p class="p">
- The IKI syntax provides a vocabulary name (with specific context associated with it) followed by quoted code that is associated with the given vocabulary name.
- The vocabulary represents a list of allowed variable names that may also have specific contextual meaning defined by a given IKI specification.
- The variable name is considered the <em class="em">Object</em>.
- The variable value is considered the <em class="em">Content</em>.
+ The IKI syntax describes a <em class="em">Variable</em> that is defined by a <em class="em">Vocabulary</em> name followed by quoted value called the <em class="em">Content</em>.
</p>
<p class="p">
- The IKI format will use <code class="code">iki-0000</code> to represent an IKI with no explicitly defined vocabulary.
- Whereas <code class="code">iki-0001</code> and beyond represent a specific IKI vocabulary.
+ The <em class="em">Variable</em> refers to the <em class="em">Vocabulary</em>, <em class="em">Content</em>, and associated syntax that describes the <em class="em">Variable</em>.
+ The <em class="em">Variable</em> name may be wrapped by a single open bracket, <code class="code">[</code> (<code class="code">U+005B</code>), at the start and a single close bracket, <code class="code">]</code> (<code class="code">U+005D</code>), at the end.
+ The open and close brackets, also called the wrapping characters, for the <em class="em">Variable</em> do not utilize escaping characters and instead any escaping is perform against the colon <code class="code">:</code> (<code class="code">U+003A</code>) that separates the <em class="em">Vocabulary</em> from the <em class="em">Content</em>.
+ The <em class="em">Vocabulary</em> generally defines the context and many of the IKI specifications may provide a discrete set of allowed <em class="em">Vocabulary</em>.
+ The <em class="em">Vocabulary</em> may also be referred to as the <em class="em">Object</em>.
+ The <em class="em">Vocabulary</em> only allows word characters or one of <code class="code">_</code> (<code class="code">U+005F</code>), <code class="code">-</code> (<code class="code">U+002D</code>), <code class="code">+</code> (<code class="code">U+002B</code>), <code class="code">[</code> (<code class="code">U+005B</code>)).
+ White space, non-word, and non <code class="code">_</code> (<code class="code">U+005F</code>), <code class="code">-</code> (<code class="code">U+002D</code>), <code class="code">+</code> (<code class="code">U+002B</code>)) character punctuation may not exist as part of the variable name.
+ The only Unicode dash-like characters allowed as a "dash" are those intended to connect, such as the Unicode hyphens (<code class="code">U+2010</code> and <code class="code">U+2011</code>).
+ Unicode punctuation connector characters are supported just like <code class="code">_</code>, except when they connect outside the current line (such as <code class="code">U+FE33</code> <code class="code">︳</code>).
+ The immediate left of a <em class="em">Vocabulary</em> must not be a valid <em class="em">Vocabulary</em> character, unless the <em class="em">Vocabulary</em> is wrapped using the wrapping characters.
+ Unicode invisible punctuation (such as invisible plus: <code class="code">U+2064</code>) are not considered a punctuation in this standard (because they a zero-width characters), therefore they are not to be considered a valid <code class="code">_</code> (<code class="code">U+005F</code>), <code class="code">-</code> (<code class="code">U+002D</code>), or <code class="code">+</code> (<code class="code">U+002B</code>) Unicode equivalents.
</p>
<p class="p">
- A potential IKI variable name starts on word (or <code class="code">_</code>, <code class="code">-</code>, <code class="code">+</code>) characters.
- White space and non-word (and non <code class="code">_</code>, <code class="code">-</code>, <code class="code">+</code>) character punctuations may not exist as part of the variable name.
- The only Unicode dash-like characters allowed as a "dash" are those intended to connect, such as the Unicode hyphens (<code class="code">U+2010</code> and <code class="code">U+2011</code>).
+ The wrapping characters characters are not part of the <em class="em">Vocabulary</em> name and instead only provide the syntax used to help identify a valid <em class="em">Variable</em>.
+ The wrapping characters characters are part of the <em class="em">Variable</em>.
+ The wrapping characters do not support escaping.
+ Both wrapping characters must be specified or neither.
</p>
<p class="p">
- Any valid IKI data may be escaped to make it treated as non-IKI data by prepending a backslash <code class="code">" before the colon code:</code>:" that is before the opening quote (single or double).
+ The <em class="em">Content</em> refers to the value of the <em class="em">Variable</em>.
+ The <em class="em">Content</em> is wrapped one of the following quote characters: single quote <code class="code">'</code> (<code class="code">U+0027</code>), double quote <code class="code">"</code> (<code class="code">U+0022</code>), or grave <code class="code">`</code> (<code class="code">U+0060</code>).
+ The <em class="em">Content</em> must escape any quotes that match the open and close quote used for the <em class="em">Variable</em> by utilizing a backslash <code class="code">\</code> (<code class="code">U+005C</code>).
+ If a matching closing quote is not found until the end of the data (or file), then this unclosed <em class="em">Variable</em> is considered invalid.
+ The handling of this erroneous case is left to the implementation.
</p>
<p class="p">
- Unicode punctuation connector characters are supported just like <code class="code">_</code>, except when they connect outside the current line (such as <code class="code">U+FE33</code> <code class="code">︳</code>).
- Unicode invisible punctuations (such as invisible plus: <code class="code">U+2064</code>) are not considered a punctuations in this standard (because they a zero-width characters), therefore they are not to be considered a valid <code class="code">_</code>, <code class="code">-</code>, or <code class="code">+</code> Unicode equivalents.
+ The backslashes used for escaping quotes use <code class="code">\</code> (<code class="code">U+005C</code>).
+ Unless otherwise specified, these backslash escapes are performed only when required and not unilaterally.
+ One backslash escapes the valid quote, resulting in the quote being part of the <em class="em">Content</em>.
+ Two backslashes escape the backslash, resulting in the backslash (but not the quote) being part of the <em class="em">Content</em>.
+ An odd number of backslashes before a valid quote results in the backslashes and the quote being escaped.
+ An even number of backslashes before a valid quote results in the backslashes but not the quote being escaped.
+ </p>
+ <p class="p">
+ The IKI format will use <code class="code">iki-0000</code> to represent an IKI with no explicitly defined vocabulary.
+ Whereas <code class="code">iki-0001</code> and beyond represent a specific IKI vocabulary.
</p>
<p class="p">
Key:
</p>
<ul>
- <li><code class="code">\o</code> = any printable word character, including <code class="code">_</code>, <code class="code">-</code>, <code class="code">+</code> (and Unicode equivalents).</li>
- <li><code class="code">\c</code> = any character, including white space and non-printing, and any delimited quote (used as the opening quote) or a any quote (undelimited) not used as the opening quote.</li>
- <li><code class="code">\q</code> = either a single quote <code class="code">'</code> or a double quote <code class="code">"</code>.</li>
- <li><code class="code">\x</code> = any character.</li>
- <li><code class="code">\W</code> = any non-word character, discluding <code class="code">_</code>, <code class="code">-</code>, <code class="code">+</code> (and Unicode equivalents).</li>
- <li><code class="code">\e</code> = an optional escape sequence of any number of backslashes, such as <code class="code">\</code>.</li>
- <li><code class="code">*</code> = zero or more occurrences.</li>
- <li><code class="code">~</code> = one or more occurrences, or zero if at start of file.</li>
+ <li><code class="code">\o</code> = any printable word character, including <code class="code">_</code> (<code class="code">U+005F</code>), <code class="code">-</code> (<code class="code">U+002D</code>), <code class="code">+</code> (<code class="code">U+002B</code>) (and Unicode equivalents).</li>
+ <li><code class="code">\c</code> = any character, including white space and non-printing, and any escaped quote (used as the opening quote) or a any quote (unescaped) not used as the opening quote.</li>
+ <li><code class="code">\q</code> = either a single quote <code class="code">'</code> (<code class="code">U+0027</code>), a double quote <code class="code">"</code> (<code class="code">U+0022</code>), or a grave <code class="code">`</code> (<code class="code">U+0060</code>).</li>
+ <li><code class="code">\x</code> = any character.</li>
+ <li><code class="code">\W</code> = any non-word character, discluding <code class="code">_</code> (<code class="code">U+005F</code>) (and Unicode equivalents), <code class="code">-</code> (<code class="code">U+002D</code>) (and Unicode equivalents), and <code class="code">+</code> (<code class="code">U+002B</code>) (and Unicode equivalents).</li>
+ <li><code class="code">\e</code> = an optional escape sequence of any number of backslashes, such as <code class="code">\</code> (<code class="code">U+005C</code>).</li>
+ <li><code class="code">[</code> = a single (conditionally optional) open bracket, <code class="code">[</code> (<code class="code">U+005B</code>).</li>
+ <li><code class="code">]</code> = a single (conditionally optional) close bracket, <code class="code">]</code> (<code class="code">U+005D</code>).</li>
+ <li><code class="code">*</code> = zero or more occurrences.</li>
+ <li><code class="code">~</code> = one or more occurrences, or zero if at start of file.</li>
+ <li><code class="code">+</code> = one or more occurrences.</li>
+ <li><code class="code">:</code> = The colon <code class="code">:</code> (<code class="code">U+003A</code>).</li>
</ul>
<p class="p">
Before Structure:
</p>
<ul>
- <li><code class="code">\x*\W~\*:*</code></li>
+ <li><code class="code">\x*\W~</code></li>
</ul>
<p class="p">
Structure:
</p>
- <ul>
- <li><code class="code">\o\e:\q\c\q</code></li>
- </ul>
+ <p class="p">
+ <li><code class="code">[\o+]\e:\q\c\q</code></li>
+ </p>
<p class="p">
After Structure:
</p>
</p><pre class="preserve">
# fss-000c iki-0000
-This is my sentence, anything can go here but sometimes I want to emphasis:"emphasize some text".
+This is my sentence, anything can go here but sometimes I want to italic:"emphasize some text".
-Other times I want to render a url such as this example url: url:'http://www.example.com/url with space/'.
+Other times I want to render a URL such as this example URL: url:'http://www.example.com/url with space/'.
-There are no comments, except for maybe the FSS header (which would not resolve to any IKI syntax anyway).
+There are no comments, except for maybe the FSS:"Featureless Settings Specification" header (which would not resolve to any IKI syntax anyway).
Quotes may be included, such as: code:"const char *string = \"My \\\"quoted\\\" C string.\";".
-The following emphasis\:"is escaped to not be treated as IKI data".
+The following italic\:"is escaped to not be treated as IKI Variable".
+
+The conditionally optional open and close brackets allow for putting a variable directly next to another word character like: [context]:"bold"this[context]:"bold".
+
+These are examples of escapes: one:"\" escape", two:"\\" escape", three:"\\\" escape", six:"\\\\\\" escape".
+
+These are examples of non-escapes: one:"\' escape", two:"\\' escape", three:"\\\' escape", six:"\\\\\\' escape".
+
+These slashes \ \\ \\\ are not escaped because there is now quote immediately after each of them.
</pre>
<p class="p">
Example Results:
- </p><pre class="preserve margin-below">
-Objects would be:
- 1) emphasis
- 2) url
- 3) code
-
-Contents would be:
- 1.1) emphasize some text
- 2.1) http://www.example.com/url with space/
- 3.1) const char *string = "My \"quoted\" C string.";
+ </p><pre class="preserve">
+Objects (also called vocabulary or variable name) would be:
+ 1.1) italic
+ 2.1) URL
+ 3.1) FSS
+ 4.1) code
+ 5.1) context
+ 6.1) context
+ 7.1) one
+ 8.1) two
+ 9.1) three
+ 10.1) six
+ 11.1) one
+ 12.1) two
+ 13.1) three
+ 14.1) six
+
+Contents (also called variable value) would be:
+ 1.1) emphasize some text
+ 2.1) http://www.example.com/url with space/
+ 3.1) Featureless Settings Specification
+ 4.1) const char *string = "My \"quoted\" C string.";
+ 5.1) bold
+ 6.1) bold
+ 7.1) " escape
+ 8.1) \
+ 9.1) \" escape
+ 10.1) \\\
+ 11.1) \' escape
+ 12.1) \\' escape
+ 13.1) \\\' escape
+ 14.1) \\\\\\' escape
</pre>
</div>
</section>