From: Kevin Day Date: Sat, 17 Dec 2022 16:56:41 +0000 (-0600) Subject: Update: Standards files, also adding Featureless Make and Controller specifications. X-Git-Url: https://git.kevux.org/?a=commitdiff_plain;h=fe1596991479f7278f6ed1961eb2fc2b01f3c41b;p=kevux.org-website Update: Standards files, also adding Featureless Make and Controller specifications. --- diff --git a/documents/standards/controller/entry.txt b/documents/standards/controller/entry.txt new file mode 100644 index 0000000..00fbfdd --- /dev/null +++ b/documents/standards/controller/entry.txt @@ -0,0 +1,139 @@ +# fss-0002 +# +# license: open-standard-license-1.0 +# + +Entry Specification: + The Entry files follow the FSS-0005 (Somewhat Basic List) format. + + An Entry file name is expected to have the file extension ".entry". + + For each Entry file\: + - The outer most part is a FSS-0002 (Basic List). + - The Basic List Object is considered the "Item". + - The Basic List Content are considered the "Actions". + - The "Actions" are FSS-0001 (Extended). + - Each Action Object is the "Action Name". + - Each Action Content are the "Action Parameters". + + The Items\: + - "main": required. + + - "settings": optional, Actions may be one of\: + - "control": One to two Content. + The first Content is a relative or absolute path to a socket file. + The second Content an optional "readonly". + - "control_group": Exactly one Content that is a group name or group id. + - "control_mode": Exactly one Content that is a valid file mode. + - "control_user": Exactly one Content that is a user name or user id. + - "define": Two Content, the first Content must be a case-sensitive valid environment variable name (alpha-numeric or underscore, but no leading digits). + - "mode": Exactly one Content that is one of "program" or "service". + - "parameter": Two Content, the first Content must be a case-sensitive valid IKI name and the second being an IKI value. + - "pid": Exactly one Content that is one of "disable", "require", or "ready". + - "pid_file": Exactly one Content that is a relative or absolute path to a pid file. + - "session": Exactly one Content that is one of "new" or "same". + - "show": Exactly one Content that is one of "normal" or "init". + - "timeout": One or two content with the first being one of "exit", "start", "stop", or "kill" and the (optional) second Content being a positive whole number or 0. + + The Entry file may have any other valid Item Objects, but only the above are reserved. + + The Actions\: + - "consider": One or more Content. + The first Content is the relative file path (without any leading/trailing slashes and without file extension). + The second Content is the basename for a rule file. + The third and beyond may only be one of\: + - "asynchronous" + - "require" + - "wait" + + - "execute": One or more Content. + The first Content is the program name or full path to the program (the program may be a script). + All remaining Content are passed as parameters to the program being executed. + + - "failsafe": One Content that is a valid Object name, except for the reserved "main". + + - "freeze": Two or more Content. + The first Content that is the relative directory path (without any leading/trailing slashes). + The second Content that is the basename for a rule file. + The third and beyond may only be one of\: + - "asynchronous" + - "require" + - "wait" + + - "item": One Content that is a valid Object name, except for the reserved "main". + + - "kill": Two or more Content. + The first Content that is the relative directory path (without any leading/trailing slashes). + The second Content that is the basename for a rule file. + The third and beyond may only be one of\: + - "asynchronous" + - "require" + - "wait" + + - "pause": Two or more Content. + The first Content that is the relative directory path (without any leading/trailing slashes). + The second Content that is the basename for a rule file. + The third and beyond may only be one of\: + - "asynchronous" + - "require" + - "wait" + + - "ready": Zero or One Content. + The first may only be one of\: + - "wait" + + - "reload": Two or more Content. + The first Content that is the relative directory path (without any leading/trailing slashes). + The second Content that is the basename for a rule file. + The third and beyond may only be one of\: + - "asynchronous" + - "require" + - "wait" + + - "restart": Two or more Content. + The first Content that is the relative directory path (without any leading/trailing slashes). + The second Content that is the basename for a rule file. + The third and beyond may only be one of\: + - "asynchronous" + - "require" + - "wait" + + - "resume": Two or more Content. + The first Content that is the relative directory path (without any leading/trailing slashes). + The second Content that is the basename for a rule file. + The third and beyond may only be one of\: + - "asynchronous" + - "require" + - "wait" + + - "start": Two or more Content. + The first Content that is the relative directory path (without any leading/trailing slashes). + The second Content that is the basename for a rule file. + The third and beyond may only be one of\: + - "asynchronous" + - "require" + - "wait" + + - "stop": Two or more Content. + The first Content that is the relative directory path (without any leading/trailing slashes). + The second Content that is the basename for a rule file. + The third and beyond may only be one of\: + - "asynchronous" + - "require" + - "wait" + + - "thaw": Two or more Content. + The first Content that is the relative directory path (without any leading/trailing slashes). + The second Content that is the basename for a rule file. + The third and beyond may only be one of\: + - "asynchronous" + - "require" + - "wait" + + - "timeout": One or two Content. + The first being one of\: + - "exit" + - "start" + - "stop" + - "kill" + The (optional) second Content being a positive whole number or 0. diff --git a/documents/standards/controller/exit.txt b/documents/standards/controller/exit.txt new file mode 100644 index 0000000..3fbd63f --- /dev/null +++ b/documents/standards/controller/exit.txt @@ -0,0 +1,125 @@ +# fss-0002 +# +# license: open-standard-license-1.0 +# + +Exit Specification: + The Exit files follow the FSS-0005 (Somewhat Basic List) format. + + An Exit file name is expected to have the file extension ".exit". + + For each Exit file\: + - The outer most part is a FSS-0002 (Basic List). + - The Basic List Object is considered the "Item". + - The Basic List Content are considered the "Actions". + - The "Actions" are FSS-0001 (Extended). + - Each Action Object is the "Action Name". + - Each Action Content are the "Action Parameters". + + The Items\: + - "main": required. + + - "settings": optional, Actions may be one of\: + - "pid": Exactly one Content that is one of "disable", "require", or "ready". + - "session": Exactly one Content that is one of "new" or "same". + - "show": Exactly one Content that is one of "normal" or "init". + - "timeout": One or Two content with the first being one of "exit", "start", "stop", or "kill" and the (optional) second Content being a positive whole number or 0. + + The Exit file may have any other valid Item Objects, but only the above are reserved. + + The Actions\: + - "consider": One or more Content. + The first Content that is the relative file path (without any leading/trailing slashes and without file extension). + The second Content that is the basename for a rule file. + The third and beyond may only be one of\: + - "asynchronous" + - "require" + - "wait" + + - "failsafe": One Content that is a valid Object name, except for the reserved "main". + + - "freeze": Two or more Content. + The first Content that is the relative directory path (without any leading/trailing slashes). + The second Content that is the basename for a rule file. + The third and beyond may only be one of\: + - "asynchronous" + - "require" + - "wait" + + - "item": One Content that is a valid Object name, except for the reserved "main". + + - "kill": Two or more Content. + The first Content that is the relative directory path (without any leading/trailing slashes). + The second Content that is the basename for a rule file. + The third and beyond may only be one of\: + - "asynchronous" + - "require" + - "wait" + + - "pause": Two or more Content. + The first Content that is the relative directory path (without any leading/trailing slashes). + The second Content that is the basename for a rule file. + The third and beyond may only be one of\: + - "asynchronous" + - "require" + - "wait" + + - "ready": Zero or One Content. + The first may only be one of\: + - "wait" + + - "reload": Two or more Content. + The first Content that is the relative directory path (without any leading/trailing slashes). + The second Content that is the basename for a rule file. + The third and beyond may only be one of\: + - "asynchronous" + - "require" + - "wait" + + - "restart": Two or more Content. + The first Content that is the relative directory path (without any leading/trailing slashes). + The second Content that is the basename for a rule file. + The third and beyond may only be one of\: + - "asynchronous" + - "require" + - "wait" + + - "resume": Two or more Content. + The first Content that is the relative directory path (without any leading/trailing slashes). + The second Content that is the basename for a rule file. + The third and beyond may only be one of\: + - "asynchronous" + - "require" + - "wait" + + - "start": Two or more Content. + The first Content that is the relative directory path (without any leading/trailing slashes). + The second Content that is the basename for a rule file. + The third and beyond may only be one of\: + - "asynchronous" + - "require" + - "wait" + + - "stop": Two or more Content. + The first Content that is the relative directory path (without any leading/trailing slashes). + The second Content that is the basename for a rule file. + The third and beyond may only be one of\: + - "asynchronous" + - "require" + - "wait" + + - "thaw": Two or more Content. + The first Content that is the relative directory path (without any leading/trailing slashes). + The second Content that is the basename for a rule file. + The third and beyond may only be one of\: + - "asynchronous" + - "require" + - "wait" + + - "timeout": Two Content. + The first being one of\: + - "exit" + - "start" + - "stop" + - "kill" + The (optional) second Content being a positive whole number or 0. diff --git a/documents/standards/controller/packet.txt b/documents/standards/controller/packet.txt new file mode 100644 index 0000000..a290d20 --- /dev/null +++ b/documents/standards/controller/packet.txt @@ -0,0 +1,55 @@ +# fss-0002 +# +# license: open-standard-license-1.0 +# + +Packet Specification: + The controller program communicates use the FSS-000F (Packet). + This specification declares how the Payload Block, which is in FSS-000E (Payload) format, is required to be used. + + Only a single "header" is allowed. + Only a single "payload" is allowed. + + Packet Structure\: + Packet is grouped into the following blocks\: + - control: A single 1-byte block representing control codes. + - size: A single 4-byte block representing the size of the entire packet, including the control block. + + The "header" Object contains the following FSS-0001 Extended Objects (depending on "type")\: + - action: A valid action type: "freeze", "kexec", "kill", "pause", "reboot", "reload", "rerun", "restart", "resume", "shutdown", "start", "stop", or "thaw". + - length: A positive whole number inclusively between 0 and 4294965248 representing the length of the "payload" (may be in binary, octal, decimal, duodecimal, or hexidecimal). + - status: The status code name or number representing an FSS status code, such as F_none, F_failure, or 200 (where a number may have error and warning bits and may be in binary, octal, decimal, duodecimal, or hexidecimal). + - type: The packet type that is one of "controller", "error", or "init". + + When there are multiple Objects of the same name inside the "header"\: + - action: The order represents the order in which the actions are performed. + - length: There may only be one length Object, all others after the first are ignored (may be in binary, octal, decimal, duodecimal, or hexidecimal). + - status: A status for each action, in the same order as the order of the action, such as F_none, F_failure, or 200 (where a number may have error and warning bits and may be in binary, octal, decimal, duodecimal, or hexidecimal). + - type: The first represent the type and all others represents a sub-type. + + There are different headers and payload properties based on the "type". + + The "controller" type\: + Supports the following headers: "action", "length", "status", and "type". + + Only a single "action" may be provided and must exist for request and response packets. + Only a single "status" may be provided and must exist for response packets. + + The "payload" is dependent on the "action". + + The "error" type\: + Supports the following headers: "length", "status", and "type". + + Only a single "status" may be provided and must exist for request and response packets. + + The "payload" is a NULL terminated string whose length is defined by the "length" "header" Content. + + There are different headers and payload properties based on the "type". + + The "init" type\: + Supports the following headers: "action", "length", "status", and "type". + + Only a single "action" may be provided and must exist for request and response packets. + Only a single "status" may be provided and must exist for response packets. + + The "payload" is dependent on the "action". diff --git a/documents/standards/controller/rule.txt b/documents/standards/controller/rule.txt new file mode 100644 index 0000000..d02f601 --- /dev/null +++ b/documents/standards/controller/rule.txt @@ -0,0 +1,96 @@ +# fss-0002 +# +# license: open-standard-license-1.0 +# + +Rule Specification: + The Rule files follow the FSS-000D (Basic Rule) format with IKI-0000 (Unrestricted). + + A Rule file name is expected to have the file extension ".rule". + + For each Rule file\: + - The outer most part is a FSS-0002 (Basic List). + - The Basic List Object is considered the "Rule Type". + - The Basic List Content is determined by the specific "Rule Type". + - The Content for each "Rule Type" is called the "Item". + - Each Item Object is the "Item Name". + - Each Item Content is either the "Action" or the "Setting". + - Each Action Object is the "Action Name". + - Each Action Content are the "Action Parameters". + - Each Setting Object is the "Setting Name". + - Each Setting Content are the "Setting Values". + + The Rule Types\: + - "command": Follows either FSS-0003 (Extended List) or FSS-0001 (Extended). + - "script": Follows either FSS-0003 (Extended List) or FSS-0001 (Extended). + - "service": Follows either FSS-0003 (Extended List) or FSS-0001 (Extended). + - "settings": Is required and follows either FSS-0001 (Extended). + - "utility": Follows either FSS-0003 (Extended List) or FSS-0001 (Extended). + + For the above Rule Types, "settings" may be specified only once whereas the others may be specifed multiple times. + The "settings" Rule Type is always processed first, regardless of position. + The other Rule Types are processed top-down. + + The "settings" Rule Type has the following FSS-0001 (Extended)\: + - "affinity": One or more Content, each must be a 0 or greater whole number. + - "capability": One Content representing capabilities. + - "cgroup": Two or more Content, the first Content being either "existing" or "new" and the remaining representing a valid cgroup (control group) name, must have at least 1 graph character (non white space printing character) (leading and trailing white space are trimmed off). + - "define": Two Content, the first Content must be a case-sensitive valid environment variable name (alpha-numeric or underscore, but no leading digits). + - "engine": One or more Content representing a valid program name or path (such as "bash" or "/bin/bash") and any optional arguments. + - "environment": Zero or more Content, each must be a case-sensitive valid environment variable name (alpha-numeric or underscore, but no leading digits). + - "group": One or more Content representing group names or group ids. + - "limit": Three Content, with the first representing a valid resource type and the second and third being a valid resource limit number (positive whole number or 0). + - "name": One Content, must have at least 1 graph character (non white space printing character) (leading and trailing white space are trimmed off). + - "nice": One Content, must be a valid number for process "niceness" (Any whole number inclusively between -20 to 19). + - "on": Four Content, the first being a Rule Action, the second being "need", "want", or "wish", the third being a partial path, and the fourth being a Rule file name without ".rule" extension. + - "parameter": Two Content, the first Content must be a case-sensitive valid IKI name and the second being an IKI value. + - "path": One Content representing a valid PATH environment string (such as "/bin:/sbin:/usr/bin"). + - "scheduler": One or two Content representing a scheduler name and the optional numeric priority (Any whole number inclusively between 0 and 99). + - "timeout": One or two content with the first being one of "exit", "start", "stop", or "kill" and the (optional) second Content being a positive whole number or 0. + - "user": One Content representing a user name or user id. + + The "command" and "script" Rule Types allow the following the FSS-0001 (Extended)\: + - "freeze": One or more Content representing a program being executed and its arguments. + - "kill": One or more Content representing a program being executed and its arguments. + - "pause": One or more Content representing a program being executed and its arguments. + - "reload": One or more Content representing a program being executed and its arguments. + - "rerun": Two or more Content representing a Rule type that executes and its properties. + - "restart": One or more Content representing a program being executed and its arguments. + - "resume": One or more Content representing a program being executed and its arguments. + - "start": One or more Content representing a program being executed and its arguments. + - "stop": One or more Content representing a program being executed and its arguments. + - "thaw": One or more Content representing a program being executed and its arguments. + - "with": One or more Content representing special options for the Rule Type. + + The "service" and "utility" Rule Types allow the following the FSS-0001 (Extended)\: + - "pid_file": One Content representing the path to a PID file. + - "rerun": Two or more Content representing a Rule type that executes and its properties. + - "with": One or more Content being one of "full_path", "session_new", or "session_same". + + The "command" and "service" Rule Types allow the following the FSS-0003 (Extended List)\: + - "freeze": A list repesenting multiple programs and their respective arguments to execute. + - "kill": A list repesenting multiple programs and their respective arguments to execute. + - "pause": A list repesenting multiple programs and their respective arguments to execute. + - "reload": A list repesenting multiple programs and their respective arguments to execute. + - "restart": A list repesenting multiple programs and their respective arguments to execute. + - "resume": A list repesenting multiple programs and their respective arguments to execute. + - "start": A list repesenting multiple programs and their respective arguments to execute. + - "stop": A list repesenting multiple programs and their respective arguments to execute. + - "thaw": A list repesenting multiple programs and their respective arguments to execute. + + The "script" and "utility" Rule Types allow the following the FSS-0003 (Extended List)\: + - "freeze": A list repesenting the contents of a script, such as a GNU Bash shell. + - "kill": A list repesenting the contents of a script, such as a GNU Bash shell. + - "pause": A list repesenting the contents of a script, such as a GNU Bash shell. + - "reload": A list repesenting the contents of a script, such as a GNU Bash shell. + - "restart": A list repesenting the contents of a script, such as a GNU Bash shell. + - "resume": A list repesenting the contents of a script, such as a GNU Bash shell. + - "start": A list repesenting the contents of a script, such as a GNU Bash shell. + - "stop": A list repesenting the contents of a script, such as a GNU Bash shell. + - "thaw": A list repesenting the contents of a script, such as a GNU Bash shell. + + The "rerun" Rule Type Content has the following structure\: + The first Content represents one of: "freeze", "kill", "pause", "reload", "restart", "resume", "start", "stop", or "thaw". + The second Content represents one of: "success" or "failure". + The third and more Content represents one of: "delay", "max", or "reset". + Where "delay" and "max" must be followed by a positive number or the number 0. diff --git a/documents/standards/controller/task.txt b/documents/standards/controller/task.txt new file mode 100644 index 0000000..5c974ae --- /dev/null +++ b/documents/standards/controller/task.txt @@ -0,0 +1,7 @@ +# fss-0002 +# +# license: open-standard-license-1.0 +# +# A "Task" is not fully implemented but is provided as a proposal for consideration and is subject to completion or removal. + +Task Specification: diff --git a/documents/standards/controller/time.txt b/documents/standards/controller/time.txt new file mode 100644 index 0000000..4af3cf9 --- /dev/null +++ b/documents/standards/controller/time.txt @@ -0,0 +1,155 @@ +# fss-0002 iki-0000 +# +# license: open-standard-license-1.0 +# +# This file (assumed to be named time.txt) can be more easily read using the following iki_read commands: +# iki_read time.txt +Q -r UTC UTC -w -WW character "'" "'" code '"' '"' +# +# To read the "Time Specification" section of this file, use this command sequence: +# fss_basic_list_read time.txt +Q -cn "Time Specification" | iki_read +Q -r UTC UTC -w -WW character "'" "'" code '"' '"' +# + +Time Specification: + There are two units of bold:"Time", the first is simply called bold:"Time" and the second is called bold:"EpochTime". + + Both bold:"Time" and bold:"EpochTime" are measured without the year but may contain a year to designate the point in the counting begins. + These are both represented by a single 64-bit (unsigned) integer. + The default timezone is always UTC:"Coordinated Universal Time". + + The common form is intended as the non-technical form that is form common use. + This may have a negative value or be more than 64-bit digits long. + This is simply not expected to be interpreted as a unit of time on a computer (but nothing stops it from being interpreted). + + The technical forms are limit to 64-bit unsigned for technical use but should technology advance to a point where larger bits are needed then this allows for that. + The systems should expect 64-bit and larger bits would have to become common before something larger than 64-bit is the expected or assumed default. + Negative signs can be allowed but they must not prevent the full use of the 64-bit. + The implementation of how this is done is left to the implementer except that the signs are immediately to the left of the digit. + For example code:"2022:-5" would be 5 units after the start of the year 2022. + Because the negative is allowed, so must the positive character (such as code:"2022:+5"). + A positive value is the default interpretation when no sign is valid. + + The unit of time called bold:"Time" is counted increments of a nanosecond, or 10^-9 seconds. + A unit of bold:"Time" is, therefore, equivalent to a nanosecond. + The default year for bold:"Time" is the current year. + + The unit of time called bold:"EpochTime" is counted increments of a second, or 10^-9 seconds. + A unit of bold:"EpochTime" is, therefore, equivalent to a second. + The default year for bold:"EpochTime" is the bold:"UNIX Epoch", sometimes called bold:"Unix time". + + The unit bold:"Time" has two technical forms and one common form, with the year and without the year. + + Key\: + code:"\s" = White space. + code:"\d" = The digits used to represent time (a digit). + code:"*" = Zero or more occurrences. + code:"+" = One or more occurrences. + code:":" = A single colon character:":" (unicode:"U+003A"). + code:'"' = A single double-quote character:'"' (unicode:"U+003A"). + + The common form of bold:"Time"\: + + Before Structure\: + code:"". + + Structure\: + code:"\s*\d+\s*\U*\s*". + + After Structure\: + code:"". + + Example\: + code:"86400". + code:"86400 T". + code:"86400 Time". + + The first technical form of bold:"Time"\: + + Before Structure\: + code:"". + + Structure\: + code:"\s*\d+:\d+\s*\U*\s*". + + After Structure\: + code:"". + + Example\: + code:"2022:86400". + code:"2022:86400 T". + code:"2022:86400 Time". + code:"2022:86400 MT". + code:"2022:86400 MegaTime". + + The second technical form of bold:"Time"\: + + Before Structure\: + code:"". + + Structure\: + code:"\s*:\d+\s*\U*\s*". + + After Structure\: + code:"". + + Example\: + code:":86400". + code:":86400 T". + code:":86400 Time". + code:":86400 MT". + code:":86400 MegaTime". + + The unit bold:"EpochTime" has two technical forms and one common form, with the year and without the year. + + The common form of bold:"Time"\: + + Before Structure\: + code:"". + + Structure\: + code:"\s*\d+\s*\U*\s*". + + After Structure\: + code:"". + + Example\: + code:"86400". + code:"86400 ET". + code:"86400 EpochTime". + code:"86400 MET". + code:"86400 MegaEpochTime". + + The first technical form of bold:"EpochTime"\: + + Before Structure\: + code:"". + + Structure\: + code:"\s*\d+::\d+\s*\U*\s*". + + After Structure\: + code:"". + + Example\: + code:"2022::86400". + code:"2022::86400 ET". + code:"2022::86400 EpochTime". + code:"2022::86400 MET". + code:"2022::86400 MegaEpochTime". + + The second technical form of bold:"Time"\: + + Before Structure\: + code:"". + + Structure\: + code:"\s*:\d+\s*\U*\s*". + + After Structure\: + code:"". + + Example\: + code:"::86400". + code:"::86400 ET". + code:"::86400 EpochTime". + code:"::86400 MET". + code:"::86400 MegaEpochTime". diff --git a/documents/standards/fake/defines.txt b/documents/standards/fake/defines.txt new file mode 100644 index 0000000..efc35a3 --- /dev/null +++ b/documents/standards/fake/defines.txt @@ -0,0 +1,20 @@ +# fss-0002 iki-0000 +# +# license: open-standard-license-1.0 +# +# This file (assumed to be named defines.txt) can be more easily read using the following iki_read commands: +# iki_read defines.txt +Q -w -WW code '"' '"' bold '"' '"' +# +# To read the "Defines Specification" section of this file, use this command sequence: +# fss_basic_list_read defines.txt +Q -cn "Defines Specification" | iki_read +Q -w -WW code '"' '"' bold '"' '"' +# + +Defines Specification: + The build settings bold:"defines" file follows the code:"FSS-0000 (Basic)" format. + + Each Object represents a specific a macro name to be defined during compilation. + Each Content represents documentation explaining the intent and purpose of that define. + + The Object name has further restrictions than code:"FSS-0000" requires. + These restrictions are that the Object must only evaluate to a valid C/C++ macro name. + This is essentially means only Word characters. diff --git a/documents/standards/fake/dependencies.txt b/documents/standards/fake/dependencies.txt new file mode 100644 index 0000000..19f9f05 --- /dev/null +++ b/documents/standards/fake/dependencies.txt @@ -0,0 +1,21 @@ +# fss-0002 iki-0000 +# +# license: open-standard-license-1.0 +# +# This file (assumed to be named dependencies.txt) can be more easily read using the following iki_read commands: +# iki_read dependencies.txt +Q -w -r FLL FLL -WW code '"' '"' bold '"' '"' +# +# To read the "Dependencies Specification" section of this file, use this command sequence: +# fss_basic_list_read dependencies.txt +Q -cn "Dependencies Specification" | iki_read +Q -w -r FLL FLL -WW code '"' '"' bold '"' '"' +# + +Dependencies Specification: + The build settings bold:"dependencies" file follows the code:"FSS-0001 (Extended)" format. + + Each Object represents a specific project name as it would be linked against. + Each Content represents associated information, such as a version number. + Future versions of this will clarify what and how Content, such as version numbers, are to be used and processed. + + This file is originally intended for dependencies provided by the FLL:"Featureless Linux Library" project. + Order matters, and the provided order represents the order of dependencies. + The first entry therefore has no preceding dependency and the last dependency could potentially depend on all dependencies above it. diff --git a/documents/standards/fake/fakefile.txt b/documents/standards/fake/fakefile.txt new file mode 100644 index 0000000..6cb340e --- /dev/null +++ b/documents/standards/fake/fakefile.txt @@ -0,0 +1,128 @@ +# fss-0002 iki-0000 +# +# license: open-standard-license-1.0 +# +# This file (assumed to be named fakefile.txt) can be more easily read using the following iki_read commands: +# iki_read fakefile.txt +Q -w -WW character "'" "'" code '"' '"' +# +# To read the "Fakefile Specification" section of this file, use this command sequence: +# fss_basic_list_read fakefile.txt +Q -cn "Fakefile Specification" | iki_read +Q -w -WW character "'" "'" code '"' '"' +# + +Fakefile Specification: + The file:"fakefile" file follows the code:"FSS-0005 (Somewhat Basic List)" format with a sub-format of code:"IKI-0002 (Simple Script)". + + A file:"fakefile" is broken up into multiple bold:"Basic Lists", referred to as bold:"Sections", with two special purpose reserved bold:"Sections". + The bold:"Sections" are broken up into multiple bold:"Extended Objects" and their respective bold:"Contents", referred to as bold"Section Operations". + + Each of these non-reserved Sections acts as a set to perform some set of bold:"Section Operations". + Each of these bold:"Section Operations" perform a single command or action based on a set of reserved bold:"Section Operation" types. + Each of these bold:"Section Operations" have a set of bold:"Arguments" associated with them. + + How these bold:"Arguments" are interpreted and processed are specific to each bold:"Operation" type. + The bold:"Section Operations" are represented by the bold:"Extended Object" name and the bold:"Extended Content" represents the bold:"Operation Arguments". + Each of these bold:"Section Operations" support bold:"IKI" variable substitution within their respective bold:"Arguments". + The bold:"Operation Extended Object" does not support bold:"IKI" variable substitution. + The reserved bold:"Settings Section" does not support bold:"IKI" variable substitution. + + The code:"IKI-0002 (Simple Script)" vocabulary context is further clarified as follows\: + - code:"context": The value is case-sensitive variable name. + - code:"define": The value must be a case-sensitive valid environment variable name (alpha-numeric or underscore, but no leading digits). + - code:"parameter": The value is a case-sensitive variable name. + - Many parameters also support code:":option" and code:":value" appended at the end of the value. + + The reserved bold:"Section Objects" are\: + - code:"settings": contains a list of bold:"Settings Objects" and bold:"Content" in code:"FSS-0001 (Extended)" format. + - code:"main:" contains a list of bold:"Operation Objects" and bold:"Content" in code:"FSS-0001 (Extended)" format. + + The bold:"Settings Objects" are\: + - code:"compiler": Only one bold:"Content", which must only be a valid filename. + - code:"define": First bold:"Content" represents variable name (case-sensitive), remaining bold:"Content" represents the value. + - code:"environment": Zero or more bold:"Content" representing valid environment variable names (alpha-numeric with underscore, but cannot begin with a number). + - code:"fail": Only one bold:"Content", which must be either code:"exit", code:"warn" or code:"ignore" (quotes not required) (case-sensitive). + - code:"import": Only one bold:"Content", which must only be a valid filename. + - code:"indexer": Only one bold:"Content", which must only be a valid filename. + - code:"indexer_arguments: Zero or more arguments supported by the indexer specified in code:"build_indexer". + - code:"load_build": Only one bold:"Content", which must be either code:"yes" or code:"no" (quotes not required) (case-sensitive). + - code:"parameter": First bold:"Content" represents variable name (case-sensitive), remaining bold:"Content" represents the value. + + The build settings may also be specified in the bold:"Settings Section". + + The bold:"Section Operation Objects" are\: + - code:"and": One or more bold:"Content". First bold:"Content" is the condition or code:"no_dereference" (when code:"no_dereference", then the second bold:"Content" is the condition, etc..), remaining bold:"Content" are specific to the condition. + - code:"break": Zero or one bold:"Content". If specified, First bold:"Content" must be one of code:"success" or code:"failure". + - code:"build": Zero or more bold:"Content". First bold:"Content" represents file name of the settings file to use, second bold:"Content" and on represent custom modes to use. + - code:"clean": Zero bold:"Content". + - code:"clone": Two or more bold:"Content" representing paths to files. + - code:"compile": One or more bold:"Content" as parameters to compiler. + - code:"copy": Two or more bold:"Content" representing paths to files. + - code:"define": First bold:"Content" represents variable name (case-sensitive), remaining bold:"Content" represents the value. + - code:"delete": One or more bold:"Content" representing paths to files. + - code:"deletes": One or more bold:"Content" representing paths to files. + - code:"else": Zero bold:"Content". + - code:"exit": Zero or one bold:"Content". If specified, first bold:"Content" must be one of code:"succeed" or code:"fail". + - code:"fail": One Content. First bold:"Content" must be one of code:"exit", code:"warn", or code:"ignore" (case-sensitive). + - code:"group": Two or more bold:"Content". First bold:"Content" is group name, number, or code:"no_dereference" (when code:"no_dereference", then the second bold:"Content" is the group name or number, etc..), remaining bold:"Content" are paths to files. + - code:"groups": Two or more bold:"Content". First bold:"Content" is group name, number, or code:"no_dereference" (when code:"no_dereference", then the second bold:"Content" is the group name or number, etc..), remaining bold:"Content" are paths to files. + - code:"if": One or more bold:"Content". First bold:"Content" is the condition or is code:"no_dereference" (when code:"no_dereference", then the second bold:"Content" is the condition, etc..), remaining bold:"Content" are specific to the condition. + - code:"index": One or more bold:"Content". + - code:"link": Two to Four bold:"Content". The first and second bold:"Content" may be either code:"force" or code:"strict", the second to last bold:"Content" is the link target file, and the last bold:"Content" is the pointer file (the link). + - code:"mode": Two or more bold:"Content". First bold:"Content" is the mode, remaining bold:"Content" are paths to files. + - code:"modes": Two or more bold:"Content". First bold:"Content" is the mode, remaining bold:"Content" are paths to files. + - code:"move": Two or more bold:"Content" representing paths to files. + - code:"operate": One bold:"Content". First bold:"Content" is the name of a valid bold:"Section Object", except for the reserved bold:"Section Objects". + - code:"or": One or more bold:"Content". First bold:"Content" is the condition or code:"no_dereference" (when code:"no_dereference", then the second bold:"Content" is the condition, etc..), remaining bold:"Content" are specific to the condition. + - code:"owner": Two or more Content. First bold:"Content" is owner name, number, or code:"no_dereference" (when code:"no_dereference", then the second bold:"Content" is the owner name or number, etc..), remaining bold:"Content" are paths to files. + - code:"owners": Two or more bold:"Content". First bold:"Content" is owner name, number, or code:"no_dereference" (when code:"no_dereference", then the second bold:"Content" is the owner name or number, etc..), remaining bold:"Content" are paths to files. + - code:"parameter": First bold:"Content" represents variable name (case-sensitive), remaining bold:"Content" represents the value. + - code:"pop": Zero bold:"Content". + - code:"print": Zero or more bold:"Content". + - code:"run": One or more bold:"Content". First bold:"Content" is the name of the program (or script) and all remaining bold:"Content" are passed as arguments to the named program (or script). + - code:"shell": One or more bold:"Content". First bold:"Content" is the file path of the program (or script) and all remaining bold:"Content" are passed as arguments to the named program (or script). + - code:"skeleton": Zero bold:"Content". + - code:"to": One bold:"Content". First bold:"Content" is the directory path. + - code:"top": Zero bold:"Content". + - code:"touch": Two or more bold:"Content". First bold:"Content" is one of code:"file" or code:"directory", remaining bold:"Content" are paths to files. + - code:"write": One or more bold:"Content". First bold:"Content" the file to write to, remaining bold:"Content" represent the string to write. + + The code:"if" bold:"Section Operation" conditions are\: + - code:"==": Two or more bold:"Content". + - code:">": Two or more bold:"Content". + - code:"<": Two or more bold:"Content". + - code:">=": Two or more bold:"Content". + - code:"<=": Two or more bold:"Content". + - code:"<>": Two or more bold:"Content". + - code:"define": One or more bold:"Content" are valid environment variable name. + - code:"exist": One or more bold:"Content" representing the files to check the existence of. + - code:"failure": has no other bold:"Content". + - code:"group": First bold:"Content" is the name of a group. Second or more bold:"Content" are paths to files. + - code:"is": First bold:"Content" is a list of code:"block", code:"character", code:"no_dereference", code:"directory", code:"fifo", code:"link", code:"regular" , or code:"socket" followed by "for" and then the remaining bold:"Content" that are paths to files. + - code:"mode": First bold:"Content" is either code:"has", code:"is", or code:"no_dereference". Second bold:"Content" is a valid file mode. Third or more bold:"Content" are paths to files. + - code:"no_dereference": A non-condition inserted before any of code:"exist", code:"is", and code:"mode" (then the second bold:"Content" is the actual condition followed by any bold:"Content" associated with that condition). + - code:"not": First bold:"Content" is one of code:"define", code:"exist", code:"group", code:"is", code:"mode", code:"no_dereference", code:"owner", or code:"parameter" and all remaining bold:"Content" are based on the first bold:"Content"'s code:"if" bold:"Section Operation Content" rules. + - code:"owner": First bold:"Content" is the name of an owner. Second or more bold:"Content" are paths to files. + - code:"parameter": One or more bold:"Content" are valid bold:"IKI" names. + - code:"success": has no other bold:"Content". + + The code:"if" bold:"Section Operation" conditions and numbers\: + The numbers may be represented in any of the forms\: + 1) code:"decimal": all numbers without a base-type prefix are of base-type 10, referred to as decimal. + 2) code:"binary": all numbers with the prefix code:"0b" (uppercase or lowercase character:'b') are of base-type 2, referred to as binary. + 3) code:"octal": all numbers with the prefix code:"0o" (that is zero followed by the letter character:'o', uppercase or lowercase character:'o') are of base-type 8, referred to as octal. + 4) code:"duodecimal": all numbers with the prefix code:"0d" (uppercase or lowercase character:'d') are of base-type 12, referred to as duodecimal. + 5) code:"hexadecimal": all numbers with the prefix code:"0x" (uppercase or lowercase character:'x') are of base-type 16, referred to as hexadecimal. + + (At this time) The numbers may be of a max value of 2^64, or 18446744073709551615, positive or negative. + (At this time) The numbers may only be whole numbers. + Note: There are plans to impose no limits on the number size or any decimal values, but this requires significant work is not to be implemented at this time. + Once this restriction is lifted, it should be conditional upon an implementation for what the maximum supported numbers or digits may be. + + Only the following code:"if" Section Operation conditions use these operators\: + - code:">" + - code:"<" + - code:">=" + - code:"<=" + + The code:"if" bold:"Section Operation" condition code:"parameter"\: + The following reserved words are available for parameter names: code:"build", code:"color", code:"current", code:"data", code:"define", code:"fakefile", code:"mode", code:"process", code:"return", code:"settings", code:"sources", code:"top", code:"verbosity", and code:"work". + Each of the reserved words supports having code:":option" and code:":value" appended, such as: code:"work:value". diff --git a/documents/standards/fake/settings.txt b/documents/standards/fake/settings.txt new file mode 100644 index 0000000..b6969e7 --- /dev/null +++ b/documents/standards/fake/settings.txt @@ -0,0 +1,112 @@ +# fss-0002 iki-0000 +# +# license: open-standard-license-1.0 +# +# This file (assumed to be named settings.txt) can be more easily read using the following iki_read commands: +# iki_read settings.txt +Q -w -WW character "'" "'" code '"' '"' +# +# To read the "Settings Specification" section of this file, use this command sequence: +# fss_basic_list_read settings.txt +Q -cn "Settings Specification" | iki_read +Q -w -WW character "'" "'" code '"' '"' +# + +Settings Specification: + The build settings bold:"settings" file follows the code:"FSS-0001 (Extended)" format. + + Each bold:"Object" represents a settings property name. + There is only a distinct set of setting property names (see below). + + Each bold:"Content" represents the values associated with that property. + Additional restrictions are applied to each bold:"Content" depending on each specific bold:"Object" name (see below). + + bold:"Object" names and their respective bold:"Content" purpose/restrictions\: + - code:"build_compiler": Only one bold:"Content", which must only be a valid filename. + - code:"build_indexer": Only one bold:"Content", which must only be a valid filename. + - code:"build_indexer_arguments": Zero or more arguments supported by the indexer specified in code:"build_indexer". + - code:"build_language": Must only be one of: code:"bash", code:"c", or code:"c++". + - code:"build_libraries": Must only contain any number of valid library include arguments that are valid for the compiler defined in "build_compiler" bold:"Object". + - code:"build_libraries_shared": Must only contain any number of valid library include arguments that are valid for the compiler defined in "build_compiler" bold:"Object". + - code:"build_libraries_static": Must only contain any number of valid library include arguments that are valid for the compiler defined in "build_compiler" bold:"Object". + - code:"build_name": Must only contain characters allowed in a filename. + - code:"build_objects_library": Must only contain any number of valid object file names relative to the appropriate code:"path_object_*" path. + - code:"build_objects_library_shared": Must only contain any number of valid object file names relative to the code:"path_object_shared" path. + - code:"build_objects_library_static": Must only contain any number of valid object file names relative to the code:"path_object_static" path. + - code:"build_objects_program": Must only contain any number of valid object file names relative to the appropriate code:"path_object_*" path. + - code:"build_objects_program_shared": Must only contain any number of valid object file names relative to the code:"path_object_shared" path. + - code:"build_objects_program_static": Must only contain any number of valid object file names relative to the code:"path_object_static" path. + - code:"build_script": Must only one of: code:"yes" or code:"no". + - code:"build_shared": Must only one of: code:"yes" or code:"no". + - code:"build_sources_headers": Must only contain any number of valid filenames. + - code:"build_sources_headers_shared": Must only contain any number of valid filenames. + - code:"build_sources_headers_static": Must only contain any number of valid filenames. + - code:"build_sources_library": Must only contain any number of valid filenames. + - code:"build_sources_library_shared": Must only contain any number of valid filenames. + - code:"build_sources_library_static": Must only contain any number of valid filenames. + - code:"build_sources_object": Must only contain any number of valid filenames. + - code:"build_sources_object_shared": Must only contain any number of valid filenames. + - code:"build_sources_object_static": Must only contain any number of valid filenames. + - code:"build_sources_program": Must only contain any number of valid filenames. + - code:"build_sources_program_shared": Must only contain any number of valid filenames. + - code:"build_sources_program_static": Must only contain any number of valid filenames. + - code:"build_sources_script": Must only contain any number of valid filenames. + - code:"build_sources_setting": Must only contain any number of valid filenames. + - code:"build_static": Must only one of: code:"yes" or code:"no". + - code:"defines": Must only contain any number of valid macro names supported by the compiler specified in code:"build_compiler". + - code:"defines_library": Must only contain any number of valid macro names supported by the compiler specified in code:"build_compiler". + - code:"defines_library_shared": Must only contain any number of valid macro names supported by the compiler specified in code:"build_compiler". + - code:"defines_library_static": Must only contain any number of valid macro names supported by the compiler specified in code:"build_compiler". + - code:"defines_object": Must only contain any number of valid macro names supported by the compiler specified in code:"build_compiler". + - code:"defines_object_shared": Must only contain any number of valid macro names supported by the compiler specified in code:"build_compiler". + - code:"defines_object_static": Must only contain any number of valid macro names supported by the compiler specified in code:"build_compiler". + - code:"defines_program": Must only contain any number of valid macro names supported by the compiler specified in code:"build_compiler". + - code:"defines_program_shared": Must only contain any number of valid macro names supported by the compiler specified in code:"build_compiler". + - code:"defines_program_static": Must only contain any number of valid macro names supported by the compiler specified in code:"build_compiler". + - code:"defines_shared": Must only contain any number of valid macro names supported by the compiler specified in code:"build_compiler". + - code:"defines_static": Must only contain any number of valid macro names supported by the compiler specified in code:"build_compiler". + - code:"environment": Environment variable names, case-sensitive, usually uppercase. May only contain characters allowed in an environment variable. + - code:"flags": Must only contain any number of parameters supported by the compiler specified in code:"build_compiler". + - code:"flags_library": Must only contain any number of parameters supported by the compiler specified in code:"build_compiler". + - code:"flags_library_shared": Must only contain any number of parameters supported by the compiler specified in code:"build_compiler". + - code:"flags_library_static": Must only contain any number of parameters supported by the compiler specified in code:"build_compiler". + - code:"flags_object": Must only contain any number of parameters supported by the compiler specified in code:"build_compiler". + - code:"flags_object_shared": Must only contain any number of parameters supported by the compiler specified in code:"build_compiler". + - code:"flags_object_static": Must only contain any number of parameters supported by the compiler specified in code:"build_compiler". + - code:"flags_program": Must only contain any number of parameters supported by the compiler specified in code:"build_compiler". + - code:"flags_program_shared": Must only contain any number of parameters supported by the compiler specified in code:"build_compiler". + - code:"flags_program_static": Must only contain any number of parameters supported by the compiler specified in code:"build_compiler". + - code:"flags_shared": Must only contain any number of parameters supported by the compiler specified in code:"build_compiler". + - code:"flags_static": Must only contain any number of parameters supported by the compiler specified in code:"build_compiler". + - code:"has_path_standard": Must only one of: code:"yes" or code:"no". + - code:"import": Only one bold:"Content", which must only be a valid filename. + - code:"modes": Any valid word character, character:'-', or character:'+'. + - code:"modes_default": May only be a single complete bold:"Content" word defined in code:"modes" bold:"Object". + - code:"path_headers": Must be a single valid path. + - code:"path_language": Must be a single valid path. + - code:"path_library_script": Must be a single valid path. + - code:"path_library_shared": Must be a single valid path. + - code:"path_library_static": Must be a single valid path. + - code:"path_object_script": Must be a single valid path. + - code:"path_object_shared": Must be a single valid path. + - code:"path_object_static": Must be a single valid path. + - code:"path_program_script": Must be a single valid path. + - code:"path_program_shared": Must be a single valid path. + - code:"path_program_static": Must be a single valid path. + - code:"path_sources": Must only be a valid directory path or not specified. + - code:"path_sources_object": Must only be a valid directory path or not specified. + - code:"preserve_path_headers": Must only be one of code:"yes" or code:"no". + - code:"process_post": Only one bold:"Content", which must only be a valid filename. + - code:"process_pre": Only one bold:"Content", which must only be a valid filename. + - code:"search_exclusive": Must only one of: code:"yes" or code:"no". + - code:"search_shared": Must only one of: code:"yes" or code:"no". + - code:"search_static": Must only one of: code:"yes" or code:"no". + - code:"version_file": Must only be one of: code:"major", code:"minor", code:"micro", or code:"nano". + - code:"version_major": Must only be a single value containing valid filename characters. + - code:"version_major_prefix": Must be zero or more valid filename characters. + - code:"version_micro": Must only be a single value containing valid filename characters. + - code:"version_micro_prefix": Must be zero or more valid filename characters. + - code:"version_minor": Must only be a single value containing valid filename characters. + - code:"version_minor_prefix": Must be zero or more valid filename characters. + - code:"version_nano": Must only be a single value containing valid filename characters. + - code:"version_nano_prefix": Must be zero or more valid filename characters. + - code:"version_target": Must only be one of: code:"major", code:"minor", code:"micro", or code:"nano". + + All bold:"Object" names support having a code:"-" and a code:"mode" name, such as code:"build_libraries-individual" for a mode called code:"individual", except for the code:"modes" and the code:"modes_default" bold:"Object" names. diff --git a/documents/standards/fll/fss-0000.txt b/documents/standards/fll/fss-0000.txt index ffe6259..6bd51cd 100644 --- a/documents/standards/fll/fss-0000.txt +++ b/documents/standards/fll/fss-0000.txt @@ -1,13 +1,20 @@ -# 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 +Q -w -WW character "'" "'" code '"' '"' +# +# To read the "Featureless Settings Specification: 0000 - Basic" section of this file, use this command sequence: +# fss_basic_list_read fss-0000.txt +Q -cn "Featureless Settings Specification: 0000 - Basic" | iki_read +Q -w -WW character "'" "'" code '"' '"' +# 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. If only printing white spaces or non-printable characters follow a valid Object, then that Object is considered to have no Content. + An Object may be quoted to include whitespace where a single quote character:"'" (unicode:"U+0027"), a double quote character:'"' (unicode:"U+0022"), or a backtick character:'`' (unicode:"U+0060") are used to quote. Content exists on the same line as the Object. Content is represented as a single Content column terminated by a newline. @@ -17,21 +24,21 @@ Featureless Settings Specification: 0000 - Basic: No delimits are supported in the Content. Key\: - "\s" = White space, except newline. - "\b" = Either white space or printable, except newline. - "\q" = Non-white space or quoted white space with no white space 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 (and non-whitespace) 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/documents/standards/fll/fss-0001.txt b/documents/standards/fll/fss-0001.txt index d753189..20cac45 100644 --- a/documents/standards/fll/fss-0001.txt +++ b/documents/standards/fll/fss-0001.txt @@ -1,13 +1,20 @@ -# 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 +Q -w -WW character "'" "'" code '"' '"' +# +# To read the "Featureless Settings Specification: 0001 - Extended" section of this file, use this command sequence: +# fss_basic_list_read fss-0001.txt +Q -cn "Featureless Settings Specification: 0001 - Extended" | iki_read +Q -w -WW character "'" "'" code '"' '"' +# 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. If only printing white spaces or non-printable characters follow a valid Object, then that Object is considered to have no Content. + An Object may be quoted to include whitespace where a single quote character:"'" (unicode:"U+0027"), a double quote character:'"' (unicode:"U+0022"), or a backtick character:'`' (unicode:"U+0060") are used to quote. Content exists on the same line as the Object. Content is represented as multiple Content columns. @@ -15,22 +22,22 @@ Featureless Settings Specification: 0001 - Extended: Any number of Content columns may exist in the Content until the newline is reached. Key\: - "\s" = White space, except newline. - "\b" = Either white space or printable, except newline. - "\q" = Non-white space or quoted white space, no white space outside of quotes. - "\n" = Newline. - "*" = Zero or more occurrences. - "+" = One or more occurrences. - "()*" = Grouping that repeats zero 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 (and non-whitespace) with no white space outside of the quotes. + code:"\n" = Newline. + code:"*" = Zero or more occurrences. + code:"+" = One or more occurrences. + code:"()*" = Grouping that repeats zero 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/documents/standards/fll/fss-0002.txt b/documents/standards/fll/fss-0002.txt index 4626bb7..550e9f5 100644 --- a/documents/standards/fll/fss-0002.txt +++ b/documents/standards/fll/fss-0002.txt @@ -1,37 +1,43 @@ -# fss-0002 +# fss-0002 iki-0000 # # license: open-standard-license-1.0 # +# This file (assumed to be named fss-0002.txt) can be more easily read using the following iki_read commands: +# iki_read fss-0002.txt +Q -w -WW character "'" "'" code '"' '"' +# +# To read the "Featureless Settings Specification: 0002 - Basic List" section of this file, use this command sequence: +# fss_basic_list_read fss-0002.txt +Q -cn "Featureless Settings Specification: 0002 - Basic List" | iki_read +Q -w -WW character "'" "'" code '"' '"' +# Featureless Settings Specification: 0002 - Basic List: Each Object starts at the beginning of a line and white space to the left of the Object is not treated as an object. - A colon ':' (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 newline 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 or double-quote delimitation in this specification. + 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. Empty Objects are allowed, that is, the length of the object may be zero. Key\: - "\s" = White space, except newline. - "\o" = Any printable character, except unescaped ':' (U+003A). - "\l" = Any printable character or white space, except unescaped ':' (U+003A). - "\c" = Either white space or printable, including newline, that not interpretable as an Object. - "\n" = Newline. - "*" = Zero or more occurrences. + code:"\s" = White space, except newline. + 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:"*" = 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 diff --git a/documents/standards/fll/fss-0003.txt b/documents/standards/fll/fss-0003.txt index b0b34e1..f8a436c 100644 --- a/documents/standards/fll/fss-0003.txt +++ b/documents/standards/fll/fss-0003.txt @@ -1,45 +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 +Q -w -WW character "'" "'" code '"' '"' +# +# To read the "Featureless Settings Specification: 0003 - Extended List" section of this file, use this command sequence: +# fss_basic_list_read fss-0003.txt +Q -cn "Featureless Settings Specification: 0003 - Extended List" | iki_read +Q -w -WW character "'" "'" code '"' '"' +# Featureless Settings Specification: 0003 - Extended List: Each Object starts at the beginning of a line and white space to the left of the Object is not treated as an object. - An open-brace '{' (U+007B) followed by any white space until a newline terminates a possible valid Object. - An Object is not considered fully valid until a valid close-brace '}' (U+007D) is found, designating the end of the Content. + An open-brace character:"{" (unicode:"U+007B") followed by any white space until a newline terminates a possible valid Object. + An Object is not considered fully valid until a valid close-brace 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. - 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 character:"}". 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. - There is no single-quote or double-quote delimitation in this specification. + 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. 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. - 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 zero. Key\: - "\s" = White space, except newline. - "\o" = Any printable character, except unescaped '{' (U+007B). - "\l" = Any printable character or white space, except unescaped '}' (U+007D). - "\c" = Either white space or printable, including newline, that is not interpretable as an Object. - "\n" = Newline. - "*" = Zero or more occurrences. + code:"\s" = White space, except newline. + 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:"\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 diff --git a/documents/standards/fll/fss-0004.txt b/documents/standards/fll/fss-0004.txt index 905b6b3..4fbc452 100644 --- a/documents/standards/fll/fss-0004.txt +++ b/documents/standards/fll/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 +Q -w -WW character "'" "'" code '"' '"' +# +# 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 +Q -cn "Featureless Settings Specification: 0004 - Very Basic List" | iki_read +Q -w -WW character "'" "'" code '"' '"' +# 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 "FSS-0002 (Basic List)" escapes are applied before any "FSS-0000 (Basic)" 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 diff --git a/documents/standards/fll/fss-0005.txt b/documents/standards/fll/fss-0005.txt index 2cc6caf..eac68fd 100644 --- a/documents/standards/fll/fss-0005.txt +++ b/documents/standards/fll/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 +Q -w -WW character "'" "'" code '"' '"' +# +# 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 +Q -cn "Featureless Settings Specification: 0005 - Somewhat Basic List" | iki_read +Q -w -WW character "'" "'" code '"' '"' +# Featureless Settings Specification: 0005 - Somewhat Basic List: - This is a code"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 "FSS-0002 (Basic List)" escapes are applied before any "FSS-0001 (Extended)" 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 diff --git a/documents/standards/fll/fss-0006.txt b/documents/standards/fll/fss-0006.txt index f4ac239..5716431 100644 --- a/documents/standards/fll/fss-0006.txt +++ b/documents/standards/fll/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 +Q -w -WW character "'" "'" code '"' '"' +# +# 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 +Q -cn "Featureless Settings Specification: 0006 - Somewhat Extended List" | iki_read +Q -w -WW character "'" "'" code '"' '"' +# 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 "FSS-0003 (Extended List)" escapes are applied before any "FSS-0000 (Basic)" 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 diff --git a/documents/standards/fll/fss-0007.txt b/documents/standards/fll/fss-0007.txt index 29ba17d..fd2dd0f 100644 --- a/documents/standards/fll/fss-0007.txt +++ b/documents/standards/fll/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 +Q -w -WW character "'" "'" code '"' '"' +# +# 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 +Q -cn "Featureless Settings Specification: 0007 - Very Extended List" | iki_read +Q -w -WW character "'" "'" code '"' '"' +# 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 "FSS-0003 (Extended List)" escapes are applied before any "FSS-0001 (Extended)" 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 diff --git a/documents/standards/fll/fss-0008.txt b/documents/standards/fll/fss-0008.txt index e620a8c..47f50b3 100644 --- a/documents/standards/fll/fss-0008.txt +++ b/documents/standards/fll/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 +Q -w -WW character "'" "'" code '"' '"' +# +# To read the "Featureless Settings Specification: 0008 - Embedded List" section of this file, use this command sequence: +# fss_basic_list_read fss-0008.txt +Q -cn "Featureless Settings Specification: 0008 - Embedded List" | iki_read +Q -w -WW character "'" "'" code '"' '"' +# 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/documents/standards/fll/fss-0009.txt b/documents/standards/fll/fss-0009.txt index 9ebe04f..b9852a3 100644 --- a/documents/standards/fll/fss-0009.txt +++ b/documents/standards/fll/fss-0009.txt @@ -1,15 +1,22 @@ -# 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 +Q -w -WW character "'" "'" code '"' '"' +# +# To read the "Featureless Settings Specification: 0009 - Reverse Mapping" section of this file, use this command sequence: +# fss_basic_list_read fss-0009.txt +Q -cn "Featureless Settings Specification: 0009 - Reverse Mapping" | iki_read +Q -w -WW character "'" "'" code '"' '"' +# 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 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 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 whitespace 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. Content exists on the same line as the Object. Content is represented as a single Content column that begins at a newline. @@ -19,21 +26,21 @@ Featureless Settings Specification: 0009 - Reverse Mapping: No delimits are supported in the Content. Key\: - "\s" = White space, except newline. - "\b" = Either white space or printable, except newline. - "\q" = Non-white space or quoted white space with no white space 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 (and non-whitespace) 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/documents/standards/fll/fss-000a.txt b/documents/standards/fll/fss-000a.txt index 9da12c6..a44a215 100644 --- a/documents/standards/fll/fss-000a.txt +++ b/documents/standards/fll/fss-000a.txt @@ -1,15 +1,22 @@ -# 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 +Q -w -WW character "'" "'" code '"' '"' +# +# 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 +Q -cn "Featureless Settings Specification: 000A - Extended Reverse Mapping" | iki_read +Q -w -WW character "'" "'" code '"' '"' +# 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 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 white spaces or non-printable characters follow a valid Object, then that Object is considered to have no Content. + An Object may be quoted to include whitespace where a single quote character:"'" (unicode:"U+0027"), a double quote character:'"' (unicode:"U+0022"), or a backtick character:'`' (unicode:"U+0060") are used to quote. Content exists on the same line as the Object. Content is represented as multiple Content columns. @@ -17,22 +24,22 @@ Featureless Settings Specification: 000A - Extended Reverse Mapping: Any number of Content columns may exist in the Content until the Object is reached. Key\: - "\s" = White space, except newline. - "\b" = Either white space or printable, except newline. - "\q" = Non-white space or quoted white space, no white space outside of quotes. - "\n" = Newline. - "*" = Zero or more occurrences. - "+" = One or more occurrences. - "()*" = Grouping that repeats zero 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 (and non-whitespace) with no white space outside of the quotes. + code:"\n" = Newline. + code:"*" = Zero or more occurrences. + code:"+" = One or more occurrences. + code:"()*" = Grouping that repeats zero 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/documents/standards/fll/fss-000b.txt b/documents/standards/fll/fss-000b.txt index 37d00ec..50001ae 100644 --- a/documents/standards/fll/fss-000b.txt +++ b/documents/standards/fll/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 +Q -w -WW character "'" "'" code '"' '"' +# +# To read the "Featureless Settings Specification: 000B - Simple List" section of this file, use this command sequence: +# fss_basic_list_read fss-000b.txt +Q -cn "Featureless Settings Specification: 000B - Simple List" | iki_read +Q -w -WW character "'" "'" code '"' '"' +# Featureless Settings Specification: 000B - Simple List: - This is similar to "FSS-0008 (Embedded List)", except that it is an "FSS-0003 (Extended List)" with a (non-recursive) "FSS-0002 (Basic List)" inside the Content. + This is similar to code:"FSS-0008 (Embedded List)", except that 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/documents/standards/fll/fss-000c.txt b/documents/standards/fll/fss-000c.txt index 82dd9e8..8ea58e8 100644 --- a/documents/standards/fll/fss-000c.txt +++ b/documents/standards/fll/fss-000c.txt @@ -1,23 +1,29 @@ -# 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 +Q -w -r FSS FSS -WWW character "'" "'" code '"' '"' emphasis '"' '"' +# +# To read the "Featureless Settings Specification: 000C - IKI Text" section of this file, use this command sequence: +# fss_basic_list_read fss-000c.txt +Q -cn "Featureless Settings Specification: 000C - IKI Text" | iki_read +Q -w -r FSS FSS -WWW character "'" "'" code '"' '"' emphasis '"' '"' +# Featureless Settings Specification: 000C - IKI Text: - The IKI specifications are separate specifications from the FSS. + The IKI specifications are separate specifications from the FSS:"Featureless Settings Specifications". This is simply a more formal way to designate that this format utilizes IKI syntax. - The IKI syntax may be used in any FSS. + The IKI syntax may be used in any 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 - This is a "formal example" utilizing the FSS headers. + This is a italic:"formal example" utilizing the FSS headers. Example\: # iki-0000 - This is a "informal example" utilizing the IKI headers. + This is a italic:"informal example" utilizing the IKI headers. diff --git a/documents/standards/fll/fss-000d.txt b/documents/standards/fll/fss-000d.txt index f4e37aa..16d933a 100644 --- a/documents/standards/fll/fss-000d.txt +++ b/documents/standards/fll/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 +Q -w -r FSS FSS -WW character "'" "'" code '"' '"' +# +# To read the "Featureless Settings Specification: 000D - Basic Rule" section of this file, use this command sequence: +# fss_basic_list_read fss-000d.txt +Q -cn "Featureless Settings Specification: 000D - Basic Rule" | iki_read +Q -w -r FSS FSS -WW character "'" "'" code '"' '"' +# Featureless Settings Specification: 000D - Basic Rule: - This is a special case that follows "FSS-0002 (Basic List)", and different FSS formats inside this "FSS-0002 (Basic List)". - This "FSS-0002 (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 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 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 "FSS-0003 (Extended List)" Object, then check to see if it is an "FSS-0000 (Basic)" or "FSS-0001 (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-0000 (Basic)" and "FSS-0001 (Extended)" Objects have the same format for Object names but the "FSS-0003 (Extended List)" Object is slightly different. - Anything that would match an "FSS-0003 (Extended List)" Object must therefore be an "FSS-0003 (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 "FSS-0002 (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)". + 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 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/documents/standards/fll/fss-000e.txt b/documents/standards/fll/fss-000e.txt index a281d5f..1c2a5f8 100644 --- a/documents/standards/fll/fss-000e.txt +++ b/documents/standards/fll/fss-000e.txt @@ -1,39 +1,45 @@ -# 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 +Q -w -rr EOF EOF FLL FLL -WWW character "'" "'" code '"' '"' emphasis '"' '"' +# +# To read the "Featureless Settings Specification: 000e - Payload" section of this file, use this command sequence: +# fss_basic_list_read fss-000e.txt +Q -cn "Featureless Settings Specification: 000e - Payload" | iki_read +Q -w -r EOF EOF FLL FLL -WWW character "'" "'" code '"' '"' emphasis '"' '"' +# 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) italic:"header". + 2) italic:"payload". - The "header"\: - - The "header"'s Content is of type "FSS-0001 (Extended)". - - The "header" is recommended to have the Objects "length", "status", "part", and "total". - - The recommended "length" represents the size of the "payload". - - The recommended "part" represents a single part of a set of packets for when the data being transmitted is split across multiple payloads. - - The recommended "total" represents the total number of parts representing a complete data transmitted across multiple payloads. - - The recommended "status" represents status codes (such as success or failure) and multiple. - - The Content for the recommended "length" and "status" are positive whole numbers (including zero) that may be in "binary", "octal", "decimal", "duodecimal", or "hexidecimal" numerical format. + The italic:"header"\: + - The italic:"header"'s Content is of type code:"FSS-0001 (Extended)". + - The italic:"header" is recommended to have the Objects italic:"length", italic:"status", italic:"part", and italic:"total". + - The recommended italic:"length" represents the size of the italic:"payload". + - The recommended italic:"part" represents a single part of a set of packets for when the data being transmitted is split across multiple payloads. + - The recommended italic:"total" represents the total number of parts representing a complete data transmitted across multiple payloads. + - The recommended italic:"status" represents status codes (such as success or failure) and multiple. + - The Content for the recommended italic:"length" and italic:"status" are positive whole numbers (including zero) that may be in italic:"binary", italic:"octal", italic:"decimal", italic:"duodecimal", or italic:"hexidecimal" numerical format. - The "payload"\: - - The "payload"'s Content may contain anything, including raw binary data. - - 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" (such as with the recommended "length"). - - The "payload" is terminated by the EOF character or by the recommended "length" header. - - The "payload" may be empty (length may be zero), but the list Object "payload" must still exist. - - Nothing in the "payload" may be considered a valid list Object by the outer "FSS-0002 (Basic List)" and therefore escaping is unnecessary (No further processing by the outer "FSS-0002 (Basic List)" is allowed at this point). - - Comments in the "payload" are not considered comments and are instead considered part of the payload, as-is. - - Essentially, the "payload" should be treated as binary data embedded in a text file. + The italic:"payload"\: + - The italic:"payload"'s Content may contain anything, including raw binary data. + - The italic:"payload" is italic:"required" to be the last list Object in the file. + - The italic:"payload" is recommended to have its size designated in some manner in the italic:"header" (such as with the recommended italic:"length"). + - The italic:"payload" is terminated by the EOF:"End of File" character or by the recommended italic:"length" header. + - The italic:"payload" may be empty (length may be zero), but the list Object italic:"payload" must still exist. + - Nothing in the italic:"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 italic:"payload" are not considered comments and are instead considered part of the payload, as-is. + - Essentially, the italic:"payload" should be treated as binary data embedded in a text file. - The recommended "length" "header" Object 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 not need to be provided in the "header". + The recommended italic:"length" italic:"header" Object used to designate the italic:"payload" size does not necessarily have to be defined in the italic:"header". + That is to say, if the italic:"payload" is expected to be of some pre-defined or static length then a length does not need to be provided in the italic:"header". - The recommended "status" "header" Object may be a string, such as "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 FLL status code. - - The FLL status code is a 16-bit digit whose first two high-order bits represent "error" and "warning" ( representing "signal"). - - The FLL status code as a number is binary sensitive and may not be portable across binaries or systems. + The recommended italic:"status" italic:"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 FLL:"Featureless Linux Library" status code. + - The FLL:"Featureless Linux Library" status code is a 16-bit digit whose first two high-order bits represent italic:"error" and italic:"warning" ( representing italic:"signal"). + - The 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\: diff --git a/documents/standards/fll/fss-000f.txt b/documents/standards/fll/fss-000f.txt index 0b05011..001bab4 100644 --- a/documents/standards/fll/fss-000f.txt +++ b/documents/standards/fll/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 +Q -w -WWW character "'" "'" code '"' '"' emphasis '"' '"' +# +# To read the "Featureless Settings Specification: 000f - Simple Packet" section of this file, use this command sequence: +# fss_basic_list_read fss-000f.txt +Q -cn "Featureless Settings Specification: 000f - Simple Packet" | iki_read +Q -w -WWW character "'" "'" code '"' '"' emphasis '"' '"' +# 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 italic:"string" or italic:"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 italic:"string" or italic:"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 italic:"string" packet or a italic:"binary" packet is referring to whether or not the Payload Block is in italic:"string" format or is in italic:"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,12 +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 italic:"header"(s) but may only contain a single italic:"payload". + With this in mind, it is recommended that only a single italic:"header" be supported in the Payload Block. - See the fss-000e.txt specification file for details on the syntax rules for 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/documents/standards/fll/fss.txt b/documents/standards/fll/fss.txt index a901c1e..abf67dd 100644 --- a/documents/standards/fll/fss.txt +++ b/documents/standards/fll/fss.txt @@ -1,48 +1,55 @@ -# 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 +Q -w -rrrrrrrr anti-KISS anti-KISS ASCII ASCII BOM BOM FSS FSS KISS KISS UTF-8 UTF-8 URL URL XML XML -WWW character "'" "'" code '"' '"' emphasis '"' '"' +# +# 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 +Q -cn "Featureless Settings Specifications" | iki_read +Q -w -rrrrrrrr anti-KISS anti-KISS ASCII ASCII BOM BOM FSS FSS KISS KISS UTF-8 UTF-8 URL URL XML XML -WWW character "'" "'" code '"' '"' emphasis '"' '"' +# Featureless Settings Specifications: - The Featureless Settings Specifications describe a set of standards designed around the age-old design principle referred to as "Keep It Simple Stupid", aka KISS. The FSS are primarily intended for settings files but are extensible enough to be used beyond that. + The Featureless Settings Specifications describe a set of standards designed around the age-old design principle referred to as italic:"Keep It Simple Stupid", aka KISS:"Keep It Simple Stupid". The FSS:"Featureless Settings Specifications" are primarily intended for settings files but are extensible enough to be used beyond that. - The FSS defines the following\: + The 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 italic:"should" have the following: code:"# fss-????" format, such as "# fss-0001". + - Multiple sub-standards may be appended to the 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 character:"?" representing the (hexadecimal/base-16) number that represents the particular specification structure. + - All settings specifications italic:"should" avoid any form of noise, relative to the data being stored. + - XML:"Extensible Markup Language" would be considered anti-KISS:"Anti Keep It Simple Stupid" due to the extreme level of noise generated by the 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 consists of two main parts: an "Object" and the "Content". + The most basic form of FSS:"Featureless Settings Specifications" consists of two main parts: an italic:"Object" and the italic:"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 "must" have an associated Object. + - Content: The data associated with a given Object; all Content italic:"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 italic:"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). - These specifications refer to characters that have printable representation as "printable". - These specifications refer to characters that have no printable representation as "non-printable". + Unless otherwise specified, all specifications are newline sensitive (character:"\n" only). + Newline characters are only character:"\n" and are never anything else (character:"\r" is not considered newline in any manner). + These specifications refer to characters that have printable representation as italic:"printable". + These specifications refer to characters that have no printable representation as italic:"non-printable". 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 with the exception of combining characters. White spaces that use combining characters result in printable characters and the resulting combination is treated as not white space. Zero-width characters that use combining characters are treated as non-printing characters and are skipped. - 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. + 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. Any specification may chose to limit, restrict, or otherwise prohibit special Unicode characters such as combining characters or zero-width characters. Unless otherwise specified, newlines designate the potential start (or end) of an Object or Content. @@ -53,8 +60,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 a single quote character:"'" (unicode:"U+0027"), a double quote character:'"' (unicode:"U+0022"), or a backtick character:'`' (unicode:"U+0060") and only a backslash character:"\\" (unicode:"U+005C") 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. @@ -62,7 +69,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 italic:"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. @@ -103,36 +110,36 @@ 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 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 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 character:"#" but only if only white space is to the left of the pound or the pound character:"#" 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:'#" 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 character:"\" in the same manner as Objects and Contents are. + This delimit only applies to the start of a comment (the pound character:"#" character) as there is no terminating character for a comment (other than a newline character:"\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 character:"#" 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. - White space used for designation characters "must" include support for UTF-8 white space characters, unless otherwise specified. + Unless otherwise specified, all designation characters italic:"must" represent 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 character:":" at the end of a basic list). + This keeps the processing and logic simple and safe, for both UTF-8:"Unicode Transformation Format 8-bit" and ASCII:"American Standard Code for Information Interchange". + White space used for designation characters italic:"must" include support for 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 unicode:"U+1680" character:" ") 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 italic:"invisible plus" character (unicode:"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 UTF-8:"Unicode Transformation Format 8-bit" 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 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 italic:"dash" are those intended to connect, such as the Unicode hyphens (unicode:"U+2010" and unicode:"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 ASCII:"American Standard Code for Information Interchange" character, that Unicode character italic:"may" be prohibited by that standard in favor of the ASCII:"American Standard Code for Information Interchange" equivalent. + One such example is in the case of a URL:"Uniform Resource Locator", where the name could be used to trick a person (url:"http://this-site.com/" vs url:"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 italic:"visibly distinct". The following are core specifications (each with a common name associated with the specification number)\: - fss-0000: Basic diff --git a/documents/standards/fll/iki-0000.txt b/documents/standards/fll/iki-0000.txt index 35c98ba..cbaebe4 100644 --- a/documents/standards/fll/iki-0000.txt +++ b/documents/standards/fll/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 +Q -w -WW character "'" "'" code '"' '"' +# +# To read the "IKI Specification: 0000 - Unrestricted" section of this file, use this command sequence: +# fss_basic_list_read iki-0000.txt +Q -cn "IKI Specification: 0000 - Unrestricted" | iki_read +Q -w -WW character "'" "'" code '"' '"' +# 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/documents/standards/fll/iki-0001.txt b/documents/standards/fll/iki-0001.txt index 3387716..3746447 100644 --- a/documents/standards/fll/iki-0001.txt +++ b/documents/standards/fll/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 +Q -w -rrr URI URI URL URL URN URN -WW character "'" "'" code '"' '"' +# +# To read the "IKI Specification: 0001 - Basic" section of this file, use this command sequence: +# fss_basic_list_read iki-0001.txt +Q -cn "IKI Specification: 0001 - Basic" | iki_read +Q -w -rrr URI URI URL URL URN URN -WW character "'" "'" code '"' '"' +# 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 URL:"Uniform Resource Locator"s. Vocabulary\: - - address: Any mailing address, except for e-mail and URI. + - address: Any mailing address, except for e-mail and URI:"Uniform Resource Identifier". - code: All text contained within represent code and should be presented as such. - email: Any valid e-mail address. - phone: Any valid phone number. - quote: All text within represents some quote. - - uri: Any valid URI (allows URL and URN). - - url: Any valid URL. - - urn: Any valid URN. + - uri: Any valid URI:"Uniform Resource Identifier" (allows URL:"Uniform Resource Locator" and URN:"Uniform Resource Name"). + - url: Any valid URL:"Uniform Resource Locator". + - urn: Any valid URN:"Uniform Resource Name". - var: All text contained within represents some sort of variable. - See the 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/documents/standards/fll/iki-0002.txt b/documents/standards/fll/iki-0002.txt index 81fd4b6..22a917d 100644 --- a/documents/standards/fll/iki-0002.txt +++ b/documents/standards/fll/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 +Q -w -WWW character "'" "'" code '"' '"' emphasis '"' '"' +# +# To read the "IKI Specification: 0002 - Simple Script" section of this file, use this command sequence: +# fss_basic_list_read iki-0002.txt +Q -cn "IKI Specification: 0002 - Simple Script" | iki_read +Q -w -WWW character "'" "'" code '"' '"' emphasis '"' '"' +# 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 italic:"context", italic:"define", and italic:"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". + - 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/documents/standards/fll/iki.txt b/documents/standards/fll/iki.txt index e2d5f61..1d57f7e 100644 --- a/documents/standards/fll/iki.txt +++ b/documents/standards/fll/iki.txt @@ -1,66 +1,72 @@ -# 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 +Q -w -WWW character "'" "'" code '"' '"' emphasis '"' '"' +# +# To read the "IKI Specifications" section of this file, use this command sequence: +# fss_basic_list_read iki.txt +Q -cn "IKI Specifications" | iki_read +Q -w -WWW character "'" "'" code '"' '"' emphasis '"' '"' +# 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 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 Object. - The variable value is considered the Content. + The variable name is considered the italic:"Object" and is also considered the vocabulary. + The variable value is considered the italic:"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. - White space 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 character:"_", character:"-", character:"+") characters. + White space and non-word (and non character:"_", character:"-", character:"+") character punctuations may not exist as part of the variable name. + The only Unicode dash-like characters allowed as a "dash" are those intended to connect, such as the Unicode hyphens (unicode:"U+2010" and unicode:"U+2011"). - Any potential IKI data must 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). Potential IKI data refers to any valid IKI sequence without considering the closing single quote "'" or closing double quote """. + Any potential IKI data must be escaped to make it treated as non-IKI data by prepending a backslash character:"\\" before the colon character:":" that is before the opening quote (single, double, or backtic). Potential IKI data refers to any valid IKI sequence without considering the closing single quote character:"'" (unicode:"U+0027"), closing double quote character:'"' (unicode:"U+0022"), or closing backtick character:'`' (unicode:"U+0060"). - 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 character:"_", except when they connect outside the current line (such as unicode:"U+FE33" character:"︳"). + Unicode invisible punctuations (such as invisible plus: unicode:"U+2064") are not considered a punctuations in this standard (because they a zero-width characters), therefore they are not to be considered a valid character:"_", character:"-", or character:"+" Unicode equivalents. Key\: - "\o" = any printable word character, including "_", "-", "+" (and Unicode equivalents). - "\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. - "\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 "\". - "*" = zero or more occurrences. - "~" = one or more occurrences, or zero if at start of file. + code:"\o" = any printable word character, including character:"_", character:"-", character:"+" (and Unicode equivalents). + code:"\c" = any character, including white space and non-printing, and any delimited quote (used as the opening quote) or a any quote (undelimited) not used as the opening quote. + code:"\q" = either a single quote character:"'" (unicode:"U+0027"), a double quote character:'"' (unicode:"U+0022"), or a backtick character:'`' (unicode:"U+0060"). + code:"\x" = any character. + code:"\W" = any non-word character, discluding character:"_", character:"-", character:"+" (and Unicode equivalents). + code:"\e" = an optional escape sequence of any number of backslashes, such as character:"\\". + code:"*" = zero or more occurrences. + code:"~" = one or more occurrences, or zero 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\: - code:'# 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". + 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.\";". + 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\: + Objects (also called vocabulary or variable name) would be\: 1) emphasis 2) url 3) code - 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."; diff --git a/documents/standards/fll/time.txt b/documents/standards/fll/time.txt new file mode 100644 index 0000000..4af3cf9 --- /dev/null +++ b/documents/standards/fll/time.txt @@ -0,0 +1,155 @@ +# fss-0002 iki-0000 +# +# license: open-standard-license-1.0 +# +# This file (assumed to be named time.txt) can be more easily read using the following iki_read commands: +# iki_read time.txt +Q -r UTC UTC -w -WW character "'" "'" code '"' '"' +# +# To read the "Time Specification" section of this file, use this command sequence: +# fss_basic_list_read time.txt +Q -cn "Time Specification" | iki_read +Q -r UTC UTC -w -WW character "'" "'" code '"' '"' +# + +Time Specification: + There are two units of bold:"Time", the first is simply called bold:"Time" and the second is called bold:"EpochTime". + + Both bold:"Time" and bold:"EpochTime" are measured without the year but may contain a year to designate the point in the counting begins. + These are both represented by a single 64-bit (unsigned) integer. + The default timezone is always UTC:"Coordinated Universal Time". + + The common form is intended as the non-technical form that is form common use. + This may have a negative value or be more than 64-bit digits long. + This is simply not expected to be interpreted as a unit of time on a computer (but nothing stops it from being interpreted). + + The technical forms are limit to 64-bit unsigned for technical use but should technology advance to a point where larger bits are needed then this allows for that. + The systems should expect 64-bit and larger bits would have to become common before something larger than 64-bit is the expected or assumed default. + Negative signs can be allowed but they must not prevent the full use of the 64-bit. + The implementation of how this is done is left to the implementer except that the signs are immediately to the left of the digit. + For example code:"2022:-5" would be 5 units after the start of the year 2022. + Because the negative is allowed, so must the positive character (such as code:"2022:+5"). + A positive value is the default interpretation when no sign is valid. + + The unit of time called bold:"Time" is counted increments of a nanosecond, or 10^-9 seconds. + A unit of bold:"Time" is, therefore, equivalent to a nanosecond. + The default year for bold:"Time" is the current year. + + The unit of time called bold:"EpochTime" is counted increments of a second, or 10^-9 seconds. + A unit of bold:"EpochTime" is, therefore, equivalent to a second. + The default year for bold:"EpochTime" is the bold:"UNIX Epoch", sometimes called bold:"Unix time". + + The unit bold:"Time" has two technical forms and one common form, with the year and without the year. + + Key\: + code:"\s" = White space. + code:"\d" = The digits used to represent time (a digit). + code:"*" = Zero or more occurrences. + code:"+" = One or more occurrences. + code:":" = A single colon character:":" (unicode:"U+003A"). + code:'"' = A single double-quote character:'"' (unicode:"U+003A"). + + The common form of bold:"Time"\: + + Before Structure\: + code:"". + + Structure\: + code:"\s*\d+\s*\U*\s*". + + After Structure\: + code:"". + + Example\: + code:"86400". + code:"86400 T". + code:"86400 Time". + + The first technical form of bold:"Time"\: + + Before Structure\: + code:"". + + Structure\: + code:"\s*\d+:\d+\s*\U*\s*". + + After Structure\: + code:"". + + Example\: + code:"2022:86400". + code:"2022:86400 T". + code:"2022:86400 Time". + code:"2022:86400 MT". + code:"2022:86400 MegaTime". + + The second technical form of bold:"Time"\: + + Before Structure\: + code:"". + + Structure\: + code:"\s*:\d+\s*\U*\s*". + + After Structure\: + code:"". + + Example\: + code:":86400". + code:":86400 T". + code:":86400 Time". + code:":86400 MT". + code:":86400 MegaTime". + + The unit bold:"EpochTime" has two technical forms and one common form, with the year and without the year. + + The common form of bold:"Time"\: + + Before Structure\: + code:"". + + Structure\: + code:"\s*\d+\s*\U*\s*". + + After Structure\: + code:"". + + Example\: + code:"86400". + code:"86400 ET". + code:"86400 EpochTime". + code:"86400 MET". + code:"86400 MegaEpochTime". + + The first technical form of bold:"EpochTime"\: + + Before Structure\: + code:"". + + Structure\: + code:"\s*\d+::\d+\s*\U*\s*". + + After Structure\: + code:"". + + Example\: + code:"2022::86400". + code:"2022::86400 ET". + code:"2022::86400 EpochTime". + code:"2022::86400 MET". + code:"2022::86400 MegaEpochTime". + + The second technical form of bold:"Time"\: + + Before Structure\: + code:"". + + Structure\: + code:"\s*:\d+\s*\U*\s*". + + After Structure\: + code:"". + + Example\: + code:"::86400". + code:"::86400 ET". + code:"::86400 EpochTime". + code:"::86400 MET". + code:"::86400 MegaEpochTime".