[−][src]Crate unsegen_jsonviewer
View structured data (i.e., json::JsonValue
s) in an unsegen
widget.
Example:
extern crate unsegen; use std::io::{stdin, stdout}; use unsegen::base::Terminal; use unsegen::input::{Input, Key, ScrollBehavior}; use unsegen::widget::{RenderingHints, Widget}; use unsegen_jsonviewer::json_ext::{JsonValue, Object}; use unsegen_jsonviewer::JsonViewer; fn main() { let stdout = stdout(); let stdin = stdin(); let stdin = stdin.lock(); let mut json_viewer = JsonViewer::new(JsonValue::Null); let mut term = Terminal::new(stdout.lock()); for input in Input::read_all(stdin) { let input = input.unwrap(); input .chain( ScrollBehavior::new(&mut json_viewer) .forwards_on(Key::Down) .forwards_on(Key::Char('j')) .backwards_on(Key::Up) .backwards_on(Key::Char('k')) .to_beginning_on(Key::Home) .to_end_on(Key::End), ) .chain((Key::Char('s'), || { let mut object = Object::new(); object.insert("foo", JsonValue::String("String!".to_owned())); object.insert("bar", JsonValue::Boolean(true)); json_viewer.update(JsonValue::Object(object)); })) .chain((Key::Char('n'), || { let mut object = Object::new(); object.insert("foo", JsonValue::Number((27 * 37).into())); object.insert("bar", JsonValue::Boolean(true)); // Notice that foo is highlighted when pressing 'n' after 's'! json_viewer.update(JsonValue::Object(object)); })); // Put more application logic here... { let win = term.create_root_window(); json_viewer.draw(win, RenderingHints::default()); } term.present(); } }
Modules
json_ext | Convenience reexport of |
Structs
JsonViewer | A widget for viewing |