From 265f63928a282864c45deb82a5041eb1678edaee Mon Sep 17 00:00:00 2001 From: Roland Schaer Date: Mon, 22 Jan 2024 12:56:28 -0300 Subject: [PATCH 1/2] fix: input - set default prompt to '> ' (#20) --- src/input.rs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/input.rs b/src/input.rs index 15b89fa..b55f29d 100644 --- a/src/input.rs +++ b/src/input.rs @@ -48,7 +48,7 @@ impl Input { title: title.into(), description: String::new(), placeholder: String::new(), - prompt: String::new(), + prompt: "> ".to_string(), input: String::new(), inline: false, password: false, @@ -203,6 +203,8 @@ impl Input { true => write!(out, ">")?, false => write!(out, " {}", self.prompt)?, } + } else { + write!(out, " ")?; } out.reset()?; From fc340613b9b4b8e52b7b72a89f424c8ec04063f7 Mon Sep 17 00:00:00 2001 From: Roland Schaer Date: Mon, 22 Jan 2024 15:54:33 -0300 Subject: [PATCH 2/2] feat: implement spinner (#13) * feat: implement spinner * fix: spinner - fix docs --- README.md | 23 ++++++ assets/spinner.gif | Bin 0 -> 31157 bytes assets/spinner.tape | 73 ++++++++++++++++++ examples/spinner.rs | 13 ++++ src/lib.rs | 3 + src/spinner.rs | 180 ++++++++++++++++++++++++++++++++++++++++++++ 6 files changed, 292 insertions(+) create mode 100644 assets/spinner.gif create mode 100644 assets/spinner.tape create mode 100644 examples/spinner.rs create mode 100644 src/spinner.rs diff --git a/README.md b/README.md index cbf665d..95b7cdd 100644 --- a/README.md +++ b/README.md @@ -124,3 +124,26 @@ fn main() { println!("yes: {}", yes); } ``` + +## Spinner + +Spinners are used to indicate that a process is running. +Run example with [`cargo run --example spinner`](./examples/spinner.rs). + +![Spinner](./assets/spinner.gif) + +```rust +use std::{thread::sleep, time::Duration}; + +use demand::{Spinner, SpinnerStyle}; + +fn main() { + Spinner::new("Loading Data...") + .style(SpinnerStyle::line()) + .run(|| { + sleep(Duration::from_secs(2)); + }) + .expect("error running spinner"); + println!("Done!"); +} +``` diff --git a/assets/spinner.gif b/assets/spinner.gif new file mode 100644 index 0000000000000000000000000000000000000000..dd0ece16419e28be84c84ef639a7f14d042b697c GIT binary patch literal 31157 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.gif Create a GIF output at the given +# Output .mp4 Create an MP4 output at the given +# Output .webm Create a WebM output at the given +# +# Require: +# Require Ensure a program is on the $PATH to proceed +# +# Settings: +# Set FontSize Set the font size of the terminal +# Set FontFamily Set the font family of the terminal +# Set Height Set the height of the terminal +# Set Width Set the width of the terminal +# Set LetterSpacing Set the font letter spacing (tracking) +# Set LineHeight Set the font line height +# Set LoopOffset % Set the starting frame offset for the GIF loop +# Set Theme Set the theme of the terminal +# Set Padding Set the padding of the terminal +# Set Framerate Set the framerate of the recording +# Set PlaybackSpeed Set the playback speed of the recording +# Set MarginFill Set the file or color the margin will be filled with. +# Set Margin Set the size of the margin. Has no effect if MarginFill isn't set. +# Set BorderRadius Set terminal border radius, in pixels. +# Set WindowBar Set window bar type. (one of: Rings, RingsRight, Colorful, ColorfulRight) +# Set WindowBarSize Set window bar size, in pixels. Default is 40. +# Set TypingSpeed