dalet/README.md

163 lines
3.5 KiB
Markdown
Raw Normal View History

2024-07-22 19:43:20 +03:00
<div align="center">
2024-07-23 19:00:02 +03:00
![Dalet](https://github.com/TxtDot/.github/blob/main/imgs/dalet.png?raw=true)
2024-07-22 19:43:20 +03:00
# Dalet
2024-07-22 19:43:20 +03:00
</div>
Markup language ecosystem сombining small file size, big number of possibilities for describing the interface and readability.
2024-07-22 20:58:07 +03:00
2024-08-09 19:41:43 +03:00
[Specification](./specification/main.md)
2024-08-02 19:49:33 +03:00
[Rust implementation](https://github.com/TxtDot/dalet-rs)
2024-07-22 20:58:07 +03:00
2024-07-23 12:45:41 +03:00
> [!WARNING]
2024-08-09 19:41:43 +03:00
> Specification and rust implementation is not complete and very unstable.
2024-07-23 12:45:41 +03:00
2024-07-22 20:58:07 +03:00
## Concept
2024-07-23 19:00:02 +03:00
This is Daleth (high level language that compiles to Daletl).
2024-08-14 10:11:37 +03:00
```daleth
# multilines
#
2024-08-09 19:40:31 +03:00
# {text} - input is trimmed with indent
#
2024-08-09 19:40:31 +03:00
# {~n text} - n is number of minimum spaces to add after trimming with indent
# for each line
#
2024-08-09 19:40:31 +03:00
# {#text} - input not modified
#
#
2024-08-07 15:54:57 +03:00
# tag syntax
#
# tag: text body
2024-08-08 09:16:16 +03:00
# tag { multiline text body }
2024-07-23 17:39:24 +03:00
# body text always trimmed
2024-08-07 15:54:57 +03:00
#
2024-08-08 09:16:16 +03:00
# tag [ multiple tags body ]
2024-08-07 15:54:57 +03:00
#
# Arguments
2024-08-09 19:40:31 +03:00
# tag argument
2024-08-07 15:54:57 +03:00
#
# Tags without body and argument also supported
2024-08-09 19:40:31 +03:00
#
#
# custom no tag syntax
#
# {-text} - paragraph, text indent is trimmed
# [[tags]] - element tag with body of multiple tags
# text - element tag with text body
2024-08-07 15:54:57 +03:00
2024-08-09 19:40:31 +03:00
meta "title": Daleth syntax concept
meta "description": This document describes Daleth syntax and some tags
2024-08-07 15:54:57 +03:00
2024-08-09 19:40:31 +03:00
h1: TxtDot revolution
2024-07-22 20:58:07 +03:00
p: TxtDot is a cool project
2024-08-14 10:11:37 +03:00
# If no tag is specified, but "- text" present, then the 'el' tag is placed
2024-08-09 19:40:31 +03:00
2024-08-14 10:11:37 +03:00
- This is element
br
2024-08-09 19:40:31 +03:00
# if no tag is specified but a '{- text}' is present, then the 'p' tag is placed
2024-08-11 16:33:53 +03:00
# '\n' is replaced with ' ' in this format.
2024-08-09 19:40:31 +03:00
{-
2024-08-11 16:33:53 +03:00
Check Dalet too
This is one paragraph
2024-08-08 09:16:16 +03:00
}
2024-08-11 16:33:53 +03:00
{-
This is another paragraph ({- text\})
}
2024-08-09 19:40:31 +03:00
row "center" [
2024-08-11 16:33:53 +03:00
link "https://github.com/txtdot/txtdot": Homepage
btn "https://example.com/donate" [
# tag without body
img "https://example.com/donate.png"
2024-08-14 10:11:37 +03:00
- Donate
2024-08-11 16:33:53 +03:00
]
2024-08-08 09:16:16 +03:00
]
2024-08-08 09:16:16 +03:00
# [] for multiple tags
row [
2024-08-11 16:33:53 +03:00
# if no tag is specified but a '[[]]' is present, then the 'el' tag
# with multiple tags body placed
2024-08-14 10:11:37 +03:00
2024-08-09 19:40:31 +03:00
[[
2024-08-11 16:33:53 +03:00
h2: Features
ul [
2024-08-14 10:11:37 +03:00
- Server-side page simplification
- Media proxy
- Image compression with Sharp
- Rendering client-side apps `Vanilla, React, Vue, etc` with webder
- Search with SearXNG
- Handy API endpoints
- No client JavaScript
- Some kind of Material Design 3
- Customization with plugins, see @txtdot/sdk and @txtdot/plugins
2024-08-11 16:33:53 +03:00
]
2024-08-09 19:40:31 +03:00
]]
2024-07-22 20:58:07 +03:00
2024-08-09 19:40:31 +03:00
[[
2024-08-11 16:33:53 +03:00
h2: Running
[[
h3: Dev
# {} for multiline strings, indent is automatically trimmed
code {
npm install
npm run dev
}
# {~n Text} n is number of minimum spaces
code "markdown" {~4
this is codeblock
}
2024-08-12 13:21:51 +03:00
# {# Text} Text after "{#" not modified
code "markdown" {# this is codeblock}
2024-08-11 16:33:53 +03:00
]]
[[
h3: Production
code {
npm install
npm run build
npm run start
}
]]
[[
h3: Docker
code: docker compose up -d
]]
2024-07-22 20:58:07 +03:00
2024-08-09 19:40:31 +03:00
]]
2024-08-08 09:16:16 +03:00
]
2024-07-23 17:39:24 +03:00
2024-08-12 20:21:51 +03:00
# Table has custom format
2024-08-07 15:54:57 +03:00
# +| cells | - primary column
# | cells | - secondary column
# | Element | Description | - converts to
2024-08-12 20:30:22 +03:00
# trow [
# Element
# Description
2024-08-08 09:16:16 +03:00
# ]
2024-08-12 20:21:51 +03:00
{> table
[[ Tag | Description ]]
[ h | Heading ]
[ p | Paragraph ]
[ img | Image ]
[ link | Link ]
[ btn | Button ]
[ ul | Unordered list ]
[ br | Line break ]
[[ quantity | 7 ]]
2024-08-08 09:16:16 +03:00
}
2024-07-22 20:58:07 +03:00
```