mudderjs v0.1.5
Mudder
Generate lexicographically-spaced strings between two strings from pre-defined alphabets.
This package is a rewrite of Mudder.js with a Rust core that is used to generate bindings to Python (via PyO3) and JS/TS (via wasm-pack).
Quickstart
- Rust:
cargo add mudder - Python:
pip install mudderpyorpoetry add mudderpy - JS/TS:
npm install mudderjsoryarn add mudderjs
API
The API is the same for all three languages. Note that there are a few differences in usage compared to the original:
- The
SymbolTableconstructor takes in astr/stringinstead of achar[]/string[]. Each member of the symbol table is assumed to be a character. - When calling
mudder, optional values for thestartandendparameters useNoneorundefinedinstead of empty strings. - No method overloads.
Constructor
Create a new SymbolTable by passing in a string. The characters in the string will be used as the alphabet for the SymbolTable, with the first character being the "zero" character and, the second being the "one" character, and so on.
In Rust, the new method takes in a Vector of chars. The from_str method takes in a &str. In Python and JS/TS, the constructor takes in a str/string.
use mudder::SymbolTable;
let table = SymbolTable::from_str("abc");from mudderpy import SymbolTable
table = SymbolTable("abc")import { SymbolTable } from "mudderjs";
const table = new SymbolTable("abc");Default SymbolTables
For convenience, there are a few default SymbolTables that can be used.
SymbolTable::decimal:0123456789SymbolTable::alphabetic:abcdefghijklmnopqrstuvwxyzSymbolTable::base36:0123456789abcdefghijklmnopqrstuvwxyzSymbolTable::base62:0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzSymbolTable::hex:0123456789abcdef
SymbolTable methods
A SymbolTable has the following methods:
SymbolTable::mudder(n: usize, start: Option<&str>, end: Option<&str>) -> Result<Vec<String>, &'static str>: Generatenstrings betweenstartandend. IfstartisNone, the first string will be the first string in theSymbolTable. IfendisNone, the last string will be the last string in theSymbolTable, repeatedk+6times wherek=len(start).SymbolTable::mudder_one(start: Option<&str>, end: Option<&str>) -> Result<String, &'static str>: Convenience method for callingmudderwithn=1and returning the first element of the resulting vector.
Note that for Python and JS, the return type is just a list of strings or a single string.
Examples
use mudder::SymbolTable;
let table = SymbolTable::from_str("abc");
// let table = SymbolTable::new(vec!['a', 'b', 'c']);
let strings = table.mudder(5, None, None).unwrap();
assert_eq!(strings, vec!["ab", "ac", "b", "bc", "c"]);from mudderpy import SymbolTable
table = SymbolTable("abc")
strings = table.mudder(5)
assert strings == ['ab', 'ac', 'b', 'bc', 'c']import { SymbolTable } from "mudderjs";
const table = new SymbolTable("abc");
const strings = table.mudder(5);
assert(strings == ["ab", "ac", "b", "bc", "c"]);