static Vector<std::pair<int, String>> getRegularExpressionMatchesByLines(const RegularExpression& regex, const String& text) { Vector<std::pair<int, String>> result; if (text.isEmpty()) return result; OwnPtr<Vector<size_t>> endings(lineEndings(text)); size_t size = endings->size(); unsigned start = 0; for (size_t lineNumber = 0; lineNumber < size; ++lineNumber) { size_t lineEnd = endings->at(lineNumber); String line = text.substring(start, lineEnd - start); if (line.endsWith('\r')) line = line.left(line.length() - 1); int matchLength; if (regex.match(line, 0, &matchLength) != -1) result.append(std::pair<int, String>(lineNumber, line)); start = lineEnd + 1; } return result; }
static Vector<pair<int, String> > getScriptRegexpMatchesByLines(const ScriptRegexp* regex, const String& text) { Vector<pair<int, String> > result; if (text.isEmpty()) return result; OwnPtr<Vector<unsigned> > endings(lineEndings(text)); unsigned size = endings->size(); unsigned start = 0; for (unsigned lineNumber = 0; lineNumber < size; ++lineNumber) { unsigned lineEnd = endings->at(lineNumber); String line = text.substring(start, lineEnd - start); if (line.endsWith('\r')) line = line.left(line.length() - 1); int matchLength; if (regex->match(line, 0, &matchLength) != -1) result.append(pair<int, String>(lineNumber, line)); start = lineEnd + 1; } return result; }
static Vector<std::pair<size_t, String>> getRegularExpressionMatchesByLines(const RegularExpression& regex, const String& text) { Vector<std::pair<size_t, String>> result; if (text.isEmpty()) return result; auto endings = lineEndings(text); size_t size = endings.size(); size_t start = 0; for (size_t lineNumber = 0; lineNumber < size; ++lineNumber) { size_t nextStart = endings[lineNumber]; String line = text.substring(start, nextStart - start); int matchLength; if (regex.match(line, 0, &matchLength) != -1) result.append(std::pair<size_t, String>(lineNumber, line)); start = nextStart; } return result; }
void BisonCSSParser::ensureLineEndings() { if (!m_lineEndings) m_lineEndings = lineEndings(*m_source); }