aboutsummaryrefslogtreecommitdiffstats
path: root/src/ruleparser.h
diff options
context:
space:
mode:
authorModestas Vainius <modestas@vainius.eu>2011-04-24 22:46:23 +0300
committerModestas Vainius <modestas@vainius.eu>2011-04-24 22:46:23 +0300
commitc630dd763cf6ec096489bea551ca959540969c94 (patch)
tree64cfc7d592950bb22167892760aa74e322066042 /src/ruleparser.h
parent197979b6a641b8b5fa4856c700b1235491c73a41 (diff)
downloadsvn2git-c630dd763cf6ec096489bea551ca959540969c94.tar
svn2git-c630dd763cf6ec096489bea551ca959540969c94.tar.gz
svn2git-c630dd763cf6ec096489bea551ca959540969c94.tar.bz2
svn2git-c630dd763cf6ec096489bea551ca959540969c94.tar.xz
svn2git-c630dd763cf6ec096489bea551ca959540969c94.zip
Support substitutions for repository/branch names.
This patch adds support for 's///' style substitutions for the repository/branch names in the match rulesets. Useful when e.g. eliminating characters not supported in git branch names. Syntax: match /... repository some_repo substitute repository s/pattern/replacement/ branch some_branch substitute branch s/pattern/replacement/ end match
Diffstat (limited to 'src/ruleparser.h')
-rw-r--r--src/ruleparser.h11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/ruleparser.h b/src/ruleparser.h
index 9d21937..26dfa72 100644
--- a/src/ruleparser.h
+++ b/src/ruleparser.h
@@ -57,9 +57,19 @@ public:
struct Match : Rule
{
+ struct Substitution {
+ QRegExp pattern;
+ QString replacement;
+
+ bool isValid() { return !pattern.isEmpty(); }
+ QString& apply(QString &string) { return string.replace(pattern, replacement); }
+ };
+
QRegExp rx;
QString repository;
+ QList<Substitution> repo_substs;
QString branch;
+ QList<Substitution> branch_substs;
QString prefix;
int minRevision;
int maxRevision;
@@ -83,6 +93,7 @@ public:
const QList<Repository> repositories() const;
const QList<Match> matchRules() const;
+ Match::Substitution parseSubstitution(const QString &string);
void load();
private: