test.diff

    commit 2b16665838c8afeaa0f065cafc747438de35876b
    Author: Volker Krause <vkrause@kde.org>
    Date:   Sat Oct 8 13:31:51 2016 +0200

        Implement dynamic DetectChar rules

        Needed for Perl highlighting.

    diff --git a/src/lib/rule.cpp b/src/lib/rule.cpp
    index f588985..c4c3b92 100644
    --- a/src/lib/rule.cpp
    +++ b/src/lib/rule.cpp
    @@ -308,12 +308,22 @@ bool DetectChar::doLoad(QXmlStreamReader& reader)
         if (s.isEmpty())
             return false;
         m_char = s.at(0);
    +    if (isDynamic()) {
    +        m_captureIndex = m_char.digitValue();
    +    }
         return true;
     }

     MatchResult DetectChar::doMatch(const QString& text, int offset, const QStringList &captures)
     {
    -    Q_UNUSED(captures); // TODO
    +    if (isDynamic()) {
    +        if (captures.size() <= m_captureIndex || captures.at(m_captureIndex).isEmpty())
    +            return offset;
    +        if (text.at(offset) == captures.at(m_captureIndex).at(0))
    +            return offset + 1;
    +        return offset;
    +    }
    +
         if (text.at(offset) == m_char)
             return offset + 1;
         return offset;
    diff --git a/src/lib/rule_p.h b/src/lib/rule_p.h
    index d8862ae..d9cedbf 100644
    --- a/src/lib/rule_p.h
    +++ b/src/lib/rule_p.h
    @@ -103,6 +103,7 @@ protected:

     private:
         QChar m_char;
    +    int m_captureIndex;
     };

     class Detect2Char : public Rule