diff options
author | Niko Sams <niko.sams@gmail.com> | 2010-10-04 20:46:53 +0200 |
---|---|---|
committer | Niko Sams <niko.sams@gmail.com> | 2010-10-04 20:46:53 +0200 |
commit | 605cbf99adb7393de7e029b2d326590540cf145f (patch) | |
tree | 5b1e5b1aaeab67b78e79dd96e06f2dadb1747b84 /src/ruleparser.cpp | |
parent | 01a0bb21489c7d6f019df3b8efc5cbdec7c4b443 (diff) | |
parent | a741bdb1913c28a320ff0e01518e4d39ed430289 (diff) | |
download | svn2git-605cbf99adb7393de7e029b2d326590540cf145f.tar svn2git-605cbf99adb7393de7e029b2d326590540cf145f.tar.gz svn2git-605cbf99adb7393de7e029b2d326590540cf145f.tar.bz2 svn2git-605cbf99adb7393de7e029b2d326590540cf145f.tar.xz svn2git-605cbf99adb7393de7e029b2d326590540cf145f.zip |
Merge branch 'master' of gitorious.org:svn2git/svn2git
Diffstat (limited to 'src/ruleparser.cpp')
-rw-r--r-- | src/ruleparser.cpp | 47 |
1 files changed, 44 insertions, 3 deletions
diff --git a/src/ruleparser.cpp b/src/ruleparser.cpp index 10a22ac..4ab8f08 100644 --- a/src/ruleparser.cpp +++ b/src/ruleparser.cpp @@ -22,6 +22,41 @@ #include "ruleparser.h" +RulesList::RulesList(const QString &filenames) + : m_filenames(filenames) +{ +} + +RulesList::~RulesList() {} + +void RulesList::load() +{ + foreach(const QString filename, m_filenames.split(',') ) { + qDebug() << "Loading rules from:" << filename; + Rules *rules = new Rules(filename); + m_rules.append(rules); + rules->load(); + m_allrepositories.append(rules->repositories()); + QList<Rules::Match> matchRules = rules->matchRules(); + m_allMatchRules.append( QList<Rules::Match>(matchRules)); + } +} + +const QList<Rules::Repository> RulesList::allRepositories() const +{ + return m_allrepositories; +} + +const QList<QList<Rules::Match> > RulesList::allMatchRules() const +{ + return m_allMatchRules; +} + +const QList<Rules*> RulesList::rules() const +{ + return m_rules; +} + Rules::Rules(const QString &fn) : filename(fn) { @@ -31,12 +66,12 @@ Rules::~Rules() { } -QList<Rules::Repository> Rules::repositories() +const QList<Rules::Repository> Rules::repositories() const { return m_repositories; } -QList<Rules::Match> Rules::matchRules() +const QList<Rules::Match> Rules::matchRules() const { return m_matchRules; } @@ -187,12 +222,18 @@ void Rules::load() repo = Repository(); // clear repo.name = repoLine.cap(1); repo.lineNumber = lineNumber; + repo.filename = filename; } else if (isMatchRule) { // match rule state = ReadingMatch; match = Match(); match.rx = QRegExp(matchLine.cap(1), Qt::CaseSensitive, QRegExp::RegExp2); + if( !match.rx.isValid() ) + qFatal("Malformed regular expression '%s' in file:'%s':%d, Error: %s", + qPrintable(matchLine.cap(1)), qPrintable(filename), lineNumber, + qPrintable(match.rx.errorString())); match.lineNumber = lineNumber; + match.filename = filename; } else if (isVariableRule) { QString variable = declareLine.cap(1); QString value = declareLine.cap(2); @@ -207,7 +248,7 @@ void Rules::load() #ifndef QT_NO_DEBUG_STREAM QDebug operator<<(QDebug s, const Rules::Match &rule) { - s.nospace() << rule.rx.pattern() << " (line " << rule.lineNumber << ")"; + s.nospace() << rule.info(); return s.space(); } |