mirror of
https://github.com/RGBCube/ZTerm
synced 2025-07-29 08:57:46 +00:00
Write README
This commit is contained in:
parent
4f44f7c010
commit
9eeb776fe5
2 changed files with 41 additions and 14 deletions
27
README.md
27
README.md
|
@ -2,6 +2,33 @@
|
|||
|
||||
Terminal abstraction library for Zig.
|
||||
|
||||
## Contents
|
||||
|
||||
This is a simple guide to using the library.
|
||||
The contents will be briefly covered here.
|
||||
|
||||
### Spinner
|
||||
|
||||
```zig
|
||||
const std = @import("std");
|
||||
const zterm = @import("zterm");
|
||||
|
||||
pub fn main() !void {
|
||||
var sp = zterm.Spinner{
|
||||
.loading_charset = [_][]const u8{"⣾", "⣽", "⣻", "⢿", "⡿", "⣟", "⣯", "⣷"};
|
||||
.loading_message = "Selling all your data to the CCP...",
|
||||
.finished_charset = "✓",
|
||||
.finished_message = "Lock your doors.",
|
||||
};
|
||||
try sp.start();
|
||||
|
||||
var stdOut = std.io.getOut();
|
||||
try stdOut.writeAll("Calculating very important stuff...");
|
||||
|
||||
try sp.stop();
|
||||
}
|
||||
```
|
||||
|
||||
## License
|
||||
|
||||
```
|
||||
|
|
|
@ -8,17 +8,17 @@ const Spinner = @This();
|
|||
const default_loading_charset = [_][]const u8{ "|", "/", "-", "\\" };
|
||||
const default_finished_charset = "✓";
|
||||
|
||||
loading_charset: []const []const u8 = &default_loading_charset,
|
||||
loading_message: []const u8 = "",
|
||||
|
||||
finished_charset: []const u8 = default_finished_charset,
|
||||
finished_message: []const u8 = "",
|
||||
|
||||
keep_going: Atomic(bool) = Atomic(bool).init(false),
|
||||
spinner_thread: ?Thread = null,
|
||||
|
||||
framerate_ns: u64 = 100 * time.ns_per_ms,
|
||||
|
||||
loading_charset: []const []const u8 = &default_loading_charset,
|
||||
finished_charset: []const u8 = default_finished_charset,
|
||||
|
||||
loading_message: []const u8 = "",
|
||||
finished_message: []const u8 = "",
|
||||
|
||||
pub fn start(sp: *Spinner) !void {
|
||||
sp.keep_going.store(true, .SeqCst);
|
||||
sp.spinner_thread = try Thread.spawn(.{}, writer, .{sp});
|
||||
|
@ -30,10 +30,10 @@ pub fn stop(sp: *Spinner) !void {
|
|||
|
||||
var stdErr = std.io.getStdErr();
|
||||
|
||||
_ = try stdErr.write("\r");
|
||||
_ = try stdErr.write(sp.finished_charset);
|
||||
_ = try stdErr.write(" ");
|
||||
_ = try stdErr.write(sp.finished_message);
|
||||
try stdErr.writeAll("\r");
|
||||
try stdErr.writeAll(sp.finished_charset);
|
||||
try stdErr.writeAll(" ");
|
||||
try stdErr.writeAll(sp.finished_message);
|
||||
}
|
||||
|
||||
fn writer(sp: *Spinner) !void {
|
||||
|
@ -44,11 +44,11 @@ fn writer(sp: *Spinner) !void {
|
|||
if (!sp.keep_going.load(.SeqCst)) break;
|
||||
if (current_char_idx >= sp.loading_charset.len - 1) current_char_idx = 0;
|
||||
|
||||
_ = try stdErr.write("\r");
|
||||
try stdErr.writeAll("\r");
|
||||
|
||||
_ = try stdErr.write(sp.loading_charset[current_char_idx]);
|
||||
_ = try stdErr.write(" ");
|
||||
_ = try stdErr.write(sp.loading_message);
|
||||
try stdErr.writeAll(sp.loading_charset[current_char_idx]);
|
||||
try stdErr.writeAll(" ");
|
||||
try stdErr.writeAll(sp.loading_message);
|
||||
|
||||
time.sleep(sp.framerate_ns);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue