+ 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;