#string #alphabet #generate #symbol-table #pyo3 #python #pre-defined

mudder

从预定义的字母表中生成两个字符串之间的字典序字符串

3 个版本

0.1.5 2023年11月17日
0.1.4 2023年11月17日
0.1.3 2023年11月17日
0.1.0 2023年11月17日

466文本处理

MIT 许可证

31KB
518

穆德

从预定义的字母表中生成两个字符串之间的字典序字符串。

这个包是 Mudder.js 的重写,使用 Rust 核心生成与 Python (通过 PyO3) 和 JS/TS (通过 wasm-pack) 的绑定。

快速开始

  • Rust: cargo add mudder
  • Python: pip install mudderpypoetry add mudderpy
  • JS/TS: npm install mudderjsyarn add mudderjs

API

所有三种语言的API相同。注意与原始版本相比有一些使用上的差异。

  • SymbolTable 构造函数接受一个 str/string,而不是一个 char[]/string[]。符号表中的每个成员都假定是一个字符。
  • 调用 mudder 时,对于 startend 参数的可选值,使用 Noneundefined 而不是空字符串。
  • 没有方法重载。

构造函数

通过传递一个字符串来创建一个新的 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 个字符串,介于 startend 之间。如果 startNone,则第一个字符串将是 SymbolTable 中的第一个字符串。如果 endNone,则最后一个字符串将是 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