From 0b89546f5cc9324c1831bb8dbb4b0f93a76d9bd8 Mon Sep 17 00:00:00 2001 From: Kevin Day Date: Mon, 16 May 2022 21:47:06 -0500 Subject: [PATCH] Update: Specifications. Started using IKI format in the specification files. Made changes and performed fixes as I noticed them while copying the specifications to the website. --- specifications/fss-0000.txt | 36 +++++++++++------- specifications/fss-0001.txt | 34 ++++++++++------- specifications/fss-0002.txt | 38 ++++++++++-------- specifications/fss-0003.txt | 48 +++++++++++++---------- specifications/fss-0004.txt | 18 ++++++--- specifications/fss-0005.txt | 20 ++++++---- specifications/fss-0006.txt | 18 ++++++--- specifications/fss-0007.txt | 20 ++++++---- specifications/fss-0008.txt | 12 ++++-- specifications/fss-0009.txt | 38 ++++++++++-------- specifications/fss-000a.txt | 36 +++++++++++------- specifications/fss-000b.txt | 12 ++++-- specifications/fss-000c.txt | 14 +++++-- specifications/fss-000d.txt | 28 ++++++++------ specifications/fss-000e.txt | 61 +++++++++++++++-------------- specifications/fss-000f.txt | 26 ++++++++----- specifications/fss.txt | 93 ++++++++++++++++++++++++--------------------- specifications/iki-0000.txt | 10 ++++- specifications/iki-0001.txt | 30 +++++++++------ specifications/iki-0002.txt | 18 ++++++--- specifications/iki.txt | 60 +++++++++++++++++------------ 21 files changed, 407 insertions(+), 263 deletions(-) diff --git a/specifications/fss-0000.txt b/specifications/fss-0000.txt index 252764f..d7dbd75 100644 --- a/specifications/fss-0000.txt +++ b/specifications/fss-0000.txt @@ -1,35 +1,43 @@ -# fss-0002 +# fss-0002 iki-0000 # # license: open-standard-license-1.0 # +# This file (assumed to be named fss-0000.txt) can be more easily read using the following iki_read commands: +# iki_read fss-0000.txt -w +# +# To read the "Featureless Settings Specification: 0000 - Basic" section of this file, use this command sequence: +# fss_basic_list_read fss-0000.txt -cn "Featureless Settings Specification: 0000 - Basic" | iki_read -w +# Featureless Settings Specification: 0000 - Basic: - Each Object starts at the beginning of a line and whitespace to the left of the Object is not treated as part of the object. - Whitespace separates an Object from the Content. + 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. - If only printing whitespace follows a valid Object, that Object is considered to have no Content. + If only printing white space follows a valid Object, that Object is considered to have no Content. 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-whitespace character until the newline. - Content column includes trailing whitespace before newline is reached. - Content column does not include any of the leading whitespace. + 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 column does not include any of the leading white space. No delimits are supported in the Content. Key\: - \s = whitespace, except newline. - \b = either whitespace or printable, except newline. - \q = non-whitespace or quoted whitespace with no whitespace outside of the quotes. - \n = newline. - * = zero or more occurrences. - + = one or more occurrences. + code:"\s" = White space, except newline. + code:"\b" = Either white space or printable, except newline. + code:"\q" = Non-white space or quoted white space with no white space outside of the quotes. + code:"\n" = Newline. + code:"*" = Zero or more occurrences. + code:"+" = One or more occurrences. Before Structure\: + code:"" Structure\: - \s*\q+\s+\b*\n + code:"\s*\q+\s+\b*\n" After Structure\: + code:"" Example\: # fss-0000 diff --git a/specifications/fss-0001.txt b/specifications/fss-0001.txt index e8086be..a3871fe 100644 --- a/specifications/fss-0001.txt +++ b/specifications/fss-0001.txt @@ -1,34 +1,42 @@ -# fss-0002 +# fss-0002 iki-0000 # # license: open-standard-license-1.0 # +# This file (assumed to be named fss-0001.txt) can be more easily read using the following iki_read commands: +# iki_read fss-0001.txt -w +# +# To read the "Featureless Settings Specification: 0001 - Extended" section of this file, use this command sequence: +# fss_basic_list_read fss-0001.txt -cn "Featureless Settings Specification: 0001 - Extended" | iki_read -w +# Featureless Settings Specification: 0001 - Extended: - Each Object starts at the beginning of a line and whitespace to the left of the Object is not treated as an object. - Whitespace separates an Object from the Content. + 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. - If only printing whitespace follows a valid Object, that Object is considered to have no Content. + If only printing white space follows a valid Object, that Object is considered to have no Content. Content exists on the same line as the Object. Content is represented as multiple Content columns. - Content columns are whitespace separated parts within the Content and terminated by a newline. + 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. Key\: - \s = whitespace, except newline. - \b = either whitespace or printable, except newline. - \q = non-whitespace or quoteded whitespace, no whitespace outside of quotes. - \n = newline. - * = 0 or more occurrences. - + = one or more occurrences. - ()* = grouping that repeats 0 or more times. + code:"\s" = White space, except newline. + code:"\b" = Either white space or printable, except newline. + code:"\q" = Non-white space or quoted white space, no white space outside of quotes. + code:"\n" = Newline. + code:"*" = Zero or more occurrences. + code:"+" = One or more occurrences. + code:"()*" = Grouping that repeats 0 or more times. Before Structure\: + code:"" Structure\: - \s*\q+\s+(\s*\q+)*\s*\n + code:"\s*\q+\s+(\s*\q+)*\s*\n" After Structure\: + code:"" Example\: # fss-0001 diff --git a/specifications/fss-0002.txt b/specifications/fss-0002.txt index 37cbc31..e287b14 100644 --- a/specifications/fss-0002.txt +++ b/specifications/fss-0002.txt @@ -1,14 +1,18 @@ -# fss-0002 +# fss-0002 iki-0000 # # license: open-standard-license-1.0 # -# Note: This file is in fss-0002 format and as a result the example below has to be escaped (can potentially be confusing when reading this raw). -# The "This Does\\\:" below is actually "This Does\:" when processed by fss-0002. +# 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 -w +# +# To read the "Featureless Settings Specification: 0002 - Basic List" section of this file, use this command sequence: +# fss_basic_list_read fss-0002.txt -cn "Featureless Settings Specification: 0002 - Basic List" | iki_read -w +# Featureless Settings Specification: 0002 - Basic List: - Each Object starts at the beginning of a line and whitespace to the left of the Object is not treated as an object. - A colon followed by any whitespace until a newline terminates a valid Object. - Non-whitespace may not follow the colon of 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 followed by any white space until a newline terminates a valid Object. + Non-white space may not follow the colon of a valid Object. Content is represented as a single Content column of every line following a valid object until the end of file (or string) or until the next valid Object is found. Any Content that could be interpreted as a valid Object must have the colon delimited. @@ -16,22 +20,24 @@ Featureless Settings Specification: 0002 - Basic List: There is no single-quote or double-quote delimitation in this specification. Only the colon that would result in a valid Object can be delimited. - Empty Objects are allowed, that is, the length of the object may be 0. + Empty Objects are allowed, that is, the length of the object may be zero. Key\: - \s = whitespace, except newline. - \o = any printable character, except unescaped ':'. - \l = any printable character or whitespace, except unescaped ':'. - \c = either whitespace or printable, including newline, that not interpretable as an Object. - \n = newline. - * = 0 or more occurrences. + code:"\s" = White space, except newline. + code:"\o" = Any printable character, except unescaped ':'. + code:"\l" = Any printable character or white space, except unescaped ':'. + code:"\c" = Either white space or printable, including newline, that not interpretable as an Object. + code:"\n" = Newline. + code:"*" = Zero or more occurrences. Before Structure\: + code:"" Structure\: - \s*\o\l*:\s*\n\c*\n* + code:"\s*\o\l*:\s*\n\c*\n*" After Structure\: + code:"" Example\: # fss-0002 @@ -42,7 +48,7 @@ Featureless Settings Specification: 0002 - Basic List: This Does\\\: Second\: Continues until EOS/EOF. - All whitespace, including newline (and leading whitespace) is "part of content." + All white space, including newline (and leading white space) is "part of content." # Valid comments are still ignored. Objects would be\: @@ -54,4 +60,4 @@ Featureless Settings Specification: 0002 - Basic List: This: does not need to be delimited. This Does\: 2.1) Continues until EOS/EOF. - All whitespace, including newline (and leading whitespace) is "part of content." + All white space, including newline (and leading white space) is "part of content." diff --git a/specifications/fss-0003.txt b/specifications/fss-0003.txt index 5d54726..50a7150 100644 --- a/specifications/fss-0003.txt +++ b/specifications/fss-0003.txt @@ -1,43 +1,51 @@ -# fss-0002 +# fss-0002 iki-0000 # # license: open-standard-license-1.0 # +# 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 -w +# +# To read the "Featureless Settings Specification: 0003 - Extended List" section of this file, use this command sequence: +# fss_basic_list_read fss-0003.txt -cn "Featureless Settings Specification: 0003 - Extended List" | iki_read -w +# Featureless Settings Specification: 0003 - Extended List: - Each Object starts at the beginning of a line and whitespace to the left of the Object is not treated as an object. - An open-brace ({) followed by any whitespace until a newline terminates a possible valid Object. - An Object is not considered fully valid until a valid close-brace (}) is found, designating the end of the Content. - Non-whitespace may not follow the open-brace of 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. + An open-brace code:"{" followed by any white space until a newline terminates a possible valid Object. + An Object is not considered fully valid until a valid close-brace code:"}" is found, designating the end of the Content. + Non-white space may not follow the open-brace of a valid Object. - Content is represented as a single Content column of every line following a valid object until the end of file (or string) or until a non-delimited close-brace (}). + 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:"}". Any Content column that could be interpreted as an end of Content must be delimited if it should be part of the Content. - Whitespace may follow a valid close-brace but a terminating newline must be present to designate a valid end of Content. + White space may follow a valid close-brace but a terminating newline must be present to designate a valid end of Content. There is no single-quote or double-quote delimitation in this specification. Only the open-brace that would result in a valid Object or the close-brace that would terminate valid Content can be delimited. When inside potentially valid Content (which follows a valid Object) the open-brace 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. - Likelwise, the close-brace may only be delimited if it is within any potentially valid Content. + Likewise, the close-brace may only be delimited if it is within any potentially valid Content. - Each delimit slash in a delimitable open-brace is treated as a potential delimit such that two slashes represents a single delimited slash ('\\{' would represent '\{'). - Only the first delimit slash in a delimitable close-brace is treated as a potential delimit ('\\\}' would represent '\\}'). + Each delimit slash in a delimitable open-brace 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 is treated as a potential delimit (code:"\\\}" would represent code:"\\}"). - Empty Objects are allowed, that is, the length of the object may be 0. + Empty Objects are allowed, that is, the length of the object may be zero. Key\: - \s = whitespace, except newline. - \o = any printable character, except unescaped '{'. - \l = any printable character or whitespace, except unescaped '}'. - \c = either whitespace or printable, including newline, that is not interpretable as an Object. - \n = newline. - * = 0 or more occurrences. + code:"\s" = White space, except newline. + code:"\o" = Any printable character, except unescaped code:"{". + code:"\l" = Any printable character or white space, except unescaped code:"}". + code:"\c" = Either white space or printable, including newline, that is not interpretable as an Object. + code:"\n" = Newline. + code:"*" = Zero or more occurrences. Before Structure\: + code:"" Structure\: - \s*\o\l*{\s*\n\c*\n\s*}\s*\n + code:"\s*\o\l*{\s*\n\c*\n\s*}\s*\n" After Structure\: + code:"" Example\: # fss-0003 @@ -50,7 +58,7 @@ Featureless Settings Specification: 0003 - Extended List: Second { Continues until EOS/EOF. - All whitespace, including newline (and leading whitespace) is "part of content." + All white space, including newline (and leading white space) is "part of content." # Valid comments are still ignored. } @@ -63,4 +71,4 @@ Featureless Settings Specification: 0003 - Extended List: This: does not need to be delimited. } 2.1) Continues until EOS/EOF. - All whitespace, including newline (and leading whitespace) is "part of content." + All white space, including newline (and leading white space) is "part of content." diff --git a/specifications/fss-0004.txt b/specifications/fss-0004.txt index edc42fa..72009a4 100644 --- a/specifications/fss-0004.txt +++ b/specifications/fss-0004.txt @@ -1,14 +1,20 @@ -# fss-0002 +# fss-0002 iki-0000 # # license: open-standard-license-1.0 # +# This file (assumed to be named fss-0004.txt) can be more easily read using the following iki_read commands: +# iki_read fss-0004.txt -w +# +# To read the "Featureless Settings Specification: 0004 - Very Basic List" section of this file, use this command sequence: +# fss_basic_list_read fss-0004.txt -cn "Featureless Settings Specification: 0004 - Very Basic List" | iki_read -w +# Featureless Settings Specification: 0004 - Very Basic List: - This is a fss-0002 Basic List whose Content is then processed as fss-0000 Basic. + This is a code:"fss-0002 (Basic List)" whose Content is then processed as code:"fss-0000 (Basic)". - All Basic List (fss-0002) escapes are applied before any Basic (fss-0000) is identified. + All code:"fss-0002 (Basic List)" escapes are applied before any code:"fss-0000 (Basic)" is identified. - See the fss-0000.txt and fss-0002.txt specification files for details on the syntax rules. + See the file:"fss-0000.txt" and file:"fss-0002.txt" specification files for details on the syntax rules. Example\: # fss-0004 @@ -19,7 +25,7 @@ Featureless Settings Specification: 0004 - Very Basic List: This Does\\\: Second\: Continues until EOS/EOF. - All whitespace, including newline (and leading whitespace) is "part of content." + All white space, including newline (and leading white space) is "part of content." # Valid comments are still ignored. Outer Objects would be\: @@ -40,4 +46,4 @@ Featureless Settings Specification: 0004 - Very Basic List: 1.3.1) Does\: 2.1.1) until EOS/EOF. - 2.2.1) whitespace, including newline (and leading whitespace) is "part of content." + 2.2.1) white space, including newline (and leading white space) is "part of content." diff --git a/specifications/fss-0005.txt b/specifications/fss-0005.txt index cb4ec32..4ec0062 100644 --- a/specifications/fss-0005.txt +++ b/specifications/fss-0005.txt @@ -1,14 +1,20 @@ -# fss-0002 +# fss-0002 iki-0000 # # license: open-standard-license-1.0 # +# This file (assumed to be named fss-0005.txt) can be more easily read using the following iki_read commands: +# iki_read fss-0005.txt -w +# +# To read the "Featureless Settings Specification: 0005 - Somewhat Basic List" section of this file, use this command sequence: +# fss_basic_list_read fss-0005.txt -cn "Featureless Settings Specification: 0005 - Somewhat Basic List" | iki_read -w +# Featureless Settings Specification: 0005 - Somewhat Basic List: - This is a fss-0002 Basic List whose Content is then processed as fss-0001 Extended. + This is a code"fss-0002 (Basic List)" whose Content is then processed as code:"fss-0001 (Extended)". - All Basic List (fss-0002) escapes are applied before any Extended (fss-0001) is identified. + All code:"fss-0002 (Basic List)" escapes are applied before any code:"fss-0001 (Extended)" is identified. - See the fss-0001.txt and fss-0002.txt specification files for details on the syntax rules. + See the file:"fss-0001.txt" and file:"fss-0002.txt" specification files for details on the syntax rules. Example\: # fss-0005 @@ -19,7 +25,7 @@ Featureless Settings Specification: 0005 - Somewhat Basic List: This Does\\\: Second\: Continues until EOS/EOF. - All whitespace, including newline (and leading whitespace) is "part of content." + All white space, including newline (and leading white space) is "part of content." # Valid comments are still ignored. Outer Objects would be\: @@ -53,11 +59,11 @@ Featureless Settings Specification: 0005 - Somewhat Basic List: 2.1.1) until 2.1.2) EOS/EOF. - 2.2.1) whitespace, + 2.2.1) white space, 2.2.2) including 2.2.3) newline 2.2.4) (and 2.2.5) leading - 2.2.6) whitespace) + 2.2.6) white space) 2.2.7) is 2.2.8) part of content. diff --git a/specifications/fss-0006.txt b/specifications/fss-0006.txt index 1cc6e18..351b1d2 100644 --- a/specifications/fss-0006.txt +++ b/specifications/fss-0006.txt @@ -1,14 +1,20 @@ -# fss-0002 +# fss-0002 iki-0000 # # license: open-standard-license-1.0 # +# This file (assumed to be named fss-0006.txt) can be more easily read using the following iki_read commands: +# iki_read fss-0006.txt -w +# +# To read the "Featureless Settings Specification: 0006 - Somewhat Extended List" section of this file, use this command sequence: +# fss_basic_list_read fss-0006.txt -cn "Featureless Settings Specification: 0006 - Somewhat Extended List" | iki_read -w +# Featureless Settings Specification: 0006 - Somewhat Extended List: - This is a fss-0003 Extended List whose Content is then processed as fss-0000 Basic. + This is a code:"fss-0003 (Extended List)" whose Content is then processed as code:"fss-0000 (Basic)". - All Extended List (fss-0003) escapes are applied before any Basic (fss-0000) is identified. + All code:"fss-0003 (Extended List)" escapes are applied before any code:"fss-0000 (Basic)" is identified. - See the fss-0000.txt and fss-0003.txt specification files for details on the syntax rules. + See the file:"fss-0000.txt" and file:"fss-0003.txt" specification files for details on the syntax rules. Example\: # fss-0006 @@ -21,7 +27,7 @@ Featureless Settings Specification: 0006 - Somewhat Extended List: Second { Continues until EOS/EOF. - All whitespace, including newline (and leading whitespace) is "part of content." + All white space, including newline (and leading white space) is "part of content." # Valid comments are still ignored. } @@ -43,4 +49,4 @@ Featureless Settings Specification: 0006 - Somewhat Extended List: 1.3.1) 2.1.1) until EOS/EOF. - 2.2.1) whitespace, including newline (and leading whitespace) is "part of content." + 2.2.1) white space, including newline (and leading white space) is "part of content." diff --git a/specifications/fss-0007.txt b/specifications/fss-0007.txt index 3c377f5..51f2e46 100644 --- a/specifications/fss-0007.txt +++ b/specifications/fss-0007.txt @@ -1,14 +1,20 @@ -# fss-0002 +# fss-0002 iki-0000 # # license: open-standard-license-1.0 # +# This file (assumed to be named fss-0007.txt) can be more easily read using the following iki_read commands: +# iki_read fss-0007.txt -w +# +# To read the "Featureless Settings Specification: 0007 - Very Extended List" section of this file, use this command sequence: +# fss_basic_list_read fss-0007.txt -cn "Featureless Settings Specification: 0007 - Very Extended List" | iki_read -w +# Featureless Settings Specification: 0007 - Very Extended List: - This is a fss-0003 Extended List whose Content is then processed as fss-0001 Extended. + This is a code:"fss-0003 (Extended List)" whose Content is then processed as code:"fss-0001 (Extended)". - All Extended List (fss-0003) escapes are applied before any Extended (fss-0001) is identified. + All code:"fss-0003 (Extended List)" escapes are applied before any code:"fss-0001 (Extended)" is identified. - See the fss-0001.txt and fss-0003.txt specification files for details on the syntax rules. + See the file:"fss-0001.txt" and file:"fss-0003.txt" specification files for details on the syntax rules. Example\: # fss-0007 @@ -21,7 +27,7 @@ Featureless Settings Specification: 0007 - Very Extended List: Second { Continues until EOS/EOF. - All whitespace, including newline (and leading whitespace) is "part of content." + All white space, including newline (and leading white space) is "part of content." # Valid comments are still ignored. } @@ -56,11 +62,11 @@ Featureless Settings Specification: 0007 - Very Extended List: 2.1.1) until 2.1.2) EOS/EOF. - 2.2.1) whitespace, + 2.2.1) white space, 2.2.2) including 2.2.3) newline 2.2.4) (and 2.2.5) leading - 2.2.6) whitespace) + 2.2.6) white space) 2.2.7) is 2.2.8) part of content. diff --git a/specifications/fss-0008.txt b/specifications/fss-0008.txt index b020921..477fc10 100644 --- a/specifications/fss-0008.txt +++ b/specifications/fss-0008.txt @@ -1,12 +1,18 @@ -# fss-0002 +# fss-0002 iki-0000 # # license: open-standard-license-1.0 # +# This file (assumed to be named fss-0008.txt) can be more easily read using the following iki_read commands: +# iki_read fss-0008.txt -w +# +# To read the "Featureless Settings Specification: 0008 - Embedded List" section of this file, use this command sequence: +# fss_basic_list_read fss-0008.txt -cn "Featureless Settings Specification: 0008 - Embedded List" | iki_read -w +# Featureless Settings Specification: 0008 - Embedded List: - This is a fss-0003 Extended List whose Content is then recursively processed as fss-0003 Extended List. + This is a code:"fss-0003 (Extended List)" whose Content is then recursively processed as code:"fss-0003 (Extended List)". - See the fss-0003.txt specification file for details on the syntax rules. + See the file:"fss-0003.txt" specification file for details on the syntax rules. Example\: # fss-0008 diff --git a/specifications/fss-0009.txt b/specifications/fss-0009.txt index aa322bc..891184b 100644 --- a/specifications/fss-0009.txt +++ b/specifications/fss-0009.txt @@ -1,37 +1,45 @@ -# fss-0002 +# fss-0002 iki-0000 # # license: open-standard-license-1.0 # +# This file (assumed to be named fss-0009.txt) can be more easily read using the following iki_read commands: +# iki_read fss-0009.txt -w +# +# To read the "Featureless Settings Specification: 0009 - Reverse Mapping" section of this file, use this command sequence: +# fss_basic_list_read fss-0009.txt -cn "Featureless Settings Specification: 0009 - Reverse Mapping" | iki_read -w +# Featureless Settings Specification: 0009 - Reverse Mapping: - This is based off of fss-0000 Basic, except the Object is at the end of the line. + This is based off of code:"fss-0000 (Basic)", except the Object is at the end of the line. - Each Object starts at the end of a line and whitespace to the left of the Object is not treated as part of the object. - Whitespace separates an Object from the Content. + 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. + 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. - If only printing whitespace precedes a valid Object, that Object is considered to have no Content. + If only printing white space precedes a valid Object, that Object is considered to have no Content. Content exists on the same line as the Object. Content is represented as a single Content column that begins at a newline. - Content column consists of everything following the first non-whitespace character at the start of the line until the Object is reached. - Content column includes trailing whitespace before newline is reached. - Content column does not include any of the whitespace between the last non-whitespace character and the start of the Object. + Content column consists of everything following the first non-white space character at the start of the line until the Object is reached. + Content column includes trailing white space before newline is reached. + Content column does not include any of the white space between the last non-white space character and the start of the Object. No delimits are supported in the Content. Key\: - \s = whitespace, except newline. - \b = either whitespace or printable, except newline. - \q = non-whitespace or quoted whitespace with no whitespace outside of the quotes. - \n = newline. - * = zero or more occurrences. - + = one or more occurrences. + code:"\s" = White space, except newline. + code:"\b" = Either white space or printable, except newline. + code:"\q" = Non-white space or quoted white space with no white space outside of the quotes. + code:"\n" = Newline. + code:"*" = Zero or more occurrences. + code:"+" = One or more occurrences. Before Structure\: + code:"" Structure\: - \s*\b*\s+\q+\s*\n + code:"\s*\b*\s+\q+\s*\n" After Structure\: + code:"" Example\: # fss-0009 diff --git a/specifications/fss-000a.txt b/specifications/fss-000a.txt index e023ac5..78b4e81 100644 --- a/specifications/fss-000a.txt +++ b/specifications/fss-000a.txt @@ -1,36 +1,44 @@ -# fss-0002 +# fss-0002 iki-0000 # # license: open-standard-license-1.0 # +# This file (assumed to be named fss-000a.txt) can be more easily read using the following iki_read commands: +# iki_read fss-000a.txt -w +# +# To read the "Featureless Settings Specification: 000A - Extended Reverse Mapping" section of this file, use this command sequence: +# fss_basic_list_read fss-000a.txt -cn "Featureless Settings Specification: 000A - Extended Reverse Mapping" | iki_read -w +# Featureless Settings Specification: 000A - Extended Reverse Mapping: - This is based off of fss-0001 Extended, except the Object is at the end of the line. + This is based off of code:"fss-0001 (Extended)", except the Object is at the end of the line. - Each Object starts at the end of a line and whitespace to the left of the Object is not treated as an object. - Whitespace separates an Object from the Content. + Each Object starts at the end 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. - If only printing whitespace follows a valid Object, that Object is considered to have no Content. + If only printing white space follows a valid Object, that Object is considered to have no Content. Content exists on the same line as the Object. Content is represented as multiple Content columns. - Content columns are whitespace separated parts within the Content is terminated by the start of the Object. + Content columns are white space separated parts within the Content is terminated by the start of the Object. Any number of Content columns may exist in the Content until the Object is reached. Key\: - \s = whitespace, except newline. - \b = either whitespace or printable, except newline. - \q = non-whitespace or quoteded whitespace, no whitespace outside of quotes. - \n = newline. - * = 0 or more occurrences. - + = one or more occurrences. - ()* = grouping that repeats 0 or more times. + code:"\s" = White space, except newline. + code:"\b" = Either white space or printable, except newline. + code:"\q" = Non-white space or quoted white space, no white space outside of quotes. + code:"\n" = Newline. + code:"*" = Zero or more occurrences. + code:"+" = One or more occurrences. + code:"()*" = Grouping that repeats 0 or more times. Before Structure\: + code:"" Structure\: - \s*(\s*\q+)*\s+\q+\s*\n + code:"\s*(\s*\q+)*\s+\q+\s*\n" After Structure\: + code:"" Example\: # fss-000a diff --git a/specifications/fss-000b.txt b/specifications/fss-000b.txt index 0be7a62..8348d89 100644 --- a/specifications/fss-000b.txt +++ b/specifications/fss-000b.txt @@ -1,12 +1,18 @@ -# fss-0002 +# fss-0002 iki-0000 # # license: open-standard-license-1.0 # +# This file (assumed to be named fss-000b.txt) can be more easily read using the following iki_read commands: +# iki_read fss-000b.txt -w +# +# To read the "Featureless Settings Specification: 000B - Simple List" section of this file, use this command sequence: +# fss_basic_list_read fss-000b.txt -cn "Featureless Settings Specification: 000B - Simple List" | iki_read -w +# Featureless Settings Specification: 000B - Simple List: - This might be similar to fss-0008 - Embedded List, except it is an fss-0003 Extended List with a (non-recursive) fss-0002 Basic List inside the Content. + This might be similar to code:"fss-0008 (Embedded List)", except it is an code:"fss-0003 (Extended List)" with a (non-recursive) code:"fss-0002 (Basic List)" inside the Content. - See the fss-0002.txt and fss-0003.txt specification files for details on the syntax rules. + See the file:"fss-0002.txt" and file:"fss-0003.txt" specification files for details on the syntax rules. Example\: # fss-000b diff --git a/specifications/fss-000c.txt b/specifications/fss-000c.txt index bff3a0d..74a36ec 100644 --- a/specifications/fss-000c.txt +++ b/specifications/fss-000c.txt @@ -1,16 +1,22 @@ -# fss-0002 +# fss-0002 iki-0000 # # license: open-standard-license-1.0 # +# 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 -w -r abbreviation-FSS FSS +# +# To read the "Featureless Settings Specification: 000C - IKI Text" section of this file, use this command sequence: +# fss_basic_list_read fss-000c.txt -cn "Featureless Settings Specification: 000C - IKI Text" | iki_read -w -r abbreviation-FSS FSS +# Featureless Settings Specification: 000C - IKI Text: - The IKI specifications are separate specifications from the FSS specification. + The IKI specifications are separate specifications from the abbreviation-FSS:"Featureless Settings Specifications". This is simply a more formal way to designate that this format utilizes IKI syntax. - The IKI syntax may be used in any FSS specification. + The IKI syntax may be used in any abbreviation-FSS:"Featureless Settings Specifications". The IKI format may be added to the. - See the iki.txt specification for details on the IKI specifications. + See the file:"iki.txt" specification for details on the IKI specifications. Example\: # fss-000c iki-0000 diff --git a/specifications/fss-000d.txt b/specifications/fss-000d.txt index c7cb0d1..4871f40 100644 --- a/specifications/fss-000d.txt +++ b/specifications/fss-000d.txt @@ -1,27 +1,33 @@ -# fss-0002 +# fss-0002 iki-0000 # # license: open-standard-license-1.0 # +# This file (assumed to be named fss-000d.txt) can be more easily read using the following iki_read commands: +# iki_read fss-000d.txt -w -r abbreviation-FSS FSS +# +# To read the "Featureless Settings Specification: 000D - Basic Rule" section of this file, use this command sequence: +# fss_basic_list_read fss-000d.txt -cn "Featureless Settings Specification: 000D - Basic Rule" | iki_read -w -r abbreviation-FSS FSS +# Featureless Settings Specification: 000D - Basic Rule: - This is a special case that follows fss-0002 (Basic List), and different FSS formats inside this Basic List. - This Basic List 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:"fss-0002 (Basic List)", and different abbreviation-FSS:"Featureless Settings Specifications" formats inside this code:"fss-0002 (Basic List)". + This code:"fss-0002 (Basic List)" is considered the "Outer List" and the Content of this Outer List is considered the "Inner Content". - The Inner Content may be any of the following FSS formats: fss-0000 (Basic), fss-0001 (Extended), and fss-0003 (Extended List). + The Inner Content may be any of the following abbreviation-FSS:"Featureless Settings Specifications" formats: code:"fss-0000 (Basic)", code:"fss-0001 (Extended)", and code:"fss-0003 (Extended List)". 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 Extended List Object, then check to see if it is an Basic/Extended Object. + If the Inner Content Object is not a valid code:"fss-0003 (Extended List)" Object, then check to see if it is an code:"fss-0000 (Basic)" or code:"fss-0001 (Extended)" Object. - The FSS Basic and FSS Extended Objects have the same format for Object names but the FSS Extended List Object is slightly different. - Anything that would match an FSS Extended List Object must therefore be an FSS Extended List Object. + The code:"fss-0000 (Basic)" and code:"fss-0001 (Extended)" Objects have the same format for Object names but the code:"fss-0003 (Extended List)" Object is slightly different. + Anything that would match an code:"fss-0003 (Extended List)" Object must therefore be an code:"fss-0003 (Extended List)" Object. - This supports the use of iki-0000 (Unrestricted) but only within the Content of the outermost Basic List. + This supports the use of code:"iki-0000 (Unrestricted)" but only within the Content of the outermost code:"fss-0002 (Basic List)". 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 "iki-0001 (Basic IKI)". + This additional restriction may also include using a more restrictive IKI syntax, such as code:"iki-0001 (Basic)". - Anything implementing this specification may impose its own restrictions on when to determine if the Inner Content is what FSS format, based on Object names. + Anything implementing this specification may impose its own restrictions on when to determine if the Inner Content is what abbreviation-FSS:"Featureless Settings Specifications" format, based on Object names. - See the fss-0000.txt, fss-0001.txt and fss-0003.txt specification files for details on the syntax rules. + 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 diff --git a/specifications/fss-000e.txt b/specifications/fss-000e.txt index 1309da9..b90a832 100644 --- a/specifications/fss-000e.txt +++ b/specifications/fss-000e.txt @@ -1,41 +1,46 @@ -# fss-0002 +# fss-0002 iki-0000 # # license: open-standard-license-1.0 # +# This file (assumed to be named fss-000e.txt) can be more easily read using the following iki_read commands: +# iki_read fss-000e.txt -w -rr abbreviation-FLL FLL abbreviation-EOF EOF +# +# To read the "Featureless Settings Specification: 000e - Payload" section of this file, use this command sequence: +# fss_basic_list_read fss-000e.txt -cn "Featureless Settings Specification: 000e - Payload" | iki_read -w -r abbreviation-FLL FLL abbreviation-EOF EOF # -# Note: This file is in fss-0002 format and as a result the example below has to be escaped (can potentially be confusing when reading this raw). -# The "header\:" in the example below is actually "header:" when processed by fss-0002. Featureless Settings Specification: 000e - Payload: - This is a fss-0002 Basic List with two required objects\: - 1) "header". - 2) "payload". + This is a code:"fss-0002 (Basic List)" with two required objects\: + 1) emphasis:"header". + 2) emphasis:"payload". - The header's Content is of type fss-0001 Extended. - The payload's Content is of any type including raw binary data. + The emphasis:"header"\: + - The emphasis:"header"'s Content is of type code:"fss-0001 (Extended)". + - The emphasis:"header" is recommended to have the Objects emphasis:"length", emphasis:"status", emphasis:"part", and emphasis:"total". + - The recommended emphasis:"length" represents the size of the emphasis:"payload". + - The recommended emphasis:"part" represents a single part of a set of packets for when the data being transmitted is split across multiple payloads. + - The recommended emphasis:"total" represents the total number of parts representing a complete data transmitted across multiple payloads. + - The recommended emphasis:"status" represents status codes (such as success or failure) and multiple. + - The Content for the recommended emphasis:"length" and emphasis:"status" are positive whole numbers (including zero) that may be in emphasis:"binary", emphasis:"octal", emphasis:"decimal", emphasis:"duodecimal", or emphasis:"hexidecimal" numerical format. - The payload is required to be the last list Object in the file. - The payload is recommended to have its size designated in some manner in the "header". - The designated size is recommended to use the fss-0001 Object "length". - The fss-0001 Content "part" is suggested to be used for fss-0001 Object "length" to represent a part of a set of packets intended to represent a single object spread across multiple payloads. - The fss-0001 Object "total" with the Content being a whole positive number is suggested to be used to represent the total number of packets that represent a whole. - The fss-0001 Object "part" with the Content being a whole positive number is suggested to be used to represent the number identifying which part of the whole it is. - The payload may contain anything, including NULL characters. - The payload is terminated by the EOF (end of file) character or when a some designated length is reached. - The length used to designate the payload size does not necessarily have to be defined in the 'header". - That is to say, if the payload is expected to be of some pre-defined or static length then a length does even if that length is not provided in the "header". - Nothing in the payload may be considered a valid list Object and therefore there will be no escaping allowed (No further fss-0002 Basic List Objects are allowed at this point). - Comments are not considered comments inside the payload and are instead considered part of the payload, as-is. - The payload may be empty (length may be zero), but the list Object "payload" must still exist. + The emphasis:"payload"\: + - The emphasis:"payload"'s Content may contain anything, including raw binary data. + - The emphasis:"payload" is emphasis:"required" to be the last list Object in the file. + - The emphasis:"payload" is recommended to have its size designated in some manner in the emphasis:"header" (such as with the recommended emphasis:"length"). + - The emphasis:"payload" is terminated by the abbreviation-EOF:"End of File" character or by the recommended emphasis:"length" header. + - The emphasis:"payload" may be empty (length may be zero), but the list Object emphasis:"payload" must still exist. + - Nothing in the emphasis:"payload" may be considered a valid list Object by the outer code:"fss-0002 (Basic List)" and therefore escaping is unnecessary (No further processing by the outer code:"fss-0002 (Basic List)" is allowed at this point). + - Comments in the emphasis:"payload" are not considered comments and are instead considered part of the payload, as-is. + - Essentially, the emphasis:"payload" should be treated as binary data embedded in a text file. - The length and status may be in binary, octal, decimal, duodecimal, or hexidecimal numerical format. - The status may alternatively be represented as the status name string. - What the status code represents is application specific (or specific to a sub-standard) but may often be used to represent FLL status codes. - The status, when representing an FLL status code as a number, may contain error and warning bit. - The status, when representing an FLL status code as a number, the status number is binary sensitive and may not be portable across binaries or systems. - For FLL status codes, consider using status as a name string to ensure cross-system or cross-binary compatibility. + The recommended emphasis:"length" emphasis:"header" Object used to designate the emphasis:"payload" size does not necessarily have to be defined in the emphasis:"header". + That is to say, if the emphasis:"payload" is expected to be of some pre-defined or static length then a length does not need to be provided in the emphasis:"header". - Other than the reserved list Objects "header" and "payload" any other valid Object may be specified. + The recommended emphasis:"status" emphasis:"header" Object may be a string, such as code:"F_none", 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 abbreviation-FLL:"Featureless Linux Library" status code. + - The abbreviation-FLL:"Featureless Linux Library" status code is a 16-bit digit whose first two high-order bits represent emphasis:"error" and emphasis:"warning" ( representing emphasis:"signal"). + - The abbreviation-FLL:"Featureless Linux Library" status code as a number is binary sensitive and may not be portable across binaries or systems. + - For best portability, consider using status as a name string to ensure cross-system or cross-binary compatibility. Example\: # fss-000e diff --git a/specifications/fss-000f.txt b/specifications/fss-000f.txt index 6cafcb7..550bfe9 100644 --- a/specifications/fss-000f.txt +++ b/specifications/fss-000f.txt @@ -1,10 +1,16 @@ -# fss-0002 +# fss-0002 iki-0000 # # license: open-standard-license-1.0 # +# This file (assumed to be named fss-000f.txt) can be more easily read using the following iki_read commands: +# iki_read fss-000f.txt -w +# +# To read the "Featureless Settings Specification: 000f - Simple Packet" section of this file, use this command sequence: +# fss_basic_list_read fss-000f.txt -cn "Featureless Settings Specification: 000f - Simple Packet" | iki_read -w +# Featureless Settings Specification: 000f - Simple Packet: - This is a network packet format that contains FSS-000E (Payload) within it. + This is a network packet format that contains code:"fss-000e (Payload)" within it. The Simple Packet structure is described in blocks, of which are structured in bytes. @@ -15,12 +21,12 @@ Featureless Settings Specification: 000f - Simple Packet: The Control Block is the first block in the packet and is considered endianless. There exists only a single byte within the Control Block. - Regardless of the endianness of the packet, the leftmost bit is always the "string" or "binary" bit. + Regardless of the endianness of the packet, the leftmost bit is always the emphasis:"string" or emphasis:"binary" bit. The second bit following that bit represents the endianness bit. - The "string" or "binary" bit, a value of 0 designates that the packet is in string format and a value of 1 designates that the packet is in binary format. + The emphasis:"string" or emphasis:"binary" bit, a value of 0 designates that the packet is in string format and a value of 1 designates that the packet is in binary format. While the packet might be considered to be in string format, it is technically always in binary format due to the Control Block and Size Block. - This means that the bit designating the packet as a "string" packet or a "binary" packet is referring to whether or not the Payload Block is in "string" format or is in "binary" format. + This means that the bit designating the packet as a emphasis:"string" packet or a emphasis:"binary" packet is referring to whether or not the Payload Block is in emphasis:"string" format or is in emphasis:"binary" format. 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. @@ -36,10 +42,12 @@ Featureless Settings Specification: 000f - Simple Packet: The size represents number of bytes in the file. The Control Block is 1 byte long and the Size Block is 4 bytes long and so the maximum available size is (2^32)-6. - The Payload Block is not defined by this standard of that that it exists and should be in FSS-000E (Payload) format. - The FSS-000E (Payload) may be represented in either string format or binary format. - The FSS-000E (Payload) may contain multiple "header"s but may only contain a single "payload". - With this in mind, it is recommended that only a single "header" be supported in the Payload Block. + The Payload Block is not defined by this standard of that that it exists and should be in code:"fss-000e (Payload)" format. + The code:"fss-000e (Payload)" may be represented in either string format or binary format. + The code:"fss-000e (Payload)" may contain multiple emphasis:"header"(s) but may only contain a single emphasis:"payload". + With this in mind, it is recommended that only a single emphasis:"header" be supported in the Payload Block. + + See the file:"fss-000e.txt" specification file for details on the syntax rules for the Payload Block. Example Packet Structure\: [ Control Block ] [ Size Block ] [ Payload Block ] diff --git a/specifications/fss.txt b/specifications/fss.txt index 06bf0f9..daca525 100644 --- a/specifications/fss.txt +++ b/specifications/fss.txt @@ -1,43 +1,51 @@ -# fss-0002 +# fss-0002 iki-0000 # # license: open-standard-license-1.0 # +# This file (assumed to be named fss.txt) can be more easily read using the following iki_read commands: +# iki_read fss.txt -w -rrrrrrrr abbreviation-FSS FSS abbreviation-KISS KISS anti-abbreviation-KISS anti-KISS abbreviation-XML XML abbreviation-UTF-8 UTF-8 abbreviation-ASCII ASCII abbreviation-BOM BOM abbreviation-URL URL +# +# Individual sections in this file may be parsed using fss_basic_list_read command and then passed to the iki_read command. +# To read the "Featureless Settings Specifications" section of this file, use this command sequence: +# fss_basic_list_read fss.txt -cn "Featureless Settings Specifications" | iki_read -w -rrrrrrrr abbreviation-FSS FSS abbreviation-KISS KISS anti-abbreviation-KISS anti-KISS abbreviation-XML XML abbreviation-UTF8 UTF8 abbreviation-ASCII ASCII abbreviation-BOM BOM abbreviation-URL URL +# Featureless Settings Specifications: - A Keep It Simple Stupid specifications for configuration/settings files. + The Featureless Settings Specifications describe a set of standards designed around the age-old design principle referred to as emphasis:"Keep It Simple Stupid", aka abbreviation-KISS:"Keep It Simple Stupid". The abbreviation-FSS:"Featureless Settings Specifications" are primarily intended for settings files but are extensible enough to be used beyond that. - This specification defines the following\: + The abbreviation-FSS:"Featureless Settings Specifications" defines the following\: - Will consist of numerous different kinds of specification files, depending on the type of information stored. - - As with the practice of "#!/bin/bash", the setting files SHOULD have the following: "# fss-????" format, such as "# fss-0001". - - Multiple sub-standards may be appended to the FSS header, using the same format structure, such as supporting IKI: "# fss-0000 iki-0000" or HTML5: "# fss-0000 html-0005". - - With the ? representing the (hexadecimal/base-16) number that represents the particular specification structure. - - All settings specifications SHOULD avoid any form of noise, relative to the data being stored. - - XML would be considered anti-KISS due to the extreme level of noise generated by the XML language (not easy to read). + - As with the practice of code:"#!/bin/bash", the setting files emphasis:"should" have the following: code:"# fss-????" format, such as "# fss-0001". + - Multiple sub-standards may be appended to the abbreviation-FSS:"Featureless Settings Specifications" header, using the same format structure, such as supporting IKI: "# fss-0000 iki-0000" or HTML5: "# fss-0000 html-0005". + - With the code:"?" representing the (hexadecimal/base-16) number that represents the particular specification structure. + - All settings specifications emphasis:"should" avoid any form of noise, relative to the data being stored. + - abbreviation-XML="Extensible Markup Language" would be considered anti-abbreviation-KISS:"Keep It Simple Stupid" due to the extreme level of noise generated by the abbreviation-XML="Extensible Markup Language" language (not easy to read). - The settings files are setup so that they should (reasonably) produce easy readability on both the console and in a GUI. + - The specifications should strive for completeness (see the completeness theorem). - The most basic form of FSS specifications consist of two main parts: an "Object" and the "Content". - - Object: Considered the name or identifier of some particular data; Objects do not need an associated Content. - - Content: The data associated with a given Object; all Content MUST have an associated Object. + The most basic form of abbreviation-FSS:"Featureless Settings Specifications" consists of two main parts: an emphasis:"Object" and the emphasis:"Content". + - Object: Considered the name or identifier of some property or data; Objects do not require an associated Content. + - Content: The data associated with a given Object; all Content emphasis:"must" have an associated Object. Objects and Contents can include any characters allowed by the specifications. The specification may choose how a given Object or Content are represented and parsed. - For example, in fss-0000 (Basic), Content is treated as a single item whereas in fss-0001 (Extended), Content is broken apart in multiple sub parts. + For example, in code:"fss-0000 (Basic)", Content is treated as a single item whereas in code:"fss-0001 (Extended)", Content is broken apart in multiple sub parts. Contents may be broken up into zero or more discrete sets of Content. Each of these discrete sets of Content are referred to as a column. - These columns do not need to be setup in a column structure, the word "column" is simply used as a grouping terminology. + These columns do not need to be setup in a column structure, the word emphasis:"column" is simply used as a grouping terminology. While a Content refers to the entire set, a column (more specifically, a Content column) refers to the individual discrete sets within the Content. - For example, in fss-000 (Basic) the entire Content may be further represented as a single column. - For example, in fss-001 (Extended) the entire Content may be further represented as multiple columns. + For example, in code:"fss-000 (Basic)" the entire Content may be further represented as a single column. + For example, in code:"fss-001 (Extended)" the entire Content may be further represented as multiple columns. In all cases, specifications that separate Objects from Contents using white space, the first white space separating the Object and Content must not be considered part of the Object nor part of the Content. All spaces after the first separating white space is generally ignored until the first non white space character is found, unless otherwise specified. - Unless otherwise specified, all specifications are newline sensitive ('\n' only). - Newline characters are only '\n' and are never anything else ('\r' is not considered newline in any manner). - Whitespaces characters that are printable, such as tabs and spaces, must be considered the same type for the purposes of parsing. - Non-printing white spaces characters (zero-width characters) are ignored, are treated as placeholders for processing, or are considered part of the appropriate character if they are Unicode combining characters (this includes zero-width punctutations characters and similar). - In terms of processing, it is recommended that the NULL character is not considered the end of a string, but this is only a suggestion. + Unless otherwise specified, all specifications are newline sensitive (code:"\n" only). + Newline characters are only code:"\n" and are never anything else (code:"\r" is not considered newline in any manner). + White spaces characters that are printable, such as tabs and spaces, must be considered the same type for the purposes of parsing. + Non-printing white spaces characters (zero-width characters) are ignored, are treated as placeholders for processing, or are considered part of the appropriate character if they are Unicode combining characters (this includes zero-width punctuation characters and similar). + In terms of processing, it is recommended that the code:"NULL" character is not considered the end of a string, but this is only a suggestion. Unless otherwise specified, newlines designate the potential start (or end) of an Object or Content. @@ -47,8 +55,8 @@ Featureless Settings Specifications: Unless otherwise specified, white space immediately both before (and after, outside of the terminating quote) an Object is not considered part of the Object. This simplifies identifying the object, use quoted Objects to support white space before/after an object for styling purposes. - Unless otherwise specified, quotes may only be either a single quote (') or a double quote (") and only a backslash '\' may be used as a delimiter. - For example, fss-0000 (Basic)\: + Unless otherwise specified, quotes may only be either a single quote code:"'" or a double quote code:'"' and only a backslash code:"\\" may be used as a delimiter. + For example, code:"fss-0000 (Basic)"\: \"Object 1" has content starting at the '1', with an Object named '"Object'. \\"Object 1" has content starting at the '1', with an Object named '\"Object'. "Object 1\" is an unterminated object due to the escaped closing quote. @@ -56,7 +64,7 @@ Featureless Settings Specifications: Unless otherwise specified, character/data delimits are performed only when required and not unilaterally. In the case of Objects, delimits would only apply when that Object could be potentially identified as an Object. - For example, fss-0001 (Extended) needs quotes to group parts that include spaces, if there is no initial quote, then a quote following the data MUST NOT be delimited. + For example, code:"fss-0001 (Extended)" needs quotes to group parts that include spaces, if there is no initial quote, then a quote following the data emphasis:"must not" be delimited. Such as these following three lines\: "Object 1" "This is a single quoted Content." \"Additional unquoted Content." Object_2 This is multiple" Contents and the trailing quote does not need to be delimited. @@ -97,39 +105,38 @@ Featureless Settings Specifications: Content\: - Wouldn't require delimits if no white space or end of string after. - All specifications are expected to support or be of the character encoding UTF-8; however, there is no imposed restriction on supporting or using any other encoding. + All specifications are expected to support or be of the character encoding abbreviation-UTF-8:"Unicode Transformation Format 8-bit"; however, there is no imposed restriction on supporting or using any other encoding. Those encodings must only support the appropriate characters required by a given standard for differentiating Objects, Contents, and delimits. - All specifications do assume ASCII and Unicode support. + All specifications do assume abbreviation-ASCII:"American Standard Code for Information Interchange" and Unicode support. - Unless otherwise specified, comments are designated by the pound symbol '#' but only if only white space is to the left of the pound or the pound '#' is at the start of the line. + Unless otherwise specified, comments are designated by the pound symbol code:"#" but only if only white space is to the left of the pound or the pound code:"#" is at the start of the line. There is no support for inline comments. - Unless otherwise specified, the start comment may be delimited by '\' in the same manner as Objects and Contents are. - This delimit only applies to the start of a comment (the pound '#' character) as there is no terminating character for a comment (other than a newline '\n'). + Unless otherwise specified, the start comment may be delimited by code:"\" in the same manner as Objects and Contents are. + This delimit only applies to the start of a comment (the pound code:"#" character) as there is no terminating character for a comment (other than a newline code:"\n"). A line containing a valid comment is in its entirety ignored. - This means that if there is white space before the designation symbol (the pound '#' character) then that white space is ignored. + This means that if there is white space before the designation symbol (the pound code:"#" character) then that white space is ignored. - Unless otherwise specified, all designation characters MUST represent ASCII codes. - With designation characters being any character code used to designate how to identify an Object or Content (such as a colon ':' at the end of a basic list). - This keeps the processing and logic simple and safe, for both UTF-8 and ASCII. - Whitespace used for designation characters MUST include support for UTF-8 white space characters, unless otherwise specified. + Unless otherwise specified, all designation characters emphasis:"must" represent abbreviation-ASCII:"American Standard Code for Information Interchange" codes. + With designation characters being any character code used to designate how to identify an Object or Content (such as a colon code:":" at the end of a basic list). + This keeps the processing and logic simple and safe, for both abbreviation-UTF-8:"Unicode Transformation Format 8-bit" and abbreviation-ASCII:"American Standard Code for Information Interchange". + White space used for designation characters emphasis:"must" include support for abbreviation-UTF-8:"Unicode Transformation Format 8-bit" white space characters, unless otherwise specified. However, these white space used as a designation character, must be printing white space that are not combining white space characters. - Any visible/graph character that is considered a white space (such as U+1680 ' ') is not to be considered a white space, unless otherwise specified. + Any visible/graph character that is considered a white space (such as code:"U+1680" code:" ") is not to be considered a white space, unless otherwise specified. When used for syntax matching purposes, zero-width Unicode characters are only to be considered zero-width unless otherwise specified. - For example, the "invisible plus" character (U+2064) is not to be considered as a plus. + For example, the emphasis:"invisible plus" character (code:"U+2064") is not to be considered as a plus. - The UTF-8 BOM is not allowed as a Byte Order Mark; instead, it must always be treated as the character represented by its code (unless explicitly allowed to represent a BOM by a standard). + The abbreviation-UTF-8:"Unicode Transformation Format 8-bit" abbreviation-BOM:"Byte Order Mark" is not allowed as a Byte Order Mark; instead, it must always be treated as the character represented by its code (unless explicitly allowed to represent a abbreviation-BOM:"Byte Order Mark" by a standard). - The only Unicode dash-like characters allowed as a "dash" are those intended to connect, such as the Unicode hyphens (U+2010 and U+2011) (unless otherwise specified). + The only Unicode dash-like characters allowed as a emphasis:"dash" are those intended to connect, such as the Unicode hyphens (code:"U+2010" and code:"U+2011") (unless otherwise specified). - In any specification where security is intended, if there exists a Unicode character that matches an ASCII character, that Unicode character MAY be prohibited by that standard in favor of the ASCII equivalent. - One such example is in the case of a URL, where the name could be used to trick a person (http://this-site.com/ vs http://this‐site.com/). + In any specification where security is intended, if there exists a Unicode character that matches an abbreviation-ASCII:"American Standard Code for Information Interchange" character, that Unicode character emphasis:"may" be prohibited by that standard in favor of the abbreviation-ASCII:"American Standard Code for Information Interchange" equivalent. + One such example is in the case of a abbreviation-URL:"Uniform Resource Locator", where the name could be used to trick a person (code:"http://this-site.com/" vs code:"http://this‐site.com/"). This (potential insecure behavior) is allowed in general because a well written program would be able to detect and communicate the possible misunderstanding and thereby avoid mistakes without imposing any character restrictions. - This is a common behavior for security reasons, each character used for any special purposes must be visibly distinct, with white space and non-printing characters as the exception to the words "visibly distinct". + This is a common behavior for security reasons, each character used for any special purposes must be visibly distinct, with white space and non-printing characters as the exception to the words emphasis:"visibly distinct". - The follow specifications are defined in this project. - Each of these specifications has a common name associated with the specification number. + The following are core specifications (each with a common name associated with the specification number)\: - fss-0000: Basic - fss-0001: Extended - fss-0002: Basic List @@ -142,7 +149,7 @@ Featureless Settings Specifications: - fss-0009: Reverse Mapping - fss-000a: Extended Reverse Mapping - fss-000b: Simple List - - fss-000c: Iki Text + - fss-000c: IKI Text - fss-000d: Basic Rule - fss-000e: Payload - fss-000f: Simple Packet diff --git a/specifications/iki-0000.txt b/specifications/iki-0000.txt index 35c98ba..9b0d365 100644 --- a/specifications/iki-0000.txt +++ b/specifications/iki-0000.txt @@ -1,9 +1,15 @@ -# fss-0002 +# fss-0002 iki-0000 # # license: open-standard-license-1.0 # +# This file (assumed to be named iki-0000.txt) can be more easily read using the following iki_read commands: +# iki_read iki-0000.txt -w +# +# To read the "IKI Specification: 0000 - Unrestricted" section of this file, use this command sequence: +# fss_basic_list_read iki-0000.txt -cn "IKI Specification: 0000 - Unrestricted" | iki_read -w +# IKI Specification: 0000 - Unrestricted: This specification provides no restrictions on the vocabulary. - See the iki.txt specification file for details on the syntax rules. + See the file:"iki.txt" specification file for details on the syntax rules. diff --git a/specifications/iki-0001.txt b/specifications/iki-0001.txt index 08a35cf..2ec3f73 100644 --- a/specifications/iki-0001.txt +++ b/specifications/iki-0001.txt @@ -1,20 +1,26 @@ -# fss-0002 +# fss-0002 iki-0000 # # license: open-standard-license-1.0 # +# This file (assumed to be named iki-0001.txt) can be more easily read using the following iki_read commands: +# iki_read iki-0001.txt -w -rrr abbreviation-URI URI abbreviation-URL URL abbreviation-URN URN +# +# To read the "IKI Specification: 0001 - Basic" section of this file, use this command sequence: +# fss_basic_list_read iki-0001.txt -cn "IKI Specification: 0001 - Basic" | iki_read -w -rrr abbreviation-URI URI abbreviation-URL URL abbreviation-URN URN +# IKI 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 URLs. + This specification provides a small set of vocabulary names meant to be associated with common uses, such as e-mail addresses and abbreviation-URL:"Uniform Resource Locator"s. Vocabulary\: - - address: any mailing address, except for e-mail and URI. - - 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 (allows URL and URN). - - url: any valid URL. - - urn: any valid URN. - - var: all text contained within represents some sort of variable. + - address: Any mailing address, except for e-mail and abbreviation-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 abbreviation-URI:"Uniform Resource Identifier" (allows abbreviation-URL:"Uniform Resource Locator" and abbreviation-URN:"Uniform Resource Name"). + - url: Any valid abbreviation-URL:"Uniform Resource Locator". + - urn: Any valid abbreviation-URN:"Uniform Resource Name". + - var: All text contained within represents some sort of variable. - See the iki.txt specification file for details on the syntax rules. + See the file:"iki.txt" specification file for details on the syntax rules. diff --git a/specifications/iki-0002.txt b/specifications/iki-0002.txt index b67d84d..6fd6145 100644 --- a/specifications/iki-0002.txt +++ b/specifications/iki-0002.txt @@ -1,7 +1,13 @@ -# fss-0002 +# fss-0002 iki-0000 # # license: open-standard-license-1.0 # +# This file (assumed to be named iki-0002.txt) can be more easily read using the following iki_read commands: +# iki_read iki-0002.txt -w +# +# To read the "IKI Specification: 0002 - Simple Script" section of this file, use this command sequence: +# fss_basic_list_read iki-0002.txt -cn "IKI Specification: 0002 - Simple Script" | iki_read -w +# IKI Specification: 0002 - Simple Script: This specification provides a small set of vocabulary names meant to be used for substitution in simple scripts. @@ -10,12 +16,12 @@ IKI Specification: 0002 - Simple Script: This vocabulary may be further extended but must at least support the taxonomy defined here. Flexibility on interpretation is intended so that the context can be more fine-tuned and customized. - The taxonomy for the "context", "define", and "parameter" are intentionally not defined here and left open. + The taxonomy for the emphasis:"context", emphasis:"define", and emphasis:"parameter" are intentionally not defined here and left open. One utilizing this should document the taxonomy for each of these as desired. Vocabulary\: - - context: intended to be used for printing (or tagging) context codes before and after text, such as with color context. - - define: intended to be used for global properties, much like a C/C++ #define. - - parameter: intended to be used for parameters or variables. + - context: Intended to be used for printing (or tagging) context codes before and after text, such as with color context. + - define: Intended to be used for global properties, much like a C/C++ code:"#define". + - parameter: Intended to be used for parameters or variables. - See the iki.txt specification file for details on the syntax rules. + See the file:"iki.txt" specification file for details on the syntax rules. diff --git a/specifications/iki.txt b/specifications/iki.txt index 10dfe6b..c55a332 100644 --- a/specifications/iki.txt +++ b/specifications/iki.txt @@ -1,58 +1,65 @@ -# fss-0002 +# fss-0002 iki-0000 # # license: open-standard-license-1.0 # +# This file (assumed to be named iki.txt) can be more easily read using the following iki_read commands: +# iki_read iki.txt -w +# +# To read the "IKI Specifications" section of this file, use this command sequence: +# fss_basic_list_read iki.txt -cn "IKI Specifications" | iki_read -w +# 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 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 "Object". - The variable value is considered the "Content". + The variable name is considered the emphasis:"Object". + The variable value is considered the emphasis:"Content". - The IKI format will use iki-0000 to represent an IKI with no explicitly defined vocabulary. - Whereas iki-0001 and beyond represent a specific IKI vocabulary. + 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 (or "_", "-", "+") characters. - Whitespace and non-word (and non "_", "-", "+") 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 (U+2010 and U+2011). + A potential IKI variable name starts on word (or code:"_", code:"-", code:"+") characters. + White space and non-word (and non code:"_", 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:"U+2010" and code:"U+2011"). - Any valid IKI data may be escaped to make it treated as non-IKI data by prepending a backslash "\" before the colon ":" that is before the opening quote (single or double). + Any valid IKI data may be escaped to make it treated as non-IKI data by prepending a backslash code:"\" before the colon code:":" that is before the opening quote (single or double). - Unicode punctuation connector characters are supported just like "_", except when they connect outside the current line (such as U+FE33 "︳"). - Unicode invisible punctuations (such as invisible plus: 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 '_', '-', or '+' Unicode equivalents. + Unicode punctuation connector characters are supported just like code:"_", except when they connect outside the current line (such as code:"U+FE33" code:"︳"). + Unicode invisible punctuations (such as invisible plus: code:"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 code:"_", code:"-", or code:"+" Unicode equivalents. Key\: - \o = any printable word character, including "_", "-", "+" (and Unicode equivalents). - \c = any character, including whitespace and non-printing, and any delimited quote (used as the opening quote) or a any quote (undelimited) not used as the opening quote. - \q = either a single quote (') or a double quote ("). - \x = any character. - \W = any non-word character, discluding "_", "-", "+" (and Unicode equivalents). - \e = an optional escape sequence of any number of backslashes, such as "\". - * = 0 or more occurrences. - ~ = one or more occurrences, or 0 if at start of file. + code:"\o" = any printable word character, including code:"_", code:"-", code:"+" (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:"\q" = either a single quote code:"'" or a double quote code:'"'. + code:"\x" = any character. + code:"\W" = any non-word character, discluding code:"_", code:"-", code:"+" (and Unicode equivalents). + code:"\e" = an optional escape sequence of any number of backslashes, such as code:"\\". + code:"*" = 0 or more occurrences. + code:"~" = one or more occurrences, or 0 if at start of file. Before Structure\: - \x*\W~\*:* + code:"\x*\W~\*:*" Structure\: - \o\e:\q\c\q + code:"\o\e:\q\c\q" After Structure\: + code:"" Example\: - # fss-000c iki-0000 + code:'# fss-000c iki-0000 This is my sentence, anything can go here but sometimes I want to emphasis:"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). 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 emphasis\:"is escaped to not be treated as IKI data".' Objects would be\: 1) emphasis @@ -63,3 +70,8 @@ IKI Specifications: 1.1) emphasize some text 2.1) http://www.example.com/url with space/ 3.1) const char *string = "My \"quoted\" C string."; + + 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 -- 1.8.3.1