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.
|
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
|
## License
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
|
@ -8,17 +8,17 @@ const Spinner = @This();
|
||||||
const default_loading_charset = [_][]const u8{ "|", "/", "-", "\\" };
|
const default_loading_charset = [_][]const u8{ "|", "/", "-", "\\" };
|
||||||
const default_finished_charset = "✓";
|
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),
|
keep_going: Atomic(bool) = Atomic(bool).init(false),
|
||||||
spinner_thread: ?Thread = null,
|
spinner_thread: ?Thread = null,
|
||||||
|
|
||||||
framerate_ns: u64 = 100 * time.ns_per_ms,
|
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 {
|
pub fn start(sp: *Spinner) !void {
|
||||||
sp.keep_going.store(true, .SeqCst);
|
sp.keep_going.store(true, .SeqCst);
|
||||||
sp.spinner_thread = try Thread.spawn(.{}, writer, .{sp});
|
sp.spinner_thread = try Thread.spawn(.{}, writer, .{sp});
|
||||||
|
@ -30,10 +30,10 @@ pub fn stop(sp: *Spinner) !void {
|
||||||
|
|
||||||
var stdErr = std.io.getStdErr();
|
var stdErr = std.io.getStdErr();
|
||||||
|
|
||||||
_ = try stdErr.write("\r");
|
try stdErr.writeAll("\r");
|
||||||
_ = try stdErr.write(sp.finished_charset);
|
try stdErr.writeAll(sp.finished_charset);
|
||||||
_ = try stdErr.write(" ");
|
try stdErr.writeAll(" ");
|
||||||
_ = try stdErr.write(sp.finished_message);
|
try stdErr.writeAll(sp.finished_message);
|
||||||
}
|
}
|
||||||
|
|
||||||
fn writer(sp: *Spinner) !void {
|
fn writer(sp: *Spinner) !void {
|
||||||
|
@ -44,11 +44,11 @@ fn writer(sp: *Spinner) !void {
|
||||||
if (!sp.keep_going.load(.SeqCst)) break;
|
if (!sp.keep_going.load(.SeqCst)) break;
|
||||||
if (current_char_idx >= sp.loading_charset.len - 1) current_char_idx = 0;
|
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.writeAll(sp.loading_charset[current_char_idx]);
|
||||||
_ = try stdErr.write(" ");
|
try stdErr.writeAll(" ");
|
||||||
_ = try stdErr.write(sp.loading_message);
|
try stdErr.writeAll(sp.loading_message);
|
||||||
|
|
||||||
time.sleep(sp.framerate_ns);
|
time.sleep(sp.framerate_ns);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue