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