tek_ -> tengri_; reset to v0.1.0; add root reexporter package

This commit is contained in:
🪞👃🪞 2025-03-14 23:39:31 +02:00
parent 70984b4992
commit d30eda33d1
21 changed files with 101 additions and 75 deletions

View file

@ -1,6 +1,7 @@
[workspace] [workspace]
resolver = "2" resolver = "2"
members = [ members = [
"./tengri",
"./input", "./input",
"./output", "./output",
"./tui", "./tui",

View file

@ -1,3 +0,0 @@
# tengri
an interface metaframework. currently supports ratatui.

1
README.md Symbolic link
View file

@ -0,0 +1 @@
tengri/README.md

18
edn/Cargo.lock generated
View file

@ -764,28 +764,28 @@ dependencies = [
] ]
[[package]] [[package]]
name = "tek_edn" name = "tengri_edn"
version = "0.1.0" version = "0.1.0"
dependencies = [ dependencies = [
"clojure-reader", "clojure-reader",
"itertools 0.14.0", "itertools 0.14.0",
"konst", "konst",
"tek_tui", "tengri_tui",
] ]
[[package]] [[package]]
name = "tek_input" name = "tengri_input"
version = "0.2.0" version = "0.2.0"
[[package]] [[package]]
name = "tek_output" name = "tengri_output"
version = "0.2.0" version = "0.2.0"
dependencies = [ dependencies = [
"tek_edn", "tengri_edn",
] ]
[[package]] [[package]]
name = "tek_tui" name = "tengri_tui"
version = "0.2.0" version = "0.2.0"
dependencies = [ dependencies = [
"better-panic", "better-panic",
@ -793,9 +793,9 @@ dependencies = [
"palette", "palette",
"rand", "rand",
"ratatui", "ratatui",
"tek_edn", "tengri_edn",
"tek_input", "tengri_input",
"tek_output", "tengri_output",
] ]
[[package]] [[package]]

View file

@ -1,11 +1,11 @@
[package] [package]
name = "tek_edn" name = "tengri_dsl"
edition = "2021" edition = "2024"
version = "0.1.0" version = "0.1.0"
description = "UI metaframework, tiny S-expression-based DSL."
[dependencies] [dependencies]
#clojure-reader = "0.3.0" konst = { version = "0.3.16", features = [ "rust_1_83" ] }
konst = { version = "0.3.16", features = [ "rust_1_83" ] }
itertools = "0.14.0" itertools = "0.14.0"
thiserror = "2.0" thiserror = "2.0"
@ -13,5 +13,5 @@ thiserror = "2.0"
default = [] default = []
[dev-dependencies] [dev-dependencies]
tek_tui = { path = "../tui" } tengri_tui = { path = "../tui" }
proptest = "^1.6.0" proptest = "^1.6.0"

View file

@ -6,9 +6,9 @@ but without all the features.
## usage ## usage
### with `tek_output` ### with `tengri_output`
this is a `tek_output` view layout defined using ket: this is a `tengri_output` view layout defined using ket:
```edn ```edn
(bsp/s (fixed/y 2 :toolbar) (bsp/s (fixed/y 2 :toolbar)
@ -16,9 +16,9 @@ this is a `tek_output` view layout defined using ket:
(bsp/s :outputs (bsp/s :inputs (bsp/s :tracks :scenes))))))) (bsp/s :outputs (bsp/s :inputs (bsp/s :tracks :scenes)))))))
``` ```
### with `tek_input` ### with `tengri_input`
this is a `tek_input` keymap defined using ket: this is a `tengri_input` keymap defined using ket:
```edn ```edn
(@u undo 1) (@u undo 1)
@ -58,8 +58,8 @@ multi-part/key
keys are implemented by the underlying subsystem: keys are implemented by the underlying subsystem:
* in `tek_output`, keys are names of layout primitives * in `tengri_output`, keys are names of layout primitives
* in `tek_input`, keys are names of commands * in `tengri_input`, keys are names of commands
### symbols ### symbols
@ -72,7 +72,7 @@ or entire layout components:
``` ```
symbols that start with `@` represent keybindings. symbols that start with `@` represent keybindings.
they are parsed in `tek_tui` and look like this: they are parsed in `tengri_tui` and look like this:
```edn ```edn
@ctrl-alt-shift-space @ctrl-alt-shift-space

View file

@ -5,7 +5,7 @@
//! //!
//! ``` //! ```
//! let src = include_str!("../test.edn"); //! let src = include_str!("../test.edn");
//! let mut view = tek_edn::TokenIter::new(src); //! let mut view = tengri_edn::TokenIter::new(src);
//! assert_eq!(view.0.0, src); //! assert_eq!(view.0.0, src);
//! assert_eq!(view.peek(), view.0.peek()) //! assert_eq!(view.peek(), view.0.peek())
//! ``` //! ```

