47 lines
1.3 KiB
C++
47 lines
1.3 KiB
C++
#ifndef STRINGESCAPERULE_H
|
|
#define STRINGESCAPERULE_H
|
|
|
|
#include <QString>
|
|
#include <boost/optional.hpp>
|
|
|
|
enum class ConvertToNumericEscape {
|
|
Utf8, ///< Generates upto four escapes for 4 utf8 chars
|
|
Utf16, ///< Generates upto four escapes for 2 utf16 chars
|
|
Utf32, ///< Generates a single escape for the unicode codepoint
|
|
};
|
|
|
|
|
|
enum class NumericEscapeFormat {
|
|
Decimal,
|
|
HexUpper,
|
|
HexLower
|
|
};
|
|
|
|
class CharToNumericConversion {
|
|
public:
|
|
ConvertToNumericEscape m_toNumericEscape;
|
|
NumericEscapeFormat m_numericEscapeFormat;
|
|
int m_minNumericDigits, m_maxNumericDigits;
|
|
};
|
|
|
|
/** The basic method of applying a StringEscapeRule is to find all matches
|
|
* in the string for the m_matchRegex.
|
|
*
|
|
* if m_numericConversion is set then the match is taken out of the string and replaced
|
|
* with one or more numerical escapes.
|
|
* if no conversion is needed the match is simple prefixed with m_prefixWidth
|
|
*/
|
|
class StringEscapeRule {
|
|
public:
|
|
/** Regular expression that finds characters in the string that need replacing.
|
|
* Each character to replace should always generate one match.
|
|
*/
|
|
QString m_matchRegex;
|
|
/** As often a simple escape character like \ or a doubling scheme is used this
|
|
* field often provides enough flexibility.
|
|
*/
|
|
QString m_prefixWith;
|
|
// boost::optional<CharToNumericConversion> m_numericConversion;
|
|
};
|
|
|
|
#endif // STRINGESCAPERULE_H
|