linurgy

Crates.io msrv
1.32 tests Documentation license

Rust library to manipulate multiple newlines.

Create a new String with your edited text, or use buffers to pipe input and output into the Editor. This library has no additional dependencies.

Using linurgy

Build a reusable Editor with one of the convenient factory functions. Use the edit method to create a new String.

```rust use linurgy::factory;

// appends an underscore "" every 2 newlines "\n\n" => "\n\n" let editor = factory::appender("", 2); let output = editor.edit("foo\n\n"); asserteq!("foo\n\n_", output); ```

Manipulate stdin into stdout by using the edit_buffered method. This also works on files, Cursors, or anything else that implements BufRead.

```rust use linurgy::factory; use std::io::{BufReader, Result, stdin, stdout};

// doubles every newline "\n" => "\n\n" let editor = factory::appender("\n", 1); // create a buffer over stdin let mut input = BufReader::new(stdin()); // pipe input into editor and output to stdout editor.edit_buffered(&mut input, &mut stdout())?; ```

Work with LF \n or CRLF \r\n line-endings. There are factory functions for CRLF inputs.

```rust use linurgy::factory;

// inserts a "" before 2 newlines "\r\n\r\n" => "\r\n\r\n" let editor = factory::insertercrlf("*", 2); let output = editor.edit("foo\r\nbar\r\n\r\n"); // notice there is only an asterisk before the double newline asserteq!("foo\r\nbar*\r\n\r\n", output); ```

More examples

Contributing

Thank you very much for considering to contribute to this project!

We welcome any form of contribution:

Note: Before you take the time to open a pull request, please open an issue first.

See CONTRIBUTING.md for details.

License

Linurgy is distributed under the terms of both the MIT license and the Apache License (Version 2.0).

See LICENSE-APACHE and LICENSE-MIT for details.