rendered paste bodyThe regex's as they currently exist:
const QString KGameSvgDocumentPrivate::WSP = QString("\\s");
const QString KGameSvgDocumentPrivate::WSP_ASTERISK = QString(WSP + '*');
const char KGameSvgDocumentPrivate::COMMA = ',';
const QString KGameSvgDocumentPrivate::COMMA_WSP = QString("((" + WSP + '+' + COMMA + '?' + WSP + "*)|(" + COMMA + WSP + "*))");
const QString KGameSvgDocumentPrivate::NUMBER = QString("(([-|\\+]?\\d+(\\.)*\\d*(e)?[-|\\+]?\\d*)|([-|\\+]?(\\.)+\\d*(e)?[-|\\+]?\\d*))");
const QString KGameSvgDocumentPrivate::OPEN_PARENS = QString("\\(");
const QString KGameSvgDocumentPrivate::CLOSE_PARENS = QString("\\)");
const QString KGameSvgDocumentPrivate::MATRIX = QString("matrix" + WSP_ASTERISK + OPEN_PARENS + WSP_ASTERISK + NUMBER + COMMA_WSP + NUMBER + COMMA_WSP + NUMBER + COMMA_WSP + NUMBER + COMMA_WSP + NUMBER + COMMA_WSP + NUMBER + WSP_ASTERISK + CLOSE_PARENS);
const QString KGameSvgDocumentPrivate::TRANSLATE = QString("translate" + WSP_ASTERISK + OPEN_PARENS + WSP_ASTERISK + NUMBER + "(?:" + COMMA_WSP + NUMBER + ")?" + WSP_ASTERISK + CLOSE_PARENS);
const QString KGameSvgDocumentPrivate::SCALE = QString("scale" + WSP_ASTERISK + OPEN_PARENS + WSP_ASTERISK + NUMBER + "(?:" + COMMA_WSP + NUMBER + ")?" + WSP_ASTERISK + CLOSE_PARENS);
const QString KGameSvgDocumentPrivate::ROTATE = QString("rotate" + WSP_ASTERISK + OPEN_PARENS + WSP_ASTERISK + NUMBER + "(?:" + COMMA_WSP + NUMBER + COMMA_WSP + NUMBER + ")?" + WSP_ASTERISK + CLOSE_PARENS);
const QString KGameSvgDocumentPrivate::SKEW_X = QString("skewX" + WSP_ASTERISK + OPEN_PARENS + WSP_ASTERISK + NUMBER + WSP_ASTERISK + CLOSE_PARENS);
const QString KGameSvgDocumentPrivate::SKEW_Y = QString("skewY" + WSP_ASTERISK + OPEN_PARENS + WSP_ASTERISK + NUMBER + WSP_ASTERISK + CLOSE_PARENS);
const QString KGameSvgDocumentPrivate::TRANSFORM = QString("(?:" + MATRIX + "|" + TRANSLATE + "|" + SCALE + "|" + ROTATE + "|" + SKEW_X + "|" + SKEW_Y + ")");
const QString KGameSvgDocumentPrivate::TRANSFORMS = QString("(?:" + TRANSFORM + "|" + "(?:" + TRANSFORM + COMMA_WSP + "+)*" + TRANSFORM + ")");
The unit tests that validate them:
QRegExp rx;
// rx.setPattern(m_svgDom.d->WSP);
rx.setPattern(wsp);
QVERIFY(rx.isValid());
QVERIFY(rx.exactMatch(" "));
QVERIFY(!rx.exactMatch(""));
rx.setPattern(wsp_asterisk);
QVERIFY(rx.isValid());
QVERIFY(rx.exactMatch(" "));
QVERIFY(rx.exactMatch(""));
QVERIFY(rx.exactMatch(" "));
QVERIFY(rx.exactMatch(" "));
rx.setPattern(comma);
QVERIFY(rx.isValid());
QVERIFY(rx.exactMatch(","));
QVERIFY(!rx.exactMatch(""));
QVERIFY(!rx.exactMatch(" , "));
rx.setPattern(comma_wsp);
QVERIFY(rx.isValid());
// qDebug () << comma_wsp;
QVERIFY(rx.exactMatch(" ,"));
QVERIFY(rx.exactMatch(" , "));
QVERIFY(rx.exactMatch(" "));
QVERIFY(rx.exactMatch(", "));
QVERIFY(rx.exactMatch(","));
QVERIFY(rx.exactMatch(" , "));
QVERIFY(rx.exactMatch(" , "));
rx.setPattern(number);
QVERIFY(rx.isValid());
QVERIFY(rx.exactMatch("6"));
QVERIFY(rx.exactMatch("64"));
QVERIFY(rx.exactMatch("5.2"));
QVERIFY(rx.exactMatch("0.003"));
QVERIFY(rx.exactMatch("5.1234e9"));
QVERIFY(rx.exactMatch("5.1234e-9"));
QVERIFY(rx.exactMatch("5.1234e-09"));
QVERIFY(rx.exactMatch("-6"));
QVERIFY(rx.exactMatch("+5.2"));
QVERIFY(rx.exactMatch("-0.003"));
QVERIFY(rx.exactMatch("-5.1234e9"));
QVERIFY(rx.exactMatch("5.186907e-2"));
QVERIFY(rx.exactMatch("-5.1234e-09"));
QVERIFY(rx.exactMatch("444.71799"));
QVERIFY(rx.exactMatch("16.30829"));
QVERIFY(rx.exactMatch("0"));
QVERIFY(rx.exactMatch("00002"));
QVERIFY(rx.exactMatch(".00002"));
rx.setPattern(openParens);
QVERIFY(rx.isValid());
QVERIFY(rx.exactMatch("("));
QVERIFY(!rx.exactMatch(""));
QVERIFY(!rx.exactMatch("( "));
rx.setPattern(closeParens);
QVERIFY(rx.isValid());
QVERIFY(rx.exactMatch(")"));
QVERIFY(!rx.exactMatch(""));
QVERIFY(!rx.exactMatch(") "));
rx.setPattern(matrix);
QVERIFY(rx.isValid());
QVERIFY(rx.exactMatch("matrix(1,0,0,1,0,0)"));
QVERIFY(rx.exactMatch("matrix(5.186907e-2,0,0,5.186907e-2,444.71799,16.30829)"));
QVERIFY(rx.exactMatch("matrix ( 5.186907e-2, 0,0, 5.186907e-2,444.71799,16.30829)"));
QVERIFY(rx.exactMatch("matrix ( +5.186907e-2, 0 ,0, -5.186907e-2,444.71799, 16.30829)"));
QVERIFY(!rx.exactMatch("matrix ( -5.186907e-2, 0 , -5.186907e-2,444.71799, 16.30829)"));
QVERIFY(!rx.exactMatch("matrix ( +5.186907e-2, 0 ,0,, -5.186907e-2,444.71799, 16.30829)"));
QVERIFY(rx.exactMatch("matrix ( +.5186907e-2, 0 ,0, -5.186907e-2,444.71799, 16.30829)"));
rx.setPattern(translate);
QVERIFY(rx.isValid());
QVERIFY(rx.exactMatch("translate(10)"));
QVERIFY(rx.exactMatch("translate(-10.2345)"));
QVERIFY(rx.exactMatch("translate(10, 23)"));
QVERIFY(rx.exactMatch("translate(10 , -.765)"));
QVERIFY(!rx.exactMatch("translate(10 , -.765.0)"));
QVERIFY(!rx.exactMatch("translate(10 , ,-.7650)"));
rx.setPattern(scale);
QVERIFY(rx.isValid());
QVERIFY(rx.exactMatch("scale(10)"));
QVERIFY(rx.exactMatch("scale(-10.2345)"));
QVERIFY(rx.exactMatch("scale(10, 23)"));
QVERIFY(rx.exactMatch("scale(10 , -.765)"));
QVERIFY(!rx.exactMatch("scale(10 , -.765.0)"));
QVERIFY(!rx.exactMatch("scale(10 , ,-.7650)"));
rx.setPattern(rotate);
QVERIFY(rx.isValid());
QVERIFY(rx.exactMatch("rotate(45)"));
QVERIFY(rx.exactMatch("rotate(-26.765)"));
QVERIFY(rx.exactMatch("rotate(-26.765, 10, 20)"));
QVERIFY(rx.exactMatch("rotate(-26.765, 60, .20)"));
QVERIFY(rx.exactMatch("rotate(-26.765, -10, 2.0)"));
QVERIFY(!rx.exactMatch("rotate(-26.765, -10)"));
rx.setPattern(skewX);
QVERIFY(rx.isValid());
QVERIFY(rx.exactMatch("skewX(10)"));
QVERIFY(rx.exactMatch("skewX(-210)"));
QVERIFY(rx.exactMatch("skewX(+10.123456)"));
QVERIFY(rx.exactMatch("skewX(0.00000345)"));
rx.setPattern(skewY);
QVERIFY(rx.isValid());
QVERIFY(rx.exactMatch("skewY(10)"));
QVERIFY(rx.exactMatch("skewY(-210)"));
QVERIFY(rx.exactMatch("skewY(+10.12346e4)"));
QVERIFY(rx.exactMatch("skewY(-0.00000345)"));
rx.setPattern(transform);
QVERIFY(rx.isValid());
QVERIFY(rx.exactMatch("matrix(5.186907e-2,0,0,5.186907e-2,444.71799,16.30829)"));
QVERIFY(rx.exactMatch("translate(10, 23)"));
QVERIFY(rx.exactMatch("scale(10 , -.765)"));
QVERIFY(rx.exactMatch("rotate(-26.765, 60, .20)"));
QVERIFY(rx.exactMatch("skewX(+10.123456)"));
QVERIFY(rx.exactMatch("skewY(-0.00000345)"));
QVERIFY(rx.exactMatch("skewY(-0.00000345)"));
rx.setPattern(transforms);
QVERIFY(rx.isValid());
QVERIFY(rx.exactMatch("matrix(5.186907e-2,0,0,5.186907e-2,444.71799,16.30829)"));
QVERIFY(rx.exactMatch("rotate(-26.765, 60, .20)"));
QVERIFY(rx.exactMatch("translate(-10,-20) scale(2) rotate(45) translate(5,10)"));
QVERIFY(rx.exactMatch("translate(-10,-20), scale(2),rotate(45) translate(5,10), matrix(1,2,3,4,5,6)"));