]> git.proxmox.com Git - rustc.git/blame - vendor/unindent/README.md
New upstream version 1.63.0+dfsg1
[rustc.git] / vendor / unindent / README.md
CommitLineData
3c0e092e
XL
1# Unindent
2
3[<img alt="github" src="https://img.shields.io/badge/github-dtolnay/indoc-8da0cb?style=for-the-badge&labelColor=555555&logo=github" height="20">](https://github.com/dtolnay/indoc)
4[<img alt="crates.io" src="https://img.shields.io/crates/v/unindent.svg?style=for-the-badge&color=fc8d62&logo=rust" height="20">](https://crates.io/crates/unindent)
5[<img alt="docs.rs" src="https://img.shields.io/badge/docs.rs-unindent-66c2a5?style=for-the-badge&labelColor=555555&logoColor=white&logo=data:image/svg+xml;base64,PHN2ZyByb2xlPSJpbWciIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUxMiA1MTIiPjxwYXRoIGZpbGw9IiNmNWY1ZjUiIGQ9Ik00ODguNiAyNTAuMkwzOTIgMjE0VjEwNS41YzAtMTUtOS4zLTI4LjQtMjMuNC0zMy43bC0xMDAtMzcuNWMtOC4xLTMuMS0xNy4xLTMuMS0yNS4zIDBsLTEwMCAzNy41Yy0xNC4xIDUuMy0yMy40IDE4LjctMjMuNCAzMy43VjIxNGwtOTYuNiAzNi4yQzkuMyAyNTUuNSAwIDI2OC45IDAgMjgzLjlWMzk0YzAgMTMuNiA3LjcgMjYuMSAxOS45IDMyLjJsMTAwIDUwYzEwLjEgNS4xIDIyLjEgNS4xIDMyLjIgMGwxMDMuOS01MiAxMDMuOSA1MmMxMC4xIDUuMSAyMi4xIDUuMSAzMi4yIDBsMTAwLTUwYzEyLjItNi4xIDE5LjktMTguNiAxOS45LTMyLjJWMjgzLjljMC0xNS05LjMtMjguNC0yMy40LTMzLjd6TTM1OCAyMTQuOGwtODUgMzEuOXYtNjguMmw4NS0zN3Y3My4zek0xNTQgMTA0LjFsMTAyLTM4LjIgMTAyIDM4LjJ2LjZsLTEwMiA0MS40LTEwMi00MS40di0uNnptODQgMjkxLjFsLTg1IDQyLjV2LTc5LjFsODUtMzguOHY3NS40em0wLTExMmwtMTAyIDQxLjQtMTAyLTQxLjR2LS42bDEwMi0zOC4yIDEwMiAzOC4ydi42em0yNDAgMTEybC04NSA0Mi41di03OS4xbDg1LTM4Ljh2NzUuNHptMC0xMTJsLTEwMiA0MS40LTEwMi00MS40di0uNmwxMDItMzguMiAxMDIgMzguMnYuNnoiPjwvcGF0aD48L3N2Zz4K" height="20">](https://docs.rs/unindent)
6[<img alt="build status" src="https://img.shields.io/github/workflow/status/dtolnay/indoc/CI/master?style=for-the-badge" height="20">](https://github.com/dtolnay/indoc/actions?query=branch%3Amaster)
7
8This crate provides [`indoc`]'s indentation logic for use with strings that are
9not statically known at compile time. For unindenting string literals, use
10`indoc` instead.
11
12[`indoc`]: https://github.com/dtolnay/indoc
13
14This crate exposes two functions:
15
16- `unindent(&str) -> String`
17- `unindent_bytes(&[u8]) -> Vec<u8>`
18
19```rust
20use unindent::unindent;
21
22fn main() {
23 let indented = "
24 line one
25 line two";
26 assert_eq!("line one\nline two", unindent(indented));
27}
28```
29
30## Explanation
31
32The following rules characterize the behavior of unindent:
33
341. Count the leading spaces of each line, ignoring the first line and any lines
35 that are empty or contain spaces only.
362. Take the minimum.
373. If the first line is empty i.e. the string begins with a newline, remove the
38 first line.
394. Remove the computed number of spaces from the beginning of each line.
40
41This means there are a few equivalent ways to format the same string, so choose
42one you like. All of the following result in the string `"line one\nline
43two\n"`:
44
45```
46unindent(" / unindent( / unindent("line one
47 line one / "line one / line two
48 line two / line two / ")
49 ") / ") /
50```
51
52## License
53
54Licensed under either of
55
56 * Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0)
57 * MIT license ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT)
58
59at your option.
60
61### Contribution
62
63Unless you explicitly state otherwise, any contribution intentionally submitted
64for inclusion in Indoc by you, as defined in the Apache-2.0 license, shall be
65dual licensed as above, without any additional terms or conditions.