Skip to content

Commit 4a73897

Browse files
committed
wip; use the latest promkit
1 parent 871a828 commit 4a73897

5 files changed

Lines changed: 21 additions & 24 deletions

File tree

Cargo.lock

Lines changed: 0 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,8 @@ jaq-std = "2.1.2"
2828

2929
[dependencies.promkit-widgets]
3030
version = "0.5.0"
31-
features = ["jsonstream", "listbox", "serde", "spinner", "status", "texteditor"]
31+
path = "../promkit/promkit-widgets"
32+
features = ["jsontree", "listbox", "serde", "spinner", "status", "texteditor"]
3233
default-features = false
3334

3435
# The profile that 'cargo dist' will build with

src/config.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use std::collections::HashSet;
22

3-
use promkit_widgets::{core::crossterm::event::Event, jsonstream, listbox, text_editor};
3+
use promkit_widgets::{core::crossterm::event::Event, json_tree, listbox, text_editor};
44
use serde::{Deserialize, Serialize};
55
use termcfg::crossterm_config::event_set_serde;
66
use tokio::time::Duration;
@@ -17,7 +17,7 @@ pub struct EditorConfig {
1717
#[derive(Serialize, Deserialize)]
1818
pub struct JsonConfig {
1919
pub max_streams: Option<usize>,
20-
pub stream: jsonstream::Config,
20+
pub stream: json_tree::Config,
2121
}
2222

2323
#[derive(Serialize, Deserialize)]

src/json.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ use jaq_core::{
55
use jaq_json::Val;
66

77
use promkit_widgets::{
8-
jsonstream::jsonz,
8+
json_tree::jsonz,
99
serde_json::{self, Deserializer, Value},
1010
};
1111

src/json_viewer.rs

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ use std::sync::Arc;
22

33
use promkit_widgets::{
44
core::{crossterm::event::Event, grapheme::StyledGraphemes, render::SharedRenderer, Widget},
5-
jsonstream::{self, JsonStream},
5+
json_tree::{self, JsonTree},
66
serde_json::{self, Value},
77
};
88
use tokio::{
@@ -30,7 +30,7 @@ pub enum RenderTrigger {
3030
/// JSON viewer that maintains the state of JSON stream
3131
/// and handles user interactions and query processing.
3232
pub struct JsonViewer {
33-
state: jsonstream::State,
33+
state: json_tree::State,
3434
json: Vec<serde_json::Value>,
3535
keybinds: JsonViewerKeybinds,
3636
}
@@ -40,43 +40,43 @@ pub type SharedJsonViewer = Arc<Mutex<JsonViewer>>;
4040
impl JsonViewer {
4141
/// Get the formatted content of current JSON stream.
4242
pub fn formatted_content(&self) -> String {
43-
self.state.config.format_raw_json(self.state.stream.rows())
43+
self.state.render_pretty_json()
4444
}
4545

4646
/// Handle user event and update the viewer state accordingly.
4747
fn handle_user_event(&mut self, event: &Event) {
4848
match event {
4949
// Move up.
5050
event if self.keybinds.up.contains(event) => {
51-
self.state.stream.up();
51+
self.state.tree.up();
5252
}
5353

5454
// Move down.
5555
event if self.keybinds.down.contains(event) => {
56-
self.state.stream.down();
56+
self.state.tree.down();
5757
}
5858

5959
// Move to head
6060
event if self.keybinds.move_to_head.contains(event) => {
61-
self.state.stream.head();
61+
self.state.tree.head();
6262
}
6363

6464
// Move to tail
6565
event if self.keybinds.move_to_tail.contains(event) => {
66-
self.state.stream.tail();
66+
self.state.tree.tail();
6767
}
6868

6969
// Toggle collapse/expand
7070
event if self.keybinds.toggle.contains(event) => {
71-
self.state.stream.toggle();
71+
self.state.tree.toggle();
7272
}
7373

7474
event if self.keybinds.expand.contains(event) => {
75-
self.state.stream.set_nodes_visibility(false);
75+
self.state.tree.set_nodes_visibility(false);
7676
}
7777

7878
event if self.keybinds.collapse.contains(event) => {
79-
self.state.stream.set_nodes_visibility(true);
79+
self.state.tree.set_nodes_visibility(true);
8080
}
8181

8282
_ => (),
@@ -95,15 +95,15 @@ impl JsonViewer {
9595
if ret.iter().all(|val| *val == Value::Null) {
9696
guide = Some(GuideMessage::JqReturnedNull(input));
9797

98-
self.state.stream = JsonStream::new(self.json.iter());
98+
self.state.tree = JsonTree::new(self.json.iter());
9999
} else {
100-
self.state.stream = JsonStream::new(ret.iter());
100+
self.state.tree = JsonTree::new(ret.iter());
101101
}
102102

103103
(guide, Some(self.state.create_graphemes(area.0, area.1)))
104104
}
105105
Err(e) => {
106-
self.state.stream = JsonStream::new(self.json.iter());
106+
self.state.tree = JsonTree::new(self.json.iter());
107107

108108
(
109109
Some(GuideMessage::JqFailed(e.to_string())),
@@ -132,9 +132,9 @@ pub async fn initialize(
132132
}
133133

134134
let input_stream = json::deserialize(input, config.max_streams)?;
135-
let stream = JsonStream::new(input_stream.iter());
136-
let state = jsonstream::State {
137-
stream,
135+
let tree = JsonTree::new(input_stream.iter());
136+
let state = json_tree::State {
137+
tree,
138138
config: config.stream,
139139
};
140140

0 commit comments

Comments
 (0)