16 个版本

0.2.3 2023 年 9 月 16 日
0.2.2 2023 年 7 月 15 日
0.2.1 2023 年 2 月 11 日
0.1.11 2022 年 12 月 17 日
0.1.0 2016 年 7 月 17 日

#63 in 文本处理

Download history 514842/week @ 2024-04-23 575632/week @ 2024-04-30 601207/week @ 2024-05-07 605944/week @ 2024-05-14 586814/week @ 2024-05-21 518417/week @ 2024-05-28 526108/week @ 2024-06-04 689992/week @ 2024-06-11 557548/week @ 2024-06-18 577056/week @ 2024-06-25 508813/week @ 2024-07-02 609346/week @ 2024-07-09 668605/week @ 2024-07-16 633294/week @ 2024-07-23 793018/week @ 2024-07-30 846023/week @ 2024-08-06

3,044,385 个月下载量
用于 353 个包 (79 直接)

MIT/Apache

10KB
99

取消缩进

github crates.io docs.rs build status

此包提供了 indoc 的缩进逻辑,用于与编译时未知的字符串一起使用。对于取消字符串字面量的缩进,请使用 indoc

此包公开了两个函数

  • unindent(&str) ->String
  • unindent_bytes(&[u8]) -> Vec<u8>
use unindent::unindent;

fn main() {
    let indented = "
            line one
            line two";
    assert_eq!("line one\nline two", unindent(indented));
}

说明

以下规则描述了 unindent 的行为

  1. 计算每行的前导空格数量,忽略第一行以及任何只包含空格的空行。
  2. 取最小值。
  3. 如果第一行是空的,即字符串以换行符开始,则删除第一行。
  4. 从每行的开头移除计算出的空格数量。

这意味着存在几种等效的方式来格式化相同的字符串,因此请选择您喜欢的一种。以下所有方式都产生相同的字符串 "line one\nline two\n"

unindent("          /      unindent(           /      unindent("line one
   line one        /         "line one        /                 line two
   line two       /           line two       /                  ")
   ")            /            ")            /

许可证

根据您选择以下任意一种许可:

您自行决定。

贡献

除非您明确声明,否则您提交的任何有意包含在 Indoc 中的贡献,根据 Apache-2.0 许可证的界定,应作为上述双许可使用,不附加任何额外条款或条件。

无运行时依赖