# fss-0002 iki-0000
#
# license open-standard-license-1.0
-# version 2024/01/15
+# version 2024/03/29
#
# This file (assumed to be named iki.txt) can be more easily read using the following iki_read commands:
# iki_read iki.txt +Q -w -WWW character "'" "'" code '"' '"' italic '"' '"'
code:""
Example\:
- code\:'# fss-000c iki-0000
+ code:'# fss-000c iki-0000
This is my sentence, anything can go here but sometimes I want to italic\:"emphasize some text".
- Other times I want to render a url such as this example url: url\:'http://www.example.com/url with space/'.
+ Other times I want to render a url such as this example url: url\:\'http://www.example.com/url with space/\'.
There are no comments, except for maybe the FSS\:"Featureless Settings Specification" header (which would not resolve to any IKI syntax anyway).
Quotes may be included, such as: code\:"const char *string = \"My \\\"quoted\\\" C string.\";".
- The following italic\:"is escaped to not be treated as IKI data".'
+ The following italic\:"is escaped to not be treated as IKI data".
- The conditionally optional open and close brackets allow for putting a variable directly next to another word character like: [context]\:"strong"this[context]\:"strong".
+ The conditionally optional open and close brackets allow for putting a variable directly next to another word character like: [context]\:"strong"this[context]\:"strong".'
Objects (also called vocabulary or variable name) would be\:
- 1) FSS
- 2) italic
- 3) url
+ 1) italic
+ 2) url
+ 3) FSS
4) code
- 5) context
+ 5) italic
6) context
+ 7) context
Contents (also called variable value) would be\:
- 1.1) Featureless Settings Specification
- 2.1) emphasize some text
- 3.1) http://www.example.com/url with space/
+ 1.1) emphasize some text
+ 2.1) http://www.example.com/url with space/
+ 3.1) Featureless Settings Specification
4.1) const char *string = "My \"quoted\" C string.";
- 5.1) strong
+ 5.1) is escaped to not be treated as IKI data
6.1) strong
+ 7.1) strong
The following are core specifications (each with a common name associated with the specification number)\:
- fss-0000: Unrestricted
<div class="section-content">
<p class="p">
+ The version date of this specification is <code class="code">2024/01/15</code>.
+ </p>
+ <p class="p">
IKI is a minimally structured WIKI-like syntax meant to be simpler than WIKI syntax.
</p>
<p class="p">
- The IKI syntax provides a vocabulary name (with specific context associated with it) followed by quoted code that is associated with the given vocabulary name.
+ The IKI syntax provides a vocabulary name (with specific context associated with it) followed by quoted value that is associated with the given vocabulary name.
The vocabulary represents a list of allowed variable names that may also have specific contextual meaning defined by a given IKI specification.
- The variable name is considered the <em class="em">Object</em>.
+ The variable name is considered the <em class="em">Object</em> and is also considered the vocabulary.
The variable value is considered the <em class="em">Content</em>.
+ The variable name may be wrapped by a single open bracket, <code class="code">[</code> (<code class="code">U+005B</code>), at the start and a single close bracket, <code class="code">]</code> (<code class="code">U+005D</code>), at the end.
+ </p>
+ <p class="p">
+ The wrapping characters characters are not part of the variable name and must not be contained within a variable name.
+ The wrapping characters do not support escaping.
+ Both wrapping characters must be specified or neither.
</p>
<p class="p">
The IKI format will use <code class="code">iki-0000</code> to represent an IKI with no explicitly defined vocabulary.
Whereas <code class="code">iki-0001</code> and beyond represent a specific IKI vocabulary.
</p>
<p class="p">
- A potential IKI variable name starts on word (or <code class="code">_</code>, <code class="code">-</code>, <code class="code">+</code>) characters.
- White space and non-word (and non <code class="code">_</code>, <code class="code">-</code>, <code class="code">+</code>) character punctuations may not exist as part of the variable name.
+ A potential IKI variable name starts on word character or one of <code class="code">_</code> (<code class="code">U+005F</code>), <code class="code">-</code> (<code class="code">U+002D</code>), <code class="code">+</code> (<code class="code">U+002B</code>), <code class="code">[</code> (<code class="code">U+005B</code>)).
+ White space, non-word, and non <code class="code">_</code> (<code class="code">U+005F</code>), <code class="code">-</code> (<code class="code">U+002D</code>), <code class="code">+</code> (<code class="code">U+002B</code>)) character punctuations may not exist as part of the variable name.
The only Unicode dash-like characters allowed as a "dash" are those intended to connect, such as the Unicode hyphens (<code class="code">U+2010</code> and <code class="code">U+2011</code>).
</p>
<p class="p">
- Any valid IKI data may be escaped to make it treated as non-IKI data by prepending a backslash <code class="code">" before the colon code:</code>:" that is before the opening quote (single or double).
+ Any potential IKI data must be escaped to make it treated as non-IKI data by prepending a backslash <code class="code">\</code> before the colon <code class="code">:</code> that is before the opening quote (single, double, or backtic). Potential IKI data refers to any valid IKI sequence without considering the closing single quote <code class="code">'</code> (<code class="code">U+0027</code>), closing double quote <code class="code">"</code> (<code class="code">U+0022</code>), or closing grave <code class="code">`</code> (<code class="code">U+0060)</code>.
</p>
<p class="p">
Unicode punctuation connector characters are supported just like <code class="code">_</code>, except when they connect outside the current line (such as <code class="code">U+FE33</code> <code class="code">︳</code>).
Key:
</p>
<ul>
- <li><code class="code">\o</code> = any printable word character, including <code class="code">_</code>, <code class="code">-</code>, <code class="code">+</code> (and Unicode equivalents).</li>
- <li><code class="code">\c</code> = any character, including white space and non-printing, and any delimited quote (used as the opening quote) or a any quote (undelimited) not used as the opening quote.</li>
- <li><code class="code">\q</code> = either a single quote <code class="code">'</code> or a double quote <code class="code">"</code>.</li>
- <li><code class="code">\x</code> = any character.</li>
- <li><code class="code">\W</code> = any non-word character, discluding <code class="code">_</code>, <code class="code">-</code>, <code class="code">+</code> (and Unicode equivalents).</li>
- <li><code class="code">\e</code> = an optional escape sequence of any number of backslashes, such as <code class="code">\</code>.</li>
- <li><code class="code">*</code> = zero or more occurrences.</li>
- <li><code class="code">~</code> = one or more occurrences, or zero if at start of file.</li>
+ <li><code class="code">\o</code> = any printable word character, including <code class="code">_</code>, <code class="code">-</code>, <code class="code">+</code> (and Unicode equivalents).</li>
+ <li><code class="code">\c</code> = any character, including white space and non-printing, and any delimited quote (used as the opening quote) or a any quote (undelimited) not used as the opening quote.</li>
+ <li><code class="code">\q</code> = either a single quote <code class="code">'</code> (<code class="code">U+0027</code>), a double quote <code class="code">"</code> (<code class="code">U+0022</code>, or a grave <code class="code">`</code> (<code class="code">U+0060</code>).</li>
+ <li><code class="code">\x</code> = any character.</li>
+ <li><code class="code">\W</code> = any non-word character, discluding <code class="code">_</code>, <code class="code">-</code>, <code class="code">+</code> (and Unicode equivalents).</li>
+ <li><code class="code">\e</code> = an optional escape sequence of any number of backslashes, such as <code class="code">\</code>.</li>
+ <li><code class="code">[</code> = a single conditionally optional open bracket, <code class="code">[</code> (<code class="code">U+005B</code>).</li>
+ <li><code class="code">]</code> = a single conditionally optional close bracket, <code class="code">]</code> (<code class="code">U+005D</code>).</li>
+ <li><code class="code">*</code> = zero or more occurrences.</li>
+ <li><code class="code">~</code> = one or more occurrences, or zero if at start of file.</li>
</ul>
<p class="p">
Before Structure:
<p class="p">
Example File:
</p><pre class="preserve">
-# FSS-000C iki-0000
+# fss-000c iki-0000
+
+This is my sentence, anything can go here but sometimes I want to italic\:"emphasize some text".
-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\:"Featureless Settings Specification" header (which would not resolve to any IKI syntax anyway).
-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.\";".
-Quotes may be included, such as: code:"const char *string = \"My \\\"quoted\\\" C string.\";".
+The following italic\:"is escaped to not be treated as IKI data".
-The following emphasis\:"is escaped to not be treated as IKI data".
+The conditionally optional open and close brackets allow for putting a variable directly next to another word character like: [context]\:"strong"this[context]\:"strong".
</pre>
<p class="p">
Example Results:
</p><pre class="preserve">
-Objects would be:
- 1) emphasis
+Objects (also called vocabulary or variable name) would be:
+ 1) italic
2) url
- 3) code
+ 3) FSS
+ 4) code
+ 5) italic
+ 6) context
+ 7) context
-Contents would be:
+Contents (also called variable value) would be:
1.1) emphasize some text
2.1) http://www.example.com/url with space/
- 3.1) const char *string = "My \"quoted\" C string.";
+ 3.1) Featureless Settings Specification
+ 4.1) const char *string = "My \"quoted\" C string.";
+ 5.1) is escaped to not be treated as IKI data
+ 6.1) strong
+ 7.1) strong
</pre>
<p class="p">
The following are core specifications (each with a common name associated with the specification number):