All pastes #430147 Raw Edit

Mine

public text v1 · immutable
·published 2007-04-08 19:38 UTC
rendered paste body
The 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)"));