5 unstable releases
0.3.1 | Oct 28, 2021 |
---|---|
0.3.0 | Jan 29, 2020 |
0.2.0 | Jan 3, 2019 |
0.1.1 | Dec 30, 2018 |
0.1.0 | Jul 13, 2018 |
#556 in Text processing
19,950 downloads per month
Used in 128 crates
(58 directly)
22KB
354 lines
snailquote
This library provides functions to escape and unescape strings.
It escapes them in a roughly 'sh' compatible way (e.g. double quotes supporting backslash escapes, single quotes supporting no escapes).
In addition, it provides support for common c-like ascii escapes (like \n
for
newline, \v
for vertical tab, etc) and rust-string-like unicode (via
\u{12ff}
style escapes).
More importantly, this library also provides the ability to un-escape a given escaped text to recover the original string.
For more information on usage and what escape sequences will work, see the docs.
Compatibility
snailquote intends to explicitly be compatible with the following use-cases:
- Readable encoding of arbitrary strings for user's editing; re-parsing of said strings after being edited.
- Reading and writing the values of
os-release
files.
Other files may have a similar shell-inspired format that snailescape works with, but it's up to you to verify it really is similar enough to be correct.
snailquote is inspired by, but not compatible with, the following:
- gnulib quotearg, as used for 'ls' output -- snailquote handles unicode escapes differently.
- ANSI-c string literal quoting -- snailquote handles unicode differently and supports shell-related escapes, like '$'.
- sh string quoting -- snailquote handles unicode differently and is more lax about shell special characters.
Why not use <other library>
Other libraries in rust I've found have one or more of the following problems:
- The escaped text is not as easily human-editable
- There is no way to un-escape text
- NIH
Dependencies
~0.6–1MB
~20K SLoC