An open API service indexing awesome lists of open source software.

https://github.com/jabbalaci/jabba-lib

A utility library for Rust.
https://github.com/jabbalaci/jabba-lib

clipboard library python rust utility utils

Last synced: about 1 year ago
JSON representation

A utility library for Rust.

Awesome Lists containing this project

README

          

# jabba-lib

A general-purpose utility library for Rust. Its API was mainly inspired by the
Python programming language.

## Some examples

This is just a teaser. The library has many more modules
and --in most cases-- the modules contain more functions than shown below.

### console

Read from the stadandard input.

```rust
use jabba_lib::jconsole;

fn main() {
let name = jconsole::input("Name: ");
let name = name.trim();
println!("Hello {}!", name);
}
```

### process

Call an external command.

```rust
use jabba_lib::jprocess as jproc;

fn main() {
let cmd = "ls -al";
jproc::exec_cmd(cmd);
}
```

### fs

Read a text file line by line.

```rust
use jabba_lib::jfs;
use std::io::BufRead;

fn main() {
let f = jfs::open("Cargo.toml").unwrap();
for line in f.lines() {
let line = line.unwrap();
println!("{}", line);
}
}
```

### math

```rust
use jabba_lib::jmath;

fn main() {
assert_eq!(jmath::is_palindrome(101), true);
assert_eq!(jmath::is_prime(97), true);
assert_eq!(jmath::get_divisors(28), [1, 2, 4, 7, 14, 28]);
assert_eq!(jmath::factorial(5), 120);
assert_eq!(jmath::factorial_bigint(33).to_string(), "8683317618811886495518194401280000000");
}
```

### string

```rust
use jabba_lib::jstring;

fn main() {
let name = "Dave";
let reversed = jstring::str_rev(name); // evaD
println!("{} <-> {}", name, reversed);

let name = "anna";
println!("{} is palindrome: {}", name, jstring::is_palindrome(name));
}
```

### random

```rust
use jabba_lib::jrandom;

fn main() {
let number = jrandom::randrange(1, 10); // 10 is excluded
println!("random number from [1, 10): {}", number);

let number = jrandom::randint(1, 100); // 100 is included
println!("random number from [1, 100]: {}", number);

let mut numbers = vec![1, 2, 3, 4, 5];
jrandom::shuffle(&mut numbers);
println!("shuffled: {:?}", numbers); // could be [3, 5, 1, 4, 2]
}
```

### clipboard

Supported platforms: Linux (with X server), Windows.

Under Linux you must have the program `xsel` installed.
You can install it with your package manager.

Under Linux, the text is pasted on both clipboards (to "primary" and "clipboard").

```rust
use jabba_lib::jclipboard;

fn main() {
let text = "hello";

jabba_lib::jclipboard::check(); // verify if your platform is supported

jabba_lib::jclipboard::set_text(text).unwrap();
println!("The text {:?} was pasted on the clipboard", text);

let read = jabba_lib::jclipboard::get_text().unwrap();
println!("Contents of the clipboard: {:?}", read);

assert_eq!(read, text);
}
```

### spell

Spell a number (write out in words).

```rust
use jabba_lib::jspell;

fn main() {
assert_eq!(jspell::spell_number(5), "five");
assert_eq!(jspell::spell_number(11), "eleven");
assert_eq!(jspell::spell_number(101), "one hundred and one");
assert_eq!(jspell::spell_number(999), "nine hundred and ninety-nine");
}
```

### time

```rust
use jabba_lib::jtime;

fn main() {
let wait = 1.5;

println!("Waiting for {:.2} seconds...", wait);
jtime::sleep(wait);
println!("Done.");
}
```

See the folder [examples/](https://github.com/jabbalaci/jabba-lib/tree/main/examples)
for more examples.