View file

@ -54,7 +54,7 @@ pub(crate) use std::fmt::Debug;
////] { ////] {
//////let items = Atom::read_all(example)?; //////let items = Atom::read_all(example)?;
//////panic!("{layout:?}"); //////panic!("{layout:?}");
//////let content = <dyn ViewContext<::tek_engine::tui::Tui>>::from(&layout); //////let content = <dyn ViewContext<::tengri_engine::tui::Tui>>::from(&layout);
////} ////}
//Ok(()) //Ok(())
//} //}

View file

@ -10,7 +10,7 @@
//! with slightly different parsing rules. //! with slightly different parsing rules.
//! * [Value::Num] is an unsigned integer literal. //! * [Value::Num] is an unsigned integer literal.
//!``` //!```
//! use tek_edn::{*, Value::*}; //! use tengri_edn::{*, Value::*};
//! let source = include_str!("../test.edn"); //! let source = include_str!("../test.edn");
//! let mut view = TokenIter::new(source); //! let mut view = TokenIter::new(source);
//! assert_eq!(view.peek(), Some(Token { //! assert_eq!(view.peek(), Some(Token {

2
input/Cargo.lock generated
View file

@ -3,5 +3,5 @@
version = 4 version = 4
[[package]] [[package]]
name = "tek_engine" name = "tengri_engine"
version = "0.2.0" version = "0.2.0"

View file

@ -1,10 +1,14 @@
[package] [package]
name = "tek_input" name = "tengri_input"
edition = "2021" edition = "2024"
version = "0.2.0" version = "0.1.0"
description = "UI metaframework, input layer."
[dependencies] [dependencies]
tek_edn = { path = "../edn" } tengri_edn = { optional = true, path = "../edn" }
[features]
edn = [ "tengri_edn" ]
[dev-dependencies] [dev-dependencies]
tek_tui = { path = "../tui" } tengri_tui = { path = "../tui" }

View file

@ -1,4 +1,4 @@
# `tek_engine` # `tengri_engine`
## rendering ## rendering

6
output/Cargo.lock generated
View file

@ -3,12 +3,12 @@
version = 4 version = 4
[[package]] [[package]]
name = "tek_engine" name = "tengri_engine"
version = "0.2.0" version = "0.2.0"
[[package]] [[package]]
name = "tek_layout" name = "tengri_layout"
version = "0.2.0" version = "0.2.0"
dependencies = [ dependencies = [
"tek_engine", "tengri_engine",
] ]

View file

@ -1,12 +1,16 @@
[package] [package]
name = "tek_output" name = "tengri_output"
edition = "2021" edition = "2024"
version = "0.2.0" version = "0.1.0"
description = "UI metaframework, output layer."
[dependencies] [dependencies]
tek_edn = { path = "../edn" } tengri_edn = { optional = true, path = "../edn" }
[features]
edn = [ "tengri_edn" ]
[dev-dependencies] [dev-dependencies]
tek_tui = { path = "../tui" } tengri_tui = { path = "../tui" }
proptest = "^1" proptest = "^1"
proptest-derive = "^0.5.1" proptest-derive = "^0.5.1"

View file

@ -15,6 +15,7 @@ mod op_align; pub use self::op_align::*;
mod op_bsp; pub use self::op_bsp::*; mod op_bsp; pub use self::op_bsp::*;
mod op_transform; pub use self::op_transform::*; mod op_transform; pub use self::op_transform::*;
mod view; pub use self::view::*; mod view; pub use self::view::*;
pub(crate) use std::marker::PhantomData; pub(crate) use std::marker::PhantomData;
pub(crate) use std::error::Error; pub(crate) use std::error::Error;
pub(crate) use ::tek_edn::*; pub(crate) use ::tek_edn::*;
@ -22,6 +23,7 @@ pub(crate) use ::tek_edn::*;
pub type Usually<T> = Result<T, Box<dyn Error>>; pub type Usually<T> = Result<T, Box<dyn Error>>;
/// Standard optional result type. /// Standard optional result type.
pub type Perhaps<T> = Result<Option<T>, Box<dyn Error>>; pub type Perhaps<T> = Result<Option<T>, Box<dyn Error>>;
#[cfg(test)] #[test] fn test_stub_output () -> Usually<()> { #[cfg(test)] #[test] fn test_stub_output () -> Usually<()> {
use crate::*; use crate::*;
struct TestOutput([u16;4]); struct TestOutput([u16;4]);
@ -46,10 +48,12 @@ pub type Perhaps<T> = Result<Option<T>, Box<dyn Error>>;
} }
Ok(()) Ok(())
} }
#[cfg(test)] #[test] fn test_dimensions () { #[cfg(test)] #[test] fn test_dimensions () {
use crate::*; use crate::*;
assert_eq!(Area::center(&[10u16, 10, 20, 20]), [20, 20]); assert_eq!(Area::center(&[10u16, 10, 20, 20]), [20, 20]);
} }
#[cfg(test)] #[test] fn test_layout () -> Usually<()> { #[cfg(test)] #[test] fn test_layout () -> Usually<()> {
Ok(()) Ok(())
} }

