tengri/edn
2025-03-04 00:49:49 +02:00
..
proptest-regressions tabula rasa 2025-03-02 14:31:04 +02:00
src tabula rasa 2025-03-02 14:31:04 +02:00
Cargo.lock tabula rasa 2025-03-02 14:31:04 +02:00
Cargo.toml remove clojure_reader 2025-03-04 00:49:49 +02:00
README.md tabula rasa 2025-03-02 14:31:04 +02:00
test.edn tabula rasa 2025-03-02 14:31:04 +02:00

ket

ket is the configuration language of tek. it's based on edn but without all the features.

usage

with tek_output

this is a tek_output view layout defined using ket:

(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:

(@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.

0
123456

keys

keys are the names of available operations. they look like this:

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:

:symbol-name

symbols that start with @ represent keybindings. they are parsed in tek_tui and look like this:

@ctrl-alt-shift-space

parenthesized groups

parenthesized groups represent things like expressions or configuration statements, and look like this:

(some-key :symbol (some/other-key @another-symbol 123) 456)

goals

  • const parse
  • live reload
  • serialize modified code back to original indentation