[C++] Refactor pattern functions in strutil
diff --git a/strutil.h b/strutil.h
index d7c3785..c0d040f 100644
--- a/strutil.h
+++ b/strutil.h
@@ -79,13 +79,22 @@
StringPiece TrimSuffix(StringPiece str, StringPiece suffix);
-void AppendSubstPattern(StringPiece str, StringPiece pat, StringPiece subst,
- string* out);
+class Pattern {
+ public:
+ explicit Pattern(StringPiece pat);
-void AppendSubstRef(StringPiece str, StringPiece pat, StringPiece subst,
- string* out);
+ bool Match(StringPiece str) const;
-bool MatchPattern(StringPiece str, StringPiece pat);
+ void AppendSubst(StringPiece str, StringPiece subst, string* out) const;
+
+ void AppendSubstRef(StringPiece str, StringPiece subst, string* out) const;
+
+ private:
+ bool MatchImpl(StringPiece str) const;
+
+ StringPiece pat_;
+ size_t percent_index_;
+};
string NoLineBreak(const string& s);