Chris@57: /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ Chris@57: Chris@57: /* Chris@57: EasyMercurial Chris@57: Chris@57: Based on HgExplorer by Jari Korhonen Chris@57: Copyright (c) 2010 Jari Korhonen Chris@244: Copyright (c) 2011 Chris Cannam Chris@244: Copyright (c) 2011 Queen Mary, University of London Chris@57: Chris@57: This program is free software; you can redistribute it and/or Chris@57: modify it under the terms of the GNU General Public License as Chris@57: published by the Free Software Foundation; either version 2 of the Chris@57: License, or (at your option) any later version. See the file Chris@57: COPYING included with this distribution for more information. Chris@57: */ Chris@57: Chris@43: #include "logparser.h" Chris@43: Chris@74: #include "debug.h" Chris@74: Chris@43: #include Chris@43: #include Chris@43: Chris@74: LogParser::LogParser(QString text, QString separator) : Chris@74: m_text(text), m_sep(separator) Chris@43: { Chris@43: m_text.replace("\r\n", "\n"); Chris@43: } Chris@43: Chris@43: QStringList LogParser::split() Chris@43: { Chris@43: return m_text.split("\n\n", QString::SkipEmptyParts); Chris@43: } Chris@43: Chris@43: LogList LogParser::parse() Chris@43: { Chris@43: LogList results; Chris@108: QRegExp re(QString("^(\\w+)\\s*%1\\s+([^\\s].*)$").arg(m_sep)); Chris@43: QStringList entries = split(); Chris@43: foreach (QString entry, entries) { Chris@43: LogEntry dictionary; Chris@43: QStringList lines = entry.split('\n'); Chris@43: foreach (QString line, lines) { Chris@43: if (re.indexIn(line) == 0) { Chris@43: QString key = re.cap(1); Chris@43: QString value = re.cap(2); Chris@74: dictionary[key.trimmed()] = value; Chris@43: } Chris@43: } Chris@43: results.push_back(dictionary); Chris@43: } Chris@43: return results; Chris@43: }