diff --git a/specification/daletpack.md b/specification/daletpack.md index 1f17a52..6321b59 100644 --- a/specification/daletpack.md +++ b/specification/daletpack.md @@ -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 | ++~~~~~~+----+ ``` diff --git a/specification/tags.md b/specification/tags.md index c54ee0d..92a8655 100644 --- a/specification/tags.md +++ b/specification/tags.md @@ -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 | -| argument | no | +| Property | Description | +| -------- | ----------- | +| name | table | +| id | 12 | +| 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 `` 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 ```