1
Fork 0
mirror of https://github.com/RGBCube/ZTerm synced 2025-07-29 00:47:44 +00:00

Write README

This commit is contained in:
RGBCube 2023-05-17 23:40:38 +03:00
parent 4f44f7c010
commit 9eeb776fe5
2 changed files with 41 additions and 14 deletions

View file

@ -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
```

View file

@ -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);
}