mirror of
https://github.com/TxtDot/dalet.git
synced 2024-11-23 13:26:22 +03:00
doc: update daletpack specification
This commit is contained in:
parent
413c9e36ad
commit
b5ed682990
2 changed files with 149 additions and 134 deletions
|
@ -12,14 +12,49 @@ Mime type: `application/dalet-pack`
|
|||
|
||||
## Types
|
||||
|
||||
- **Integer**
|
||||
- **String** (3)
|
||||
- **Tag array**
|
||||
- **Tags** (4)
|
||||
- **Tag (id)**
|
||||
- **Tag (id, body)**
|
||||
- **Tag (id, argument)**
|
||||
- **Tag (id, body, argument)**
|
||||
Notation: `type_name (...data) [hex_id]`
|
||||
|
||||
- Tags with body
|
||||
- Tag (id, text) [**a0**]
|
||||
- Tag (id, tag) [**a1**]
|
||||
- Tag (id, tags) [**a2**]
|
||||
- Tags with argument
|
||||
- Tag (id, text) [**b0**]
|
||||
- Tag (id, number) [**b1**]
|
||||
- Complex tags
|
||||
- Tag (id, text, text) [**c0**]
|
||||
- Tag (id, tag, text) [**c1**]
|
||||
- Tag (id, tags, text) [**c2**]
|
||||
- Tag (id, text, number) [**c3**]
|
||||
- Tag (id, tag, number) [**c4**]
|
||||
- Tag (id, tags, number) [**c5**]
|
||||
- Custom tags (most used, for better compression, backward compatible)
|
||||
- El (text) [**d1**]
|
||||
- El (tag) [**d2**]
|
||||
- El (tags) [**d3**]
|
||||
- P (text) [**d4**]
|
||||
- P (tag) [**d5**]
|
||||
- P (tags) [**d6**]
|
||||
|
||||
- Br [**d7**]
|
||||
- Hr [**d8**]
|
||||
|
||||
- Img (text) [**d9**]
|
||||
- Table (tags) [**da**]
|
||||
- Tprow (tags) [**db**]
|
||||
- Trow (tags) [**dc**]
|
||||
|
||||
- B (text) [**dd**]
|
||||
- I (text) [**de**]
|
||||
|
||||
- A (number) [**df**]
|
||||
- A (text) [**e0**]
|
||||
|
||||
- S (text) [**e1**]
|
||||
- Sup (text) [**e2**]
|
||||
- Sub (text) [**e3**]
|
||||
|
||||
- Meta (text, text) [**e4**]
|
||||
|
||||
## Limitations
|
||||
|
||||
|
@ -28,90 +63,59 @@ Mime type: `application/dalet-pack`
|
|||
- text must be encoded in UTF-8
|
||||
- maximum number of elements of a tag array object is (2^32)
|
||||
|
||||
## Formats
|
||||
## Binary representation
|
||||
|
||||
### Overview
|
||||
### Special symbols
|
||||
|
||||
| name | id |
|
||||
| ------------------------ | --- |
|
||||
| text end | 0 |
|
||||
| text | 1 |
|
||||
| number | 2 |
|
||||
| tags | 3 |
|
||||
| tags end | 4 |
|
||||
| tag (id) | 5 |
|
||||
| tag (id, body) | 6 |
|
||||
| tag (id, argument) | 7 |
|
||||
| tag (id, body, argument) | 8 |
|
||||
| name | hex_id |
|
||||
| ------------------------ | ------- |
|
||||
| text end | 00 |
|
||||
| tags end | 01 |
|
||||
|
||||
### Notation in diagrams
|
||||
### Format
|
||||
|
||||
#### Notation
|
||||
|
||||
Byte - `+----+`
|
||||
Variable length of bytes - `+====+`
|
||||
Variable number of data objects - `+~~~~+`
|
||||
|
||||
#### Overview
|
||||
|
||||
|
||||
##### Tag data
|
||||
|
||||
Look into types.
|
||||
`type_name (...data) [hex_id]`
|
||||
|
||||
becomes
|
||||
|
||||
```txt
|
||||
byte:
|
||||
+--------+
|
||||
| |
|
||||
+--------+
|
||||
|
||||
a variable number of bytes:
|
||||
+========+
|
||||
| |
|
||||
+========+
|
||||
|
||||
variable number of objects stored in DaletPack format:
|
||||
+~~~~~~~~~~~~~~~~~+
|
||||
| |
|
||||
+~~~~~~~~~~~~~~~~~+
|
||||
|
||||
X - unknown bit
|
||||
+--------+~~~~~~~~~+
|
||||
| hex_id | ...data |
|
||||
+--------+~~~~~~~~~+
|
||||
```
|
||||
|
||||
### Text format
|
||||
##### Number data
|
||||
|
||||
```txt
|
||||
+--------+=========+--------+
|
||||
| 1 | utf-8 | 0 |
|
||||
+--------+=========+--------+
|
||||
+---------------+
|
||||
| 8-bit integer |
|
||||
+---------------+
|
||||
```
|
||||
|
||||
### Number format
|
||||
##### Text data
|
||||
|
||||
```txt
|
||||
+--------+----------+
|
||||
| 1 | XXXXXXXX |
|
||||
+--------+----------+
|
||||
+=============+----+
|
||||
| utf-8 bytes | 00 |
|
||||
+=============+----+
|
||||
```
|
||||
|
||||
### Tags format
|
||||
##### Tags data
|
||||
|
||||
```txt
|
||||
+--------+~~~~~~~~~~~~+------+
|
||||
| 3 | elements | 4 |
|
||||
+--------+~~~~~~~~~~~~+------+
|
||||
```
|
||||
|
||||
### Tag format
|
||||
|
||||
```txt
|
||||
|
||||
id = XXXXX (5 bits) (can change before release)
|
||||
|
||||
tag (id):
|
||||
+--------+----+
|
||||
| 5 | id |
|
||||
+--------+----+
|
||||
|
||||
tag (id, body):
|
||||
+--------+----+~~~~~~~~+
|
||||
| 6 | id | body |
|
||||
+--------+----+~~~~~~~~+
|
||||
|
||||
tag (id, argument):
|
||||
+--------+----+~~~~~~~~~~~~+
|
||||
| 7 | id | argument |
|
||||
+--------+----+~~~~~~~~~~~~+
|
||||
|
||||
tag (id, body, argument):
|
||||
+--------+----+~~~~~~~~+~~~~~~~~~~~~+
|
||||
| 8 | id | body | argument |
|
||||
+--------+----+~~~~~~~~+~~~~~~~~~~~~+
|
||||
+~~~~~~+----+
|
||||
| tags | 01 |
|
||||
+~~~~~~+----+
|
||||
```
|
||||
|
|
|
@ -13,12 +13,12 @@ Most primitive tag. Also used if no tag is specified.
|
|||
|
||||
**Daleth example**:
|
||||
|
||||
```yaml
|
||||
```daleth
|
||||
el: I am Element
|
||||
el [
|
||||
h1: I am first level heading
|
||||
]
|
||||
Element also used if no tag is specified.
|
||||
- Element also used with `- text` syntax.
|
||||
```
|
||||
|
||||
## 1. Heading
|
||||
|
@ -34,7 +34,7 @@ Heading is used for text formatting.
|
|||
|
||||
**Daleth example**:
|
||||
|
||||
```yaml
|
||||
```daleth
|
||||
h1: Dalet
|
||||
h2: Daleth
|
||||
h3: High level
|
||||
|
@ -55,7 +55,7 @@ Paragraph is used for text formatting.
|
|||
|
||||
**Daleth example**:
|
||||
|
||||
```yaml
|
||||
```daleth
|
||||
p: This is a paragraph
|
||||
{- Paragraph also used with this custom syntax }
|
||||
```
|
||||
|
@ -73,7 +73,7 @@ Line break is used to insert a line break into the text.
|
|||
|
||||
**Daleth example**:
|
||||
|
||||
```yaml
|
||||
```daleth
|
||||
br
|
||||
```
|
||||
|
||||
|
@ -90,10 +90,10 @@ Unordered list is used to create a list.
|
|||
|
||||
**Daleth example**:
|
||||
|
||||
```txt
|
||||
```daleth
|
||||
ul [
|
||||
Item 1
|
||||
Item 2
|
||||
- Item 1
|
||||
- Item 2
|
||||
]
|
||||
```
|
||||
|
||||
|
@ -110,11 +110,11 @@ Ordered list is used to create a list with increasing numbers.
|
|||
|
||||
**Daleth example**:
|
||||
|
||||
```txt
|
||||
```daleth
|
||||
ol [
|
||||
Item
|
||||
Item
|
||||
Item
|
||||
- Item
|
||||
- Item
|
||||
- Item
|
||||
]
|
||||
```
|
||||
|
||||
|
@ -130,15 +130,15 @@ ol [
|
|||
Splits the text into rows. The alignment argument specifies how the items inside the row are aligned horizontally. By default it is aligned to the start.
|
||||
**Daleth example**:
|
||||
|
||||
```txt
|
||||
```daleth
|
||||
row [
|
||||
Left
|
||||
Right
|
||||
- Left
|
||||
- Right
|
||||
]
|
||||
|
||||
row "start" [
|
||||
Left
|
||||
Right
|
||||
- Left
|
||||
- Right
|
||||
]
|
||||
```
|
||||
|
||||
|
@ -155,7 +155,7 @@ Link to other sites. On click the link opens in new tab.
|
|||
|
||||
**Daleth example**:
|
||||
|
||||
```yaml
|
||||
```daleth
|
||||
link "https://example.com": I am Link
|
||||
```
|
||||
|
||||
|
@ -172,7 +172,7 @@ Link to the same site. On click the link opens in current tab.
|
|||
|
||||
**Daleth example**:
|
||||
|
||||
```yaml
|
||||
```daleth
|
||||
navlink "/specification": I am Navlink
|
||||
```
|
||||
|
||||
|
@ -189,7 +189,7 @@ Same as link, but with button style.
|
|||
|
||||
**Daleth example**:
|
||||
|
||||
```yaml
|
||||
```daleth
|
||||
btn "https://example.com": I am Button
|
||||
```
|
||||
|
||||
|
@ -206,7 +206,7 @@ Same as navlink, but with button style.
|
|||
|
||||
**Daleth example**:
|
||||
|
||||
```yaml
|
||||
```daleth
|
||||
navbtn "https://example.com": I am NavButton
|
||||
```
|
||||
|
||||
|
@ -223,28 +223,39 @@ Displays an image.
|
|||
|
||||
**Daleth example**:
|
||||
|
||||
```yaml
|
||||
```daleth
|
||||
img "/dalet.png"
|
||||
```
|
||||
|
||||
## 12. Table
|
||||
|
||||
| Property | Description |
|
||||
| -------- | --------------------------------- |
|
||||
| -------- | ----------- |
|
||||
| name | table |
|
||||
| id | 12 |
|
||||
| body | (trow or tprow)[] or table-string |
|
||||
| body | tags |
|
||||
| argument | no |
|
||||
|
||||
Creates a table.
|
||||
|
||||
**Daleth example**:
|
||||
|
||||
```txt
|
||||
table {
|
||||
| Name | Age |
|
||||
| Elon | 53 |
|
||||
```daleth
|
||||
{> table
|
||||
[ Name | Age ]
|
||||
[ Elon | 53 ]
|
||||
}
|
||||
|
||||
table [
|
||||
tprow [
|
||||
- Name
|
||||
- Age
|
||||
]
|
||||
trow [
|
||||
- Elon
|
||||
- 53
|
||||
]
|
||||
]
|
||||
```
|
||||
|
||||
## 13. Table Row
|
||||
|
@ -260,10 +271,10 @@ Creates a table row.
|
|||
|
||||
**Daleth example**:
|
||||
|
||||
```txt
|
||||
```daleth
|
||||
trow [
|
||||
Name
|
||||
Age
|
||||
- Name
|
||||
- Age
|
||||
]
|
||||
```
|
||||
|
||||
|
@ -280,10 +291,10 @@ Like table row, but with primary background.
|
|||
|
||||
**Daleth example**:
|
||||
|
||||
```txt
|
||||
```daleth
|
||||
tprow [
|
||||
Name
|
||||
Age
|
||||
- Name
|
||||
- Age
|
||||
]
|
||||
```
|
||||
|
||||
|
@ -300,7 +311,7 @@ Creates a horizontal rule.
|
|||
|
||||
**Daleth example**:
|
||||
|
||||
```yaml
|
||||
```daleth
|
||||
hr
|
||||
```
|
||||
|
||||
|
@ -317,7 +328,7 @@ Creates **bold** text.
|
|||
|
||||
**Daleth example**:
|
||||
|
||||
```yaml
|
||||
```daleth
|
||||
b: I am Bold
|
||||
```
|
||||
|
||||
|
@ -334,7 +345,7 @@ Creates _italic_ text.
|
|||
|
||||
**Daleth example**:
|
||||
|
||||
```yaml
|
||||
```daleth
|
||||
i: I am Italic
|
||||
```
|
||||
|
||||
|
@ -351,7 +362,7 @@ Creates a blockquote.
|
|||
|
||||
**Daleth example**:
|
||||
|
||||
```yaml
|
||||
```daleth
|
||||
bq: I am Blockquote
|
||||
```
|
||||
|
||||
|
@ -368,7 +379,7 @@ Link to footnote.
|
|||
|
||||
**Daleth example**:
|
||||
|
||||
```yaml
|
||||
```daleth
|
||||
footlnk 1
|
||||
```
|
||||
|
||||
|
@ -379,13 +390,13 @@ footlnk 1
|
|||
| name | footn |
|
||||
| id | 20 |
|
||||
| body | text |
|
||||
| argument | text , number |
|
||||
| argument | text, number |
|
||||
|
||||
Creates footnote.
|
||||
|
||||
**Daleth example**:
|
||||
|
||||
```yaml
|
||||
```daleth
|
||||
footn 1: I am Footnote
|
||||
```
|
||||
|
||||
|
@ -402,7 +413,7 @@ Creates anchor. Like `<a href="#argument"></a>` in HTML.
|
|||
|
||||
**Daleth example**:
|
||||
|
||||
```yaml
|
||||
```daleth
|
||||
a0
|
||||
```
|
||||
|
||||
|
@ -419,7 +430,7 @@ Creates ~~strikethrough~~ text.
|
|||
|
||||
**Daleth example**:
|
||||
|
||||
```yaml
|
||||
```daleth
|
||||
s: I am Strikethrough
|
||||
```
|
||||
|
||||
|
@ -436,7 +447,7 @@ Creates ^superscript^ text.
|
|||
|
||||
**Daleth example**:
|
||||
|
||||
```yaml
|
||||
```daleth
|
||||
sup: I am Superscript
|
||||
```
|
||||
|
||||
|
@ -453,7 +464,7 @@ Creates ~subscript~ text.
|
|||
|
||||
**Daleth example**:
|
||||
|
||||
```yaml
|
||||
```daleth
|
||||
sub: I am Subscript
|
||||
```
|
||||
|
||||
|
@ -470,7 +481,7 @@ Creates disclosure element.
|
|||
|
||||
**Daleth example**:
|
||||
|
||||
```yaml
|
||||
```daleth
|
||||
disc "Click to expand": I am Disclosure
|
||||
```
|
||||
|
||||
|
@ -487,7 +498,7 @@ Creates block element. Can be used for horizontal aligning. By default aligned t
|
|||
|
||||
**Daleth example**:
|
||||
|
||||
```yaml
|
||||
```daleth
|
||||
block: I am Block
|
||||
```
|
||||
|
||||
|
@ -509,10 +520,10 @@ Creates carousel.
|
|||
|
||||
**Daleth example**:
|
||||
|
||||
```txt
|
||||
```daleth
|
||||
carousel [
|
||||
Example 1
|
||||
Example 2
|
||||
- Example 1
|
||||
- Example 2
|
||||
]
|
||||
```
|
||||
|
||||
|
@ -529,7 +540,7 @@ Creates code block.
|
|||
|
||||
**Daleth example**:
|
||||
|
||||
```txt
|
||||
```daleth
|
||||
code "js": let code = "js"
|
||||
```
|
||||
|
||||
|
@ -546,7 +557,7 @@ Creates pre formatted text block. Like code but without style and highlight.
|
|||
|
||||
**Daleth example**:
|
||||
|
||||
```yaml
|
||||
```daleth
|
||||
pre: I am pre
|
||||
```
|
||||
|
||||
|
@ -563,6 +574,6 @@ Not displayed. Specifies metadata such as title, description. Must be before all
|
|||
|
||||
**Daleth example**:
|
||||
|
||||
```yaml
|
||||
```daleth
|
||||
meta "description": I am description
|
||||
```
|
||||
|
|
Loading…
Add table
Reference in a new issue