normalized-line-endings

Crates.ionormalized-line-endings
lib.rsnormalized-line-endings
version1.0.14
created_at2025-05-19 18:09:50.342016+00
updated_at2026-01-15 18:23:47.996711+00
descriptionLine endings normalizer
homepagehttps://engossoftware.github.io/normalized-line-endings/
repositoryhttps://github.com/EngosSoftware/normalized-line-endings.git
max_upload_size
id1680192
size39,095
core (github:engossoftware:core)

documentation

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

README

normalized-line-endings

crates.io coverage
build Linux build Windows build macOs build macOs arm64
mit-license apache-license cc
mbh es

Line endings normalizer

Overview

This 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.

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.

Commit count: 0

cargo fmt