pgLab/pglablib/codebuilder/StringEscapeRule.h

48 lines
1.3 KiB
C
Raw Normal View History

#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