crowbook-text-processing

Crates.iocrowbook-text-processing
lib.rscrowbook-text-processing
version1.1.1
sourcesrc
created_at2016-10-06 18:31:13.343323
updated_at2023-08-03 00:01:20.737763
descriptionProvides some utilities functions for escaping text (HTML/LaTeX) and formatting it according to typographic rules (smart quotes, ellipsis, french typograhic rules)
homepage
repositoryhttps://github.com/lise-henry/crowbook-text-processing/
max_upload_size
id6747
size93,629
Lizzie Crowdagger (lise-henry)

documentation

https://docs.rs/crowbook-text-processing

README

See the full library documentation on Docs.rs.

Provides some utilities functions for escaping text (to HTML or LaTeX) and formatting it according to typographic rules (smart quotes, ellipsis, french rules for non-breaking spaces).

These functions were originally written for Crowbook, but have been published on a separate crate and under a less restrictive license (MPL instead of LGPL) so they can be used in other projects.

Usage

Just add this line in the dependencies section of your Cargo.toml file:

[dependencies]
crowbook-text-processing = "0.2"

Example

use crowbook_text_processing::{FrenchFormatter, clean, escape};

let s = " Some  string with  too much   whitespaces & around 1% \
         characters that might cause trouble to HTML or LaTeX.";
// Remove unnecessary whitespaces (but doesn't trim as it can have meaning)
let new_s = clean::whitespaces(s);
// Escape forHTML
println!("for HTML: {}", escape::html(new_s.clone()));
// Escape for LaTeX
println!("for LaTeX: {}", escape::tex(new_s));

// Replace quotes with typographic quotation marks
let s = r#"Some "quoted string" and 'another one'."#;
let new_s = clean::quotes(s);
assert_eq!(&new_s, "Some “quoted string” and ‘another one’.");

// Replace three consecutive dots with ellipsis character
let s = clean::ellipsis("Foo...");
assert_eq!(&s, "Foo…");

// Format whitespaces according to french typographic rules, using
// the appropriate non-breaking spaces where needed
let s = " Une chaîne en français ! On voudrait un résultat \
         « typographiquement correct ».";
let french = FrenchFormatter::new();
println!("for text: {}", french.format(s));
println!("for LaTeX: {}", escape::tex(french.format_tex(s)));

License

This is free software, published under the Mozilla Public License, version 2.0.

ChangeLog

See the ChangeLog file.

Commit count: 149

cargo fmt