]> Kevux Git Server - fll/commitdiff
Update: Further clarify quoting in FSS specifications.
authorKevin Day <kevin@kevux.org>
Mon, 6 Mar 2023 03:48:22 +0000 (21:48 -0600)
committerKevin Day <kevin@kevux.org>
Mon, 6 Mar 2023 03:48:22 +0000 (21:48 -0600)
I looked at the code and realized I should instead favor the "typo" behavior.
Process until the end of the line rather than break up the Object due to the quotes.
This means if the quote is unterminated then the rest of the line is considerd the Object.
Also document where Content utilizes the same rules.

This invalidates some of the description in the commit 6b1720990df42b0024373776f41037b9331cc3cc.

The two examples are now as follows:

  Example Object and Content pair following FSS-0001:
    Object "Content".

The Content would be "Content".
This behavior effectively preserves the period and also retains the quotes.

  Another example (FSS-0001):
    "Object 1" "Content 1" Content2 and_3
    "Object 2": Content.

This second row shows the "typo" is favored concept.
The second row has no Content and instead has the following as the "Object: Object 2": Content.
Note how the quotes are kept when this situation happens.

I also updated the word "newline", replacing it with the words "new" and "line".
I noticed and fixed a mistake in the logic due to this refactor and a similar previous refactor.

specifications/fss-0000.txt
specifications/fss-0001.txt
specifications/fss-0002.txt
specifications/fss-0003.txt
specifications/fss-0004.txt
specifications/fss-0005.txt
specifications/fss-0006.txt
specifications/fss-0007.txt
specifications/fss-0009.txt
specifications/fss-000a.txt

index e00e36dc9b2aaeaf3df110566e36b4e2ab8ed95c..2f81518337eda4af8845d9b67f10d5ce948d28e1 100644 (file)
 Featureless Settings Specification: 0000 - Basic:
   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 white space where a single quote character:"'" (unicode:"U+0027"), a double quote character:'"' (unicode:"U+0022"), or a backtick character:'`' (unicode:"U+0060") 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.
 
   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.
 
   Key\:
-    code:"\s" = White space, except newline.
-    code:"\b" = Either white space or printable, except newline.
+    code:"\s" = White space, except new line.
+    code:"\b" = Either white space or printable, except new line.
     code:"\q" = Non-white space or quoted white space (and non-white space) with no white space outside of the quotes.
-    code:"\n" = Newline.
+    code:"\n" = New line.
     code:"*" = Zero or more occurrences.
     code:"+" = One or more occurrences.
 
@@ -45,7 +47,7 @@ Featureless Settings Specification: 0000 - Basic:
   Example\:
     # fss-0000
     # valid comments are ignored.
-    "The Object" Content until newline.
+    "The Object" Content until new line.
     Second object set.
 
   Object would be\:
@@ -53,5 +55,5 @@ Featureless Settings Specification: 0000 - Basic:
     2) Second
 
   Content would be\:
-    1.1) Content until newline.
+    1.1) Content until new line.
     2.1) object set.
index a3666051c51e8e6d45515d43187e03af035cdcc5..3046f470aa5a657b84d78aee8c5b4dc4bff4cc27 100644 (file)
 Featureless Settings Specification: 0001 - Extended:
   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 white space where a single quote character:"'" (unicode:"U+0027"), a double quote character:'"' (unicode:"U+0022"), or a backtick character:'`' (unicode:"U+0060") 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.
 
   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.
 
   Key\:
-    code:"\s" = White space, except newline.
-    code:"\b" = Either white space or printable, except newline.
+    code:"\s" = White space, except new line.
+    code:"\b" = Either white space or printable, except new line.
     code:"\q" = Non-white space or quoted white space (and non-white space) with no white space outside of the quotes.
-    code:"\n" = Newline.
+    code:"\n" = New line.
     code:"*" = Zero or more occurrences.
     code:"+" = One or more occurrences.
     code:"()*" = Grouping that repeats zero or more times.
index 550e9f53b09e75a3ae0119c1f2e088775fba651a..79a55dcf0f0000e3653298590dcdc0ed0c144734 100644 (file)
 
 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.
-  A colon character:":" (unicode:"U+003A") followed by any white space until a newline terminates a valid Object.
+  A colon character:":" (unicode:"U+003A") followed by any white space until a new line terminates a valid Object.
   Non-white space printable characters 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.
 
   There is no single-quote, double-quote, or backtick delimitation in this specification.
-  Only the colon that would result in a valid Object can be delimited.
+  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.
 
   Key\:
-    code:"\s" = White space, except newline.
+    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 newline, that not interpretable as an Object.
-    code:"\n" = Newline.
+    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.
 
   Before Structure\:
@@ -48,7 +48,7 @@ Featureless Settings Specification: 0002 - Basic List:
       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.
 
   Objects would be\:
@@ -60,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 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."
index f8a436cf779677c3fa85ca1652aa6ece348f3bb9..175e203dbb9cab7f3a1f5d59a7e4783528edbbbc 100644 (file)
 
 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.
-  An open-brace character:"{" (unicode:"U+007B") followed by any white space until a newline terminates a possible valid Object.
+  An open-brace character:"{" (unicode:"U+007B") followed by any white space until a new line terminates a possible valid 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 of a valid Object.
+  Non-white space printable characters may not follow the open-brace character:"{" (unicode:"U+007B") of a valid Object.
 
-  Content is represented as a single Content column of every line following a valid object until the end of file (or string) or until a non-delimited close-brace character:"}".
+  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 but a terminating newline must be present to designate a valid end of 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.
 
   There is no single-quote, double-quote, or backtick 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.
