Crates.io | crowbook-text-processing |
lib.rs | crowbook-text-processing |
version | 1.1.1 |
source | src |
created_at | 2016-10-06 18:31:13.343323 |
updated_at | 2023-08-03 00:01:20.737763 |
description | Provides some utilities functions for escaping text (HTML/LaTeX) and formatting it according to typographic rules (smart quotes, ellipsis, french typograhic rules) |
homepage | |
repository | https://github.com/lise-henry/crowbook-text-processing/ |
max_upload_size | |
id | 6747 |
size | 93,629 |
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.
Just add this line in the dependencies
section of your Cargo.toml
file:
[dependencies]
crowbook-text-processing = "0.2"
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)));
This is free software, published under the Mozilla Public License, version 2.0.
See the ChangeLog file.