string Pattern::apply(const string &body) const
{
- return prefix+body+suffix;
+ 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)
+vector<string> Pattern::apply_list(const vector<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));
+ vector<string> result;
+ for(const Pattern &p: patterns)
+ result.push_back(p.apply(body));
return result;
}