+  Only an open-brace character:"{" (unicode:"U+007B") that would result in a valid Object or the close-brace character:"}" (unicode:"U+007D") that would terminate valid Content can be delimited.
+  When inside potentially valid Content (which follows a valid Object) the open-brace character:"{" (unicode:"U+007B") cannot be delimited because this standard is not-recursive.
   When not inside any potentially valid Content (that is, there is no previous unclosed Object), then the Object may be delimited.
-  Likewise, the close-brace may only be delimited if it is within any potentially valid Content.
+  Likewise, the close-brace character:"}" (unicode:"U+007D") 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 (code:"\\{" would represent code:"\{").
-  Only the first delimit slash in a delimitable close-brace is treated as a potential delimit (code:"\\\}" would represent code:"\\}").
+  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.
 
   Key\:
-    code:"\s" = White space, except newline.
+    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 newline, that is not interpretable as an Object.
+    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.
 
@@ -58,7 +58,7 @@ Featureless Settings Specification: 0003 - Extended List:
 
     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.
     }
 
@@ -71,4 +71,4 @@ Featureless Settings Specification: 0003 - Extended List:
          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."
index 4fbc452d7af075ece356777faafeae3d56384cb0..7a959211c6d87257ea553698da1c634826475fb9 100644 (file)
@@ -25,7 +25,7 @@ Featureless Settings Specification: 0004 - Very Basic List:
       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.
 
   Outer Objects would be\:
@@ -46,4 +46,4 @@ Featureless Settings Specification: 0004 - Very Basic List:
     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."
index 0a828672ae25719b75ce0221ad7d00a1e017584c..ccf253e2f8bad7b763c85445a566d49e0d67929d 100644 (file)
@@ -25,7 +25,7 @@ Featureless Settings Specification: 0005 - Somewhat Basic List:
       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.
 
   Outer Objects would be\:
@@ -59,11 +59,13 @@ Featureless Settings Specification: 0005 - Somewhat Basic List:
     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.
index 5716431916e4247f9d5dd8512ce837caa6202862..e14caade1f6027a99ffa73f05e49858dd4ee7f47 100644 (file)
@@ -27,7 +27,7 @@ Featureless Settings Specification: 0006 - Somewhat Extended List:
 
     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.
     }
 
@@ -49,4 +49,4 @@ Featureless Settings Specification: 0006 - Somewhat Extended List:
     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."
index fd2dd0fce98ab43e59ff43cd16d5cdd578c8b204..3feb558f1ca55f393318bdedf2ec35994d6de64e 100644 (file)
@@ -27,7 +27,7 @@ Featureless Settings Specification: 0007 - Very Extended List:
 
     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.
     }
 
@@ -62,11 +62,13 @@ Featureless Settings Specification: 0007 - Very Extended List:
     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.
index d447578594cc0da16ab667e92cfbe1b55c5df237..8472fa100f4fdfc529c58f6d1930659545659d56 100644 (file)
@@ -14,24 +14,26 @@ Featureless Settings Specification: 0009 - Reverse Mapping:
 
   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.
+  An Object may be preceded by a new line, in which case means that the Object has no Content.
   If only printing white spaces or non-printable characters precedes a valid Object, then that Object is considered to have no Content.
   An Object may be quoted to include white space where a single quote character:"'" (unicode:"U+0027"), a double quote character:'"' (unicode:"U+0022"), or a backtick character:'`' (unicode:"U+0060") 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.
 
   Content exists on the same line as the Object.
-  Content is represented as a single Content column that begins at a newline.
+  Content is represented as a single Content column that begins at a new line.
   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 includes trailing white space before new line 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\:
-    code:"\s" = White space, except newline.
-    code:"\b" = Either white space or printable, except newline.
+    code:"\s" = White space, except new line.
+    code:"\b" = Either white space or printable, except new line.
     code:"\q" = Non-white space or quoted white space (and non-white space) with no white space outside of the quotes.
-    code:"\n" = Newline.
+    code:"\n" = New line.
     code:"*" = Zero or more occurrences.
     code:"+" = One or more occurrences.
 
@@ -47,7 +49,7 @@ Featureless Settings Specification: 0009 - Reverse Mapping:
   Example\:
     # fss-0009
     # valid comments are ignored.
-    Content from newline. "The Object"
+    Content from new line. "The Object"
     object set. Second
 
   Object would be\:
@@ -55,5 +57,5 @@ Featureless Settings Specification: 0009 - Reverse Mapping:
     2) Second
 
   Content would be\:
-    1.1) Content from newline.
+    1.1) Content from new line.
     2.1) object set.
index 2a30d66902da79f0bf21cfa33829974ba370e6ea..c5984ac2d51ca5bf5bfff93e9b1ffda908ec7558 100644 (file)
@@ -14,22 +14,25 @@ Featureless Settings Specification: 000A - Extended Reverse Mapping:
 
   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.
+  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 white space where a single quote character:"'" (unicode:"U+0027"), a double quote character:'"' (unicode:"U+0022"), or a backtick character:'`' (unicode:"U+0060") 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.
 
   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 is terminated by the start of the Object.
   Any number of Content columns may exist in the Content until the Object is reached.
+  Content follows the same quoting rules as an Object.
 
   Key\:
-    code:"\s" = White space, except newline.
-    code:"\b" = Either white space or printable, except newline.
+    code:"\s" = White space, except new line.
+    code:"\b" = Either white space or printable, except new line.
     code:"\q" = Non-white space or quoted white space (and non-white space) with no white space outside of the quotes.
-    code:"\n" = Newline.
+    code:"\n" = New line.
     code:"*" = Zero or more occurrences.
     code:"+" = One or more occurrences.
     code:"()*" = Grouping that repeats zero or more times.