Extend readme

This commit is contained in:
Talia 2025-03-12 10:54:54 +01:00
parent 4ffe1f0ad9
commit 7f4ad62c10

View file

@ -1,6 +1,10 @@
# OATS
**O**utput **A**gnostic **T**agging **S**ystem aka. OATS implemented in Lua.
**O**utput **A**gnostic **T**agging **S**ystem aka. OATS reference
implementation in Lua.
This repository serves both as a description of the OATS language and the Lua
implementation.
## Format
@ -49,10 +53,46 @@ evaluates to the same as
Plain text with some [bold tagged] text [emphasis in between]
```
**Note**: Consumers may have a better understanding of whether and how to join text
(NOT YET IMPLEMENTED)
Any special or non-special character inside a line can be escaped with a single
backslash, including the backslash itself. A backslash at the end of a line will
be ignored. This works both in text nodes and inside tag names.
A backslash character followed by a space will be replaced by an ASCII newline
character.
### Out of scope
Several features are intentionally left to the consuming application, with OATS
only providing suggestions to avoid bikeshedding.
#### String joining
Consumers may have a better understanding of whether and how to join text
elements together, while the interpreter would have to decide on a joining
strategy (most likely concatenation with a space character in between).
#### Comments
Comments could be implemented either as a node type or a string prefix or both.
The preferred node names for comments are `comment`, while the preferred text
node prefix is a double dash `--`.
#### Namespacing
The recommended namespace separator in namespaces is the single colon `:` with
nesting going from left (outermost namespace) to right (node name).
Specific namespacing semantics have proven to be a cause of both bikeshedding
and reasonable disagreements in other languages like XML.
#### Encoding
OATS is designed and described in terms of ASCII characters, but in a technical
sense, only reserves a small number of 8-bit characters for control purposes.
### Data Type
OATS makes no attempts to interpret text.
@ -70,8 +110,4 @@ generally ignore case.
Tag names should use lowercase kebab-case.
Applications that interpret parts of a tag name as a namespace should use a
single colon `:` as the namespace separator, with namespaces preceding the tag
name.
## Interface