#range #string #indices #parse #selection

choice-string

提供解析字符串中的选择(索引和范围)的实用工具

1 个不稳定版本

0.0.1 2023年4月15日

#37#selection

Download history • Rust 包仓库 32/week @ 2024-03-13 • Rust 包仓库 8/week @ 2024-03-27 • Rust 包仓库 11/week @ 2024-04-03 • Rust 包仓库 1/week @ 2024-04-10 • Rust 包仓库 146/week @ 2024-05-29 • Rust 包仓库 8808/week @ 2024-06-05 • Rust 包仓库 11272/week @ 2024-06-12 • Rust 包仓库 11901/week @ 2024-06-19 • Rust 包仓库 14664/week @ 2024-06-26 • Rust 包仓库

46,719 每月下载量
用于 sonnerie

MIT/Apache

14KB
296

choice-string

提供解析字符串中的选择(索引和范围)的实用工具


特性

解析选择字符串

对于此包,选择字符串的格式可以通过以下示例理解

The following packages are available:
(1) good-package    (2) bad-package     (3) decent-package
(4) awful-package   (5) amazing-package (6) package6
(7) package7        (8) package8    
Select which packages to install:
>> 1 3 5 6-8

The following packages are being installed:
good-package, decent-package, amazing-package, package6,
package7, package8
...

在这种情况下,用户选择了索引 1、3、5,以及包含 6 到 8 的所有索引。

简单的 API

let selection =  choice_string::parse("1, 2, 3, 4-8").expect("parse error");
assert!(selection.contains_item(5));

灵活的语法

分隔符是灵活的。以下任何一种都适用

  • - 一个空格
  • , - 一个逗号
  • ; - 一个分号

您还可以在单个字符串中使用上述任何组合,甚至混合作为单个分隔符。

例如

  • 1, 2, 3,5 6-9
  • 1-8 11, 12
  • 1,2,3,4
  • 1;2;3;4

压缩到最小表示

解析后,提供的范围通过并集操作进行压缩。

例如

  • 1, 2, 3, 4-5, 11 -> 1-5, 11

依赖项

~1.4–2.1MB
~43K SLoC