6 Pattern::Pattern(const string &pat)
8 string::size_type percent = pat.find('%');
9 if(percent==string::npos)
10 throw invalid_argument("No percent sign in pattern");
11 prefix = pat.substr(0, percent);
12 suffix = pat.substr(percent+1);
15 string Pattern::apply(const string &body) const
18 if(body.compare(0, prefix.size(), prefix))
19 result = prefix+result;
20 if(body.size()<=suffix.size() || body.compare(body.size()-suffix.size(), suffix.size(), suffix))
25 list<string> Pattern::apply_list(const list<Pattern> &patterns, const string &body)
28 for(list<Pattern>::const_iterator i=patterns.begin(); i!=patterns.end(); ++i)
29 result.push_back(i->apply(body));