normalized-line-endings

Crates.ionormalized-line-endings
lib.rsnormalized-line-endings
version1.0.3
created_at2025-05-19 18:09:50.342016+00
updated_at2025-09-09 13:21:21.369778+00
descriptionReturns an iterator over characters with all line endings converted to \n (U+000A)
homepage
repositoryhttps://github.com/EngosSoftware/normalized-line-endings.git
max_upload_size
id1680192
size39,354
core (github:engossoftware:core)

documentation

https://docs.rs/normalized-line-endings

README

Normalized line endings

Crates.io Code coverage build Linux build Windows build MacOs build MacOs arm64 MIT licensed Apache 2.0 licensed Contributor Covenant Made by Human

Line endings normalizer

Overview

The Normalized line endings crate provides an iterator over characters with normalized line endings, meaning all valid line endings in the input are converted to a single newline character: \n (U+000A), like this:

  • \n\n
  • \r\n
  • \r\n\n

The normalized iterator can be created using standalone function normalized or by calling the method normalized on any iterator over characters.

This work was inspired by normalize-line-endings crate.

Examples

Using standalone function

use normalized_line_endings::normalized;

fn using_standalone_function_should_work() {
  let input = "This is a string \n with \r some \n\r\n random newlines\r\r\n\n";
  assert_eq!(
    "This is a string \n with \n some \n\n random newlines\n\n\n",
    normalized(input.chars()).collect::<String>()
  );
}

Using trait extension

use normalized_line_endings::Normalized;

fn using_trait_extension_should_work() {
  let input = "This is a string \n with \r some \n\r\n random newlines\r\r\n\n";
  assert_eq!(
    "This is a string \n with \n some \n\n random newlines\n\n\n",
    input.chars().normalized().collect::<String>()
  );
}

License

Licensed under either of

at your option.

Contribution

Any contributions to normalized-line-endings are greatly appreciated. All contributions intentionally submitted for inclusion in the work by you, shall be dual licensed as above, without any additional terms or conditions.


Brought to you with 💙 by Engos Software

Commit count: 0

cargo fmt