#parser #rfc3261 #quoted-string

quoted-string-parser

Quoted string parser for grammar defined in RFC3261

1 unstable release

0.1.0 May 6, 2022

#1553 in Text processing

Download history 514/week @ 2023-12-06 1063/week @ 2023-12-13 620/week @ 2023-12-20 184/week @ 2023-12-27 280/week @ 2024-01-03 237/week @ 2024-01-10 702/week @ 2024-01-17 715/week @ 2024-01-24 881/week @ 2024-01-31 772/week @ 2024-02-07 751/week @ 2024-02-14 651/week @ 2024-02-21 895/week @ 2024-02-28 1091/week @ 2024-03-06 1055/week @ 2024-03-13 1048/week @ 2024-03-20

4,289 downloads per month
Used in 13 crates (via stun-rs)

MIT/Apache

16KB
174 lines

Docs

quoted-string-parser

This crates implements a parser for text that meets the grammar for "quoted-string" as described in SIP: Session Initiation Protocol. RFC3261

quoted-string  =  SWS DQUOTE *(qdtext / quoted-pair ) DQUOTE
qdtext         =  LWS / %x21 / %x23-5B / %x5D-7E / UTF8-NONASCII
quoted-pair    =  "\" (%x00-09 / %x0B-0C / %x0E-7F)
LWS            =  [*WSP CRLF] 1*WSP ; linear whitespace
SWS            =  [LWS] ; sep whitespace
UTF8-NONASCII  =  %xC0-DF 1UTF8-CONT
               /  %xE0-EF 2UTF8-CONT
               /  %xF0-F7 3UTF8-CONT
               /  %xF8-Fb 4UTF8-CONT
               /  %xFC-FD 5UTF8-CONT
UTF8-CONT      =  %x80-BF
DQUOTE         =  %x22      ; " (Double Quote)
CRLF           =  CR LF     ; Internet standard newline
CR             =  %x0D      ; carriage return
LF             =  %x0A      ; linefeed
WSP            =  SP / HTAB ; whitespace
SP             =  %x20
HTAB           =  %x09      ; horizontal tab

ParThe QuotedStringParser object provides an simple API to validate that input text meets the "quoted-string" grammar.

use quoted_string_parser::{QuotedStringParser, QuotedStringParseLevel};

// two qdtexts separated by a whitespace
assert!(QuotedStringParser::validate(
  QuotedStringParseLevel::QuotedString, "\"Hello world\""));

// one quoted-pair
assert!(QuotedStringParser::validate(
  QuotedStringParseLevel::QuotedString, "\"\\\u{7f}\""));

QuotedStringParser derives from Parser, if you need more control over the parser itself you can use any of the operations defined in the pest crate. Check the documentation for more information.

Documentation

https://docs.rs/quoted-string-parser

Contributing

Patches and feedback are welcome.

Donations

If you find this project helpful, you may consider making a donation:

Donate with Bitcoin Donate with Ethereum

License

This project is licensed under either of

say thanks

Dependencies

~2.2–2.9MB
~58K SLoC