summaryrefslogtreecommitdiffstats
path: root/vendor/indenter/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/indenter/README.md')
-rw-r--r--vendor/indenter/README.md113
1 files changed, 113 insertions, 0 deletions
diff --git a/vendor/indenter/README.md b/vendor/indenter/README.md
new file mode 100644
index 000000000..98bce3c4c
--- /dev/null
+++ b/vendor/indenter/README.md
@@ -0,0 +1,113 @@
+## indenter
+
+[![Build Status][actions-badge]][actions-url]
+[![Latest Version][version-badge]][version-url]
+[![Rust Documentation][docs-badge]][docs-url]
+
+[actions-badge]: https://github.com/yaahc/indenter/workflows/Continuous%20integration/badge.svg
+[actions-url]: https://github.com/yaahc/indenter/actions?query=workflow%3A%22Continuous+integration%22
+[version-badge]: https://img.shields.io/crates/v/indenter.svg
+[version-url]: https://crates.io/crates/indenter
+[docs-badge]: https://img.shields.io/badge/docs-latest-blue.svg
+[docs-url]: https://docs.rs/indenter
+
+A few wrappers for the `fmt::Write` objects that efficiently appends and remove
+common indentation after every newline
+
+## Setup
+
+Add this to your `Cargo.toml`:
+
+```toml
+[dependencies]
+indenter = "0.2"
+```
+
+## Examples
+
+## Indentation only
+
+This type is intended primarily for writing error reporters that gracefully
+format error messages that span multiple lines.
+
+```rust
+use std::error::Error;
+use std::fmt::{self, Write};
+use indenter::indented;
+
+struct ErrorReporter<'a>(&'a dyn Error);
+
+impl fmt::Debug for ErrorReporter<'_> {
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ let mut source = Some(self.0);
+ let mut i = 0;
+
+ while let Some(error) = source {
+ writeln!(f)?;
+ write!(indented(f).ind(i), "{}", error)?;
+
+ source = error.source();
+ i += 1;
+ }
+
+ Ok(())
+ }
+}
+```
+
+## "Dedenting" (removing common leading indendation)
+
+This type is intended primarily for formatting source code. For example, when
+generating code.
+
+This type requires the feature `std`.
+
+```rust
+use std::error::Error;
+use core::fmt::{self, Write};
+use indenter::CodeFormatter;
+
+let mut output = String::new();
+let mut f = CodeFormatter::new(&mut output, " ");
+
+write!(
+ f,
+ r#"
+ Hello
+ World
+ "#,
+);
+
+assert_eq!(output, "Hello\n World\n");
+
+let mut output = String::new();
+let mut f = CodeFormatter::new(&mut output, " ");
+
+// it can also indent...
+f.indent(2);
+
+write!(
+ f,
+ r#"
+ Hello
+ World
+ "#,
+);
+
+assert_eq!(output, " Hello\n World\n");
+```
+
+#### License
+
+<sup>
+Licensed under either of <a href="LICENSE-APACHE">Apache License, Version
+2.0</a> or <a href="LICENSE-MIT">MIT license</a> at your option.
+</sup>
+
+<br>
+
+<sub>
+Unless you explicitly state otherwise, any contribution intentionally submitted
+for inclusion in this crate by you, as defined in the Apache-2.0 license, shall
+be dual licensed as above, without any additional terms or conditions.
+</sub>