linurgy

Crates.io Documentation Rust CI

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

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.