-#include <stdexcept>
-#include "pattern.h"
-
-using namespace std;
-
-Pattern::Pattern(const string &pat)
-{
- string::size_type percent = pat.find('%');
- if(percent==string::npos)
- throw invalid_argument("No percent sign in pattern");
- prefix = pat.substr(0, percent);
- suffix = pat.substr(percent+1);
-}
-
-string Pattern::apply(const string &body) const
-{
- string result = body;
- if(body.compare(0, prefix.size(), prefix))
- result = prefix+result;
- if(body.size()>suffix.size() && body.compare(body.size()-suffix.size(), suffix.size(), suffix))
- result += suffix;
- return result;
-}
-
-list<string> Pattern::apply_list(const list<Pattern> &patterns, const string &body)
-{
- list<string> result;
- for(list<Pattern>::const_iterator i=patterns.begin(); i!=patterns.end(); ++i)
- result.push_back(i->apply(body));
- return result;
-}