3 个版本
| 0.1.5 | 2023年11月17日 |
|---|---|
| 0.1.4 | 2023年11月17日 |
| 0.1.3 | 2023年11月17日 |
| 0.1.0 |
|
466 在 文本处理
31KB
518 行
穆德
从预定义的字母表中生成两个字符串之间的字典序字符串。
这个包是 Mudder.js 的重写,使用 Rust 核心生成与 Python (通过 PyO3) 和 JS/TS (通过 wasm-pack) 的绑定。
快速开始
- Rust:
cargo add mudder - Python:
pip install mudderpy或poetry add mudderpy - JS/TS:
npm install mudderjs或yarn add mudderjs
API
所有三种语言的API相同。注意与原始版本相比有一些使用上的差异。
SymbolTable构造函数接受一个str/string,而不是一个char[]/string[]。符号表中的每个成员都假定是一个字符。- 调用
mudder时,对于start和end参数的可选值,使用None或undefined而不是空字符串。 - 没有方法重载。
构造函数
通过传递一个字符串来创建一个新的 SymbolTable。字符串中的字符将用作 SymbolTable 的字母表,第一个字符是 "零" 字符,第二个是 "一" 字符,依此类推。
在 Rust 中,new 方法接受一个字符 Vector。 from_str 方法接受一个 &str。在 Python 和 JS/TS 中,构造函数接受一个 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");
默认 SymbolTable
为了方便,有几个默认的 SymbolTable 可以使用。
符号表::decimal:0123456789符号表::alphabetic:abcdefghijklmnopqrstuvwxyz符号表::base36:0123456789abcdefghijklmnopqrstuvwxyz符号表::base62:0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz符号表::hex:0123456789abcdef
SymbolTable 方法
SymbolTable 具有以下方法
-
符号表::mudder(n: usize, start: Option<&str>, end: Option<&str>) -> Result<Vec<String>, &'static str>: 生成n个字符串,介于start和end之间。如果start为None,则第一个字符串将是SymbolTable中的第一个字符串。如果end为None,则最后一个字符串将是SymbolTable中的最后一个字符串,重复k+6次,其中k=len(start)。 -
符号表::mudder_one(start: Option<&str>, end: Option<&str>) -> Result<String, &'static str>: 使用n=1调用mudder的便捷方法,并返回结果的第一个元素。
注意,对于 Python 和 JS,返回类型只是一个字符串列表或单个字符串。
示例
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"]);
依赖项
~485KB
~10K SLoC