9 releases (5 breaking)
0.6.0 | Oct 20, 2022 |
---|---|
0.5.0 | Aug 12, 2022 |
0.4.1 | Aug 12, 2022 |
0.4.0 | Feb 21, 2020 |
0.1.0 | Jul 29, 2019 |
#648 in Text processing
29 downloads per month
34KB
610 lines
linurgy
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
.
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");
assert_eq!("foo\n\n_", output);
Manipulate stdin
into stdout
by using the edit_buffered
method. This also works on files,
Cursor
s, or anything else that implements
BufRead
.
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.
use linurgy::factory;
// inserts a "*" before 2 newlines "\r\n\r\n" => "*\r\n\r\n"
let editor = factory::inserter_crlf("*", 2);
let output = editor.edit("foo\r\nbar\r\n\r\n");
// notice there is only an asterisk before the double newline
assert_eq!("foo\r\nbar*\r\n\r\n", output);
Contributing
Thank you very much for considering to contribute to this project!
We welcome any form of contribution:
- New issues (feature requests, bug reports, questions, ideas, ...)
- Pull requests (documentation improvements, code improvements, new features, ...)
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.