53 lines
1.4 KiB
Markdown
53 lines
1.4 KiB
Markdown
|
# Borderline
|
||
|
|
||
|
Borderline is a Crate to render borders to the terminal. You can place text or progress bars inside the borders. The usage is as simple as:
|
||
|
|
||
|
```rust
|
||
|
use borderline::LineBuilder;
|
||
|
|
||
|
// Create a line builder:
|
||
|
let mut lb = LineBuilder::new();
|
||
|
|
||
|
// Print the header first:
|
||
|
borderline::print_header("Borderline Test-Drive");
|
||
|
|
||
|
// Now, we are able to attach as many "line" as we want.
|
||
|
// Every line must be started with a call to `line_begin`
|
||
|
// and ended with a call to `line_end`:
|
||
|
lb.line_begin("- Loading...");
|
||
|
|
||
|
// perform other actions here...
|
||
|
|
||
|
// When ending a line, you can specify the second part
|
||
|
// of the line, which will be printed on the right side:
|
||
|
lb.line_end("done.");
|
||
|
|
||
|
// You can also print a progress bar:
|
||
|
lb.line_begin("- Loading many files:");
|
||
|
|
||
|
// Set up the progress bar using the total number of steps:
|
||
|
lb.progress_bar_setup(1_000);
|
||
|
|
||
|
// Do some work and update the progress bar:
|
||
|
for i in 0..1_000 {
|
||
|
sleep(std::time::Duration::from_millis(50));
|
||
|
lb.progress_bar_update(i);
|
||
|
}
|
||
|
|
||
|
// End the progress bar:
|
||
|
lb.progressbar_end();
|
||
|
|
||
|
// End the line and print the second text part:
|
||
|
lb.line_end("done.");
|
||
|
|
||
|
// At the end, we can print the closing border:
|
||
|
borderline::print_border();
|
||
|
```
|
||
|
|
||
|
While the progress bar is active:
|
||
|
![progressbar.png](images/progressbar.png)
|
||
|
|
||
|
When the program is done:
|
||
|
![done.png](images/done.png)
|
||
|
|
||
|
In case that the given text is too long, it gets wrapped at word boundaries. When this is not possible, the text is wrapped at the given width.
|