Skip to content

balt-dev/descape

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

27 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GitHub Actions Workflow Status Coverage Documentation MSRV Repository Latest version License unsafe forbidden

Adds a single extension trait for &str to unescape any backslashes. Supports no-std.

Unescaping is designed to support as many languages as possible.

The following escapes are valid:

  • \\n -> \n
  • \\r -> \r
  • \\t -> \t
  • \\b -> \x08
  • \\f -> \x0C
  • \\' -> '
  • \\" -> "
  • \\\\ -> \\
  • \\xNN -> \xNN
  • \\o -> \o
  • \\oo -> \oo
  • \\ooo -> \ooo
  • \\uXXXX -> \u{XXXX}
  • \\u{HEX} -> \u{HEX}

UTF-8 escapes specified by multiple consecutive \xNN escapes will not work as intended, producing mojibake. It's assumed that the escaped data is already UTF-8 encoded.


use alloc::borrow::Cow;
use descape::UnescapeExt;

let escaped = "Hello,\\nworld!".to_unescaped();
assert_eq!(
    escaped,
    Ok(Cow::Owned::<'_, str>("Hello,\nworld!".to_string()))
);

let no_escapes = "No escapes here!".to_unescaped();
assert_eq!(
    no_escapes,
    Ok(Cow::Borrowed("No escapes here!"))
);

//                           v  invalid at index 7
let invalid_escape = "Uh oh! \\xJJ".to_unescaped();
assert_eq!(
    invalid_escape,
    Err(7)
);

About

A simple crate containing an extension trait for unescaping a string.

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages