From db7fd2300f0bbfc6b1795490757981f0291dfb3d Mon Sep 17 00:00:00 2001 From: Dirkjan Ochtman Date: Mon, 21 Nov 2022 14:27:40 -0800 Subject: [PATCH] Inline utils module into parse --- src/lib.rs | 2 -- src/parse/mod.rs | 30 +++++++++++++++++++++++++++++- src/types.rs | 3 ++- src/utils.rs | 29 ----------------------------- 4 files changed, 31 insertions(+), 33 deletions(-) delete mode 100644 src/utils.rs diff --git a/src/lib.rs b/src/lib.rs index 6d9fce6..f77b7df 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,4 +1,2 @@ pub mod parse; pub mod types; - -mod utils; diff --git a/src/parse/mod.rs b/src/parse/mod.rs index e49fe36..39f962c 100644 --- a/src/parse/mod.rs +++ b/src/parse/mod.rs @@ -13,7 +13,7 @@ use nom::{ IResult, }; -use crate::{parse::imf::atom::is_atext, types::AtomOrQuoted, utils::unescape_quoted}; +use crate::{parse::imf::atom::is_atext, types::AtomOrQuoted}; pub mod address; pub mod command; @@ -150,6 +150,34 @@ pub fn Ldh_str(input: &[u8]) -> IResult<&[u8], &[u8]> { // ------------------------------------------------------------------------------------------------- +pub(crate) fn escape_quoted(unescaped: &str) -> Cow { + let mut escaped = Cow::Borrowed(unescaped); + + if escaped.contains('\\') { + escaped = Cow::Owned(escaped.replace('\\', "\\\\")); + } + + if escaped.contains('\"') { + escaped = Cow::Owned(escaped.replace('\"', "\\\"")); + } + + escaped +} + +pub(crate) fn unescape_quoted(escaped: &str) -> Cow { + let mut unescaped = Cow::Borrowed(escaped); + + if unescaped.contains("\\\\") { + unescaped = Cow::Owned(unescaped.replace("\\\\", "\\")); + } + + if unescaped.contains("\\\"") { + unescaped = Cow::Owned(unescaped.replace("\\\"", "\"")); + } + + unescaped +} + #[cfg(test)] pub mod test { use super::sub_domain; diff --git a/src/types.rs b/src/types.rs index 40ea749..91d62fd 100644 --- a/src/types.rs +++ b/src/types.rs @@ -3,7 +3,8 @@ use std::{borrow::Cow, fmt, io::Write, ops::Deref}; #[cfg(feature = "serde")] use serde::{Deserialize, Serialize}; -use crate::{parse::response::is_text_string_byte, utils::escape_quoted}; +use crate::parse::escape_quoted; +use crate::parse::response::is_text_string_byte; #[derive(Clone, Debug, PartialEq, Eq)] pub enum Command { diff --git a/src/utils.rs b/src/utils.rs deleted file mode 100644 index 0abe161..0000000 --- a/src/utils.rs +++ /dev/null @@ -1,29 +0,0 @@ -use std::borrow::Cow; - -pub(crate) fn escape_quoted(unescaped: &str) -> Cow { - let mut escaped = Cow::Borrowed(unescaped); - - if escaped.contains('\\') { - escaped = Cow::Owned(escaped.replace('\\', "\\\\")); - } - - if escaped.contains('\"') { - escaped = Cow::Owned(escaped.replace('\"', "\\\"")); - } - - escaped -} - -pub(crate) fn unescape_quoted(escaped: &str) -> Cow { - let mut unescaped = Cow::Borrowed(escaped); - - if unescaped.contains("\\\\") { - unescaped = Cow::Owned(unescaped.replace("\\\\", "\\")); - } - - if unescaped.contains("\\\"") { - unescaped = Cow::Owned(unescaped.replace("\\\"", "\"")); - } - - unescaped -}