Clone::Clone(const vector<Directive *> &subdirectives)
: subdirectives(subdirectives) {}
-
+
+Clone::Clone(const vector<Substitute *> &subdirectives_subs)
+{
+ for (auto it : subdirectives_subs) {
+ subdirectives.push_back(static_cast<Directive *>(it));
+ }
+}
+
Clone::Clone(initializer_list<Directive *> subdirectives)
: subdirectives(subdirectives) {}
clean_node(node);
}
}
+
+Alternate::Alternate(const string &attribute,
+ const vector<Substitute *> &subdirectives_subs,
+ const vector<string> &alternatives)
+ : Clone(subdirectives_subs)
+{
+ for (unsigned ix = 0; ix < subdirectives_subs.size(); ++ix) {
+ string value = alternatives[ix % alternatives.size()];
+ subdirectives_subs[ix]->substitution_map.insert(make_pair(
+ attribute,
+ new Replace { value }));
+ }
+}
Substitute::Substitute(const unordered_map<string, Directive*> &substitution_map)
: substitution_map(substitution_map) {}