str_utils/
lib.rs

1/*!
2# str Utils
3
4This crate provides some traits to extend types which implement `AsRef<[u8]>` or `AsRef<str>`.
5
6## Examples
7
8```rust
9use str_utils::*;
10
11assert_eq!(true, "foobar".starts_with_ignore_ascii_case("FoO"));
12assert_eq!(Some(1), "photo.jpg".ends_with_ignore_ascii_case_multiple(&[".png", ".jpg", ".gif"]));
13assert_eq!(true, "http".eq_ignore_ascii_case_with_uppercase("HTTP")); // faster than `eq_ignore_ascii_case`
14assert_eq!(true, "foobar".starts_with_ignore_ascii_case("FoO"));
15
16# #[cfg(feature = "alloc")]
17assert_eq!("here is a ZERO_WIDTH_SPACE -> ​".len() - 3, "here is a ZERO_WIDTH_SPACE -> ​".remove_all_invisible_characters().len());
18
19# #[cfg(feature = "alloc")]
20assert_eq!(r"foo\% b\_r", r"foo% b_r".escape_ascii_characters(b'\\', b"%_"));
21
22# #[cfg(feature = "alloc")]
23assert_eq!("aabbi\u{0307}zz", "AaBb\u{0130}Zz".to_lowercase_cow());
24# #[cfg(feature = "alloc")]
25assert_eq!("aabb\u{0130}zz", "AaBb\u{0130}Zz".to_ascii_lowercase_cow());
26# #[cfg(feature = "alloc")]
27assert_eq!("AABBSSZZ", "aabbßzz".to_uppercase_cow());
28# #[cfg(feature = "alloc")]
29assert_eq!("AABBßZZ", "aabbßzz".to_ascii_uppercase_cow());
30
31# #[cfg(feature = "alloc")]
32assert_eq!("Line 1 Line 2 Line 2 Line 3 Line 4 Line 5", "Line 1\r\nLine 2\r\nLine 2\rLine 3\nLine 4\nLine 5".replace_newlines_with_space());
33```
34
35## No Std
36
37Disable the default features to compile this crate without std.
38
39```toml
40[dependencies.str-utils]
41version = "*"
42default-features = false
43```
44*/
45
46#![cfg_attr(not(feature = "std"), no_std)]
47#![cfg_attr(docsrs, feature(doc_cfg))]
48
49// TODO eq_ignore_case_multiple
50// TODO starts_with_ignore_case_multiple
51// TODO ends_with_ignore_case_multiple
52
53#[cfg(feature = "alloc")]
54extern crate alloc;
55
56mod ends_with_ignore_ascii_case;
57mod ends_with_ignore_ascii_case_multiple;
58#[cfg(feature = "alloc")]
59mod ends_with_ignore_case;
60mod ends_with_multiple;
61mod eq_ignore_ascii_case;
62mod eq_ignore_ascii_case_multiple;
63#[cfg(feature = "unicase")]
64mod eq_ignore_case;
65mod eq_multiple;
66#[cfg(feature = "alloc")]
67mod escape_characters;
68#[cfg(feature = "alloc")]
69mod remove_all_invisible_characters;
70#[cfg(feature = "alloc")]
71mod replace_newlines_with_space;
72mod starts_with_ignore_ascii_case;
73mod starts_with_ignore_ascii_case_multiple;
74#[cfg(feature = "alloc")]
75mod starts_with_ignore_case;
76mod starts_with_multiple;
77#[cfg(feature = "alloc")]
78mod to_lowercase;
79#[cfg(feature = "alloc")]
80mod to_uppercase;
81
82pub use ends_with_ignore_ascii_case::*;
83pub use ends_with_ignore_ascii_case_multiple::*;
84#[cfg(feature = "alloc")]
85pub use ends_with_ignore_case::*;
86pub use ends_with_multiple::*;
87pub use eq_ignore_ascii_case::*;
88pub use eq_ignore_ascii_case_multiple::*;
89#[cfg(feature = "unicase")]
90pub use eq_ignore_case::*;
91pub use eq_multiple::*;
92#[cfg(feature = "alloc")]
93pub use escape_characters::*;
94#[cfg(feature = "alloc")]
95pub use remove_all_invisible_characters::*;
96#[cfg(feature = "alloc")]
97pub use replace_newlines_with_space::*;
98pub use starts_with_ignore_ascii_case::*;
99pub use starts_with_ignore_ascii_case_multiple::*;
100#[cfg(feature = "alloc")]
101pub use starts_with_ignore_case::*;
102pub use starts_with_multiple::*;
103#[cfg(feature = "alloc")]
104pub use to_lowercase::*;
105#[cfg(feature = "alloc")]
106pub use to_uppercase::*;