mirror of
https://codeberg.org/unspeaker/tengri.git
synced 2025-12-06 19:56:44 +01:00
tabula rasa
This commit is contained in:
commit
47b3413d7d
76 changed files with 7000 additions and 0 deletions
94
edn/README.md
Normal file
94
edn/README.md
Normal file
|
|
@ -0,0 +1,94 @@
|
|||
# `ket`
|
||||
|
||||
**ket** is the configuration language of **tek**.
|
||||
it's based on [edn](https://en.wikipedia.org/wiki/Clojure#Extensible_Data_Notation)
|
||||
but without all the features.
|
||||
|
||||
## usage
|
||||
|
||||
### with `tek_output`
|
||||
|
||||
this is a `tek_output` view layout defined using ket:
|
||||
|
||||
```edn
|
||||
(bsp/s (fixed/y 2 :toolbar)
|
||||
(fill/x (align/c (bsp/w :pool
|
||||
(bsp/s :outputs (bsp/s :inputs (bsp/s :tracks :scenes)))))))
|
||||
```
|
||||
|
||||
### with `tek_input`
|
||||
|
||||
this is a `tek_input` keymap defined using ket:
|
||||
|
||||
```edn
|
||||
(@u undo 1)
|
||||
(@shift-u redo 1)
|
||||
(@e editor show :pool-clip)
|
||||
(@ctrl-a scene add)
|
||||
(@ctrl-t track add)
|
||||
(@tab pool toggle)
|
||||
```
|
||||
|
||||
## tokens
|
||||
|
||||
ket has 4 "types", represented by variants of the `Value` enum:
|
||||
|
||||
* `Num` - numeric literal
|
||||
* `Sym` - textual symbol
|
||||
* `Key` - textual key
|
||||
* `Exp` - parenthesized group of tokens
|
||||
|
||||
### numeric literal
|
||||
|
||||
numbers are passed through as is. only non-negative integers are supported.
|
||||
|
||||
```edn
|
||||
0
|
||||
123456
|
||||
```
|
||||
|
||||
### keys
|
||||
|
||||
keys are the names of available operations. they look like this:
|
||||
|
||||
```edn
|
||||
simple-key
|
||||
multi-part/key
|
||||
```
|
||||
|
||||
keys are implemented by the underlying subsystem:
|
||||
|
||||
* in `tek_output`, keys are names of layout primitives
|
||||
* in `tek_input`, keys are names of commands
|
||||
|
||||
### symbols
|
||||
|
||||
symbols that start with `:` represent the names of variables
|
||||
provided by the `Context` trait - such as command parameters,
|
||||
or entire layout components:
|
||||
|
||||
```edn
|
||||
:symbol-name
|
||||
```
|
||||
|
||||
symbols that start with `@` represent keybindings.
|
||||
they are parsed in `tek_tui` and look like this:
|
||||
|
||||
```edn
|
||||
@ctrl-alt-shift-space
|
||||
```
|
||||
|
||||
### parenthesized groups
|
||||
|
||||
parenthesized groups represent things like expressions
|
||||
or configuration statements, and look like this:
|
||||
|
||||
```edn
|
||||
(some-key :symbol (some/other-key @another-symbol 123) 456)
|
||||
```
|
||||
|
||||
## goals
|
||||
|
||||
* [ ] const parse
|
||||
* [ ] live reload
|
||||
* [ ] serialize modified code back to original indentation
|
||||
Loading…
Add table
Add a link
Reference in a new issue