コード例 #1
0
ファイル: syntax.cpp プロジェクト: PhE/antimony
void SyntaxHighlighter::highlightBlock(const QString& text)
{
    for (auto r : rules)
    {
        auto iter = r.first.globalMatch(text);
        while (iter.hasNext())
        {
            auto match = iter.next();
            auto index = match.lastCapturedIndex();
            setFormat(match.capturedStart(index),
                      match.capturedLength(index),
                      r.second);
        }
    }
}
コード例 #2
0
/**
 * @brief prepend the match string with specify symbol
 * @param input string need to prepend symbol
 * @param number_length the length of the number, will prepend symbol
 * if the length smaller than this number
 * @param symbol symbol prepand before the number
 * @return the name after alter
 * @example ex : number_length == 3, reg = (\\d+), symbol = '0'
 * then "1" == "001", "10" == "010"
 * ex : number_length == 2, reg = (\\d+), symbol = '0'
 * then "1" == "01", "10" == "10"
 */
QString prepend_symbol_on_match(QString const &input, int number_length,
                                QRegularExpression const &reg,
                                QChar symbol)
{    
    auto new_file_name = input;
    auto match = reg.match(new_file_name);

    if(match.hasMatch()){
        auto const Captured = match.captured(0);
        if(Captured.size() < number_length){
            new_file_name.insert(match.capturedStart(0),
                                 QString(number_length - match.capturedLength(1),
                                         symbol));
        }
    }

    return new_file_name;
}
コード例 #3
0
void ItemSourceHighlighter::highlightBlock(const QString& text)
{
   //
   // Apply matching highlighting rules.
   //

   for (const auto& rule : rules_)
   {
      for (const auto& expression : rule.expressions)
      {
         auto matches = expression.globalMatch(text);
         while (matches.hasNext() == true)
         {
            auto match = matches.next();

            setFormat(match.capturedStart(1), match.capturedLength(1), rule.format);
         }
      }
   }
}
コード例 #4
0
const QString clearHTMLTags(const QString &text)
{
    const QRegularExpression regex("<(\\w+)[^>]*>([^<]*)</\\1>");

    QString ret = text;
    do
    {
        const auto match = regex.match(ret);
        if (!match.isValid() || !match.hasMatch())
            break;

        const int start = match.capturedStart();
        const int len = match.capturedLength();
        const QString &cap = match.captured(2);

        ret.replace(start, len, cap);
    } while (true);

    return ret;
}