8#if !defined(ALIB_C20_MODULES) || ((ALIB_C20_MODULES != 0) && (ALIB_C20_MODULES != 1))
9# error "Symbol ALIB_C20_MODULES has to be given to the compiler as either 0 or 1"
19 module ALib.Strings.Escaper;
20 import ALib.Strings.Tokenizer;
40 return int(result.
Size() - oldSize);
54 bool lastWasSlash=
false;
89 const String& delimiters )
const {
109 case '"' : dest.
_<
NC>(needsQuotes ?
"\\\"" :
"\"");
111 case '\\' : dest.
_<
NC>(
"\\\\");
break;
112 case '\r' : dest.
_<
NC>(
"\\r" );
break;
113 case '\n' : dest.
_<
NC>(
"\\n" );
break;
114 case '\t' : dest.
_<
NC>(
"\\t" );
break;
115 case '\a' : dest.
_<
NC>(
"\\a" );
break;
116 case '\b' : dest.
_<
NC>(
"\\b" );
break;
117 case '\v' : dest.
_<
NC>(
"\\v" );
break;
118 case '\f' : dest.
_<
NC>(
"\\f" );
break;
119 case '\033' : dest.
_<
NC>(
"\\e" );
break;
120 default : dest.
_<
NC>(c);
break;
140 return int(result.
Size() - oldSize);
150 bool lastWasSlash=
false;
152 while( idx < src.
Length() ) {
165 if( c==
'"' && (idx==1 || inQuote) ) {
170 if( !inQuote && delimiters.
IndexOf(c) >= 0 ) {
173 result.
Add( tempBuf );
182 result.
Add( tempBuf );
185 return int (result.
Size() - oldSize);
TAString & _(const TAppendable &src)
void DbgDisableBufferReplacementWarning()
constexpr integer Length() const
TChar CharAtStart() const
integer IndexOf(TChar needle, integer startIdx=0) const
TChar CharAt(integer idx) const
constexpr bool IsNotEmpty() const
TString< TChar > Substring(integer regionStart, integer regionLength=MAX_LEN) const
TSubstring & TrimStart(const TCString< TChar > &whiteSpaces=CStringConstantsTraits< TChar >::DefaultWhitespaces())
bool ConsumeCharFromEnd(TChar consumable)
integer ConsumeChars(integer regionLength, TSubstring *target=nullptr)
TSubstring & Trim(const TCString< TChar > &whiteSpaces=CStringConstantsTraits< TChar >::DefaultWhitespaces())
integer Add(const strings::TString< TChar > &src)
integer Size() const noexcept
ALIB_DLL TSubstring< TChar > & Next(lang::Whitespaces trimming=lang::Whitespaces::Trim, TChar newDelim='\0')
TLocalString< TChar, 8 > TrimChars
strings::TEscape< character > Escape
Type alias in namespace alib.
LocalString< 512 > String512
Type alias name for TLocalString<character,512>.
strings::TAString< character, lang::HeapAllocator > AString
Type alias in namespace alib.
strings::util::TTokenizer< character > Tokenizer
Type alias in namespace alib.
strings::util::TStringVector< character, MonoAllocator > StringVectorMA
Type alias in namespace alib.
lang::integer integer
Type alias in namespace alib.
strings::TString< character > String
Type alias in namespace alib.
characters::character character
Type alias in namespace alib.
LocalString< 2048 > String2K
Type alias name for TLocalString<character,2048>.
strings::TSubstring< character > Substring
Type alias in namespace alib.
virtual ALIB_DLL AString & Unescape(const String &src, AString &dest) const override
virtual ALIB_DLL int UnescapeTokens(StringVectorMA &result, const String &src, const String &delimiters) const override
virtual ALIB_DLL AString & Escape(const String &src, AString &dest, const String &delimiters) const override
virtual ALIB_DLL int EscapeTokens(StringVectorMA &result, const String &src, const String &delimiters) const override
virtual ALIB_DLL int EscapeTokens(StringVectorMA &result, const String &src, const String &delimiters) const