An open API service indexing awesome lists of open source software.

https://github.com/mindsbackyard/trim-margin

A utility crate to help with layouting multi-line strings by detecting their margin.
https://github.com/mindsbackyard/trim-margin

margin rust string utils

Last synced: about 2 months ago
JSON representation

A utility crate to help with layouting multi-line strings by detecting their margin.

Awesome Lists containing this project

README

          

# trim-margin: easy layouting of multi-line strings
[![Build Status](https://travis-ci.org/mindsbackyard/trim-margin.svg?branch=master)](https://travis-ci.org/mindsbackyard/trim-margin)
[![Documentation](https://docs.rs/trim-margin/badge.svg)](https://docs.rs/trim-margin)
[![Crates.io](https://img.shields.io/crates/v/trim-margin.svg)](https://crates.io/crates/trim-margin)

This crate is intended to ease the use of multi-line strings in Rust.
When embedding strings with multiple lines in Rust all whitespaces, tabs, etc. are preserved even if they are just used for layouting one's code nicely.

```Rust
fn main() {
println!("-----------------------");
let misrepresented_multiline_string = "
This is string
spans over multiple lines,
but its rendering preserves all whitespaces.

Which is not what we usually intend in this case.
";
println!("{}", misrepresented_multiline_string);
println!("-----------------------");

println!("-----------------------");
let correctly_layouted_string = "For displaying
the a multiline strin properly
it would need to be layouted
like this.

Which is not very nice.";
println!("{}", correctly_layouted_string);
println!("-----------------------");
}
```

The `trim-margin` crate supports you with proper layouting.
By introducing a margin in the multi-line string the `trim_margin` method can filter out unwanted whitespaces and blank lines.

```Rust
extern crate trim_margin;
use trim_margin::MarginTrimmable;

fn main() {
let multiline_string_with_margin = "
|This string has a margin
|indicated by the '|' character.
|
|The following method call will remove ...
| * a blank first/last line
| * blanks before the margin prefix
| * the margin prefix itself
".trim_margin().unwrap();
println!("{}", multiline_string_with_margin);
}
```