18
tengri/Cargo.toml Normal file
View file

@ -0,0 +1,18 @@
[package]
name = "tengri"
edition = "2024"
version = "0.1.0"
description = "UI metaframework."
[dependencies]
tengri_edn = { optional = true, path = "../edn" }
tengri_input = { optional = true, path = "../input" }
tengri_output = { optional = true, path = "../output" }
tengri_tui = { optional = true, path = "../tui" }
[features]
default = [ "input", "output", "tui" ]
input = [ "tengri_input" ]
output = [ "tengri_output" ]
tui = [ "tengri_tui" ]
edn = [ "tengri_edn", "tengri_input/edn", "tengri_output/edn", "tengri_tui/edn" ]

3
tengri/README.md Normal file
View file

@ -0,0 +1,3 @@
# tengri
an interface metaframework. currently supports ratatui.

4
tengri/src/lib.rs Normal file
View file

@ -0,0 +1,4 @@
#[cfg(feature="output")] pub use ::tengri_output as output;
#[cfg(feature="input")] pub use ::tengri_input as input;
#[cfg(feature="edn")] pub use ::tengri_edn as edn;
#[cfg(feature="tui")] pub use ::tengri_tui as tui;

View file

@ -1,19 +1,22 @@
[package] [package]
name = "tek_tui" name = "tengri_tui"
edition = "2021" edition = "2021"
version = "0.2.0" version = "0.1.0"
description = "UI metaframework, Ratatui backend."
[dependencies] [dependencies]
palette = { version = "0.7.6", features = [ "random" ] } palette = { version = "0.7.6", features = [ "random" ] }
rand = "0.8.5" rand = "0.8.5"
crossterm = "0.28.1" crossterm = "0.28.1"
ratatui = { version = "0.29.0", features = [ "unstable-widget-ref", "underline-color" ] } ratatui = { version = "0.29.0", features = [ "unstable-widget-ref", "underline-color" ] }
better-panic = "0.3.0" better-panic = "0.3.0"
konst = { version = "0.3.16", features = [ "rust_1_83" ] } konst = { version = "0.3.16", features = [ "rust_1_83" ] }
atomic_float = "1" atomic_float = "1"
quanta = "0.12.3" quanta = "0.12.3"
tek_edn = { path = "../edn" } tengri_input = { path = "../input" }
tek_input = { path = "../input" } tengri_output = { path = "../output" }
tek_output = { path = "../output" } tengri_edn = { optional = true, path = "../edn" }
#tek_time = { path = "../time" }
[features]
edn = [ "tengri_edn", "tengri_input/edn", "tengri_output/edn" ]

View file

@ -1,7 +1,7 @@
# `tek_tui` # `tengri_tui`
the `Tui` struct (the *engine*) implements the the `Tui` struct (the *engine*) implements the
`tek_input::Input` and `tek_output::Output` traits. `tengri_input::Input` and `tengri_output::Output` traits.
at launch, the `Tui` engine spawns two threads, at launch, the `Tui` engine spawns two threads,
a **render thread** and an **input thread**. (the a **render thread** and an **input thread**. (the

View file

@ -14,20 +14,7 @@ impl Demo<Tui> {
fn new () -> Self { fn new () -> Self {
Self { Self {
index: 0, index: 0,
items: vec![ items: vec![]
//Box::new(tek_sequencer::TransportPlayPauseButton {
//_engine: Default::default(),
//transport: None,
//value: Some(TransportState::Stopped),
//focused: true
//}),
//Box::new(tek_sequencer::TransportPlayPauseButton {
//_engine: Default::default(),
//transport: None,
//value: Some(TransportState::Rolling),
//focused: false
//}),
]
} }
} }
} }

View file

@ -1,5 +1,5 @@
use tek_tui::{*, tek_input::*, tek_output::*}; use tengri_tui::{*, tengri_input::*, tengri_output::*};
use tek_edn::*; use tengri_edn::*;
use std::sync::{Arc, RwLock}; use std::sync::{Arc, RwLock};
use crossterm::event::{*, KeyCode::*}; use crossterm::event::{*, KeyCode::*};
use crate::ratatui::style::Color; use crate::ratatui::style::Color;