#include #include #include #include #include namespace newsbeuter { filtercontainer::~filtercontainer() { } void filtercontainer::handle_action(const std::string& action, const std::vector& params) { /* * filtercontainer does nothing but to save (filter name, filter expression) tuples. * These tuples are used for enabling the user to predefine filter expressions and * then select them from a list by their name. */ if (action == "define-filter") { if (params.size() < 2) throw confighandlerexception(AHS_TOO_FEW_PARAMS); matcher m; if (!m.parse(params[1])) throw confighandlerexception(utils::strprintf(_("couldn't parse filter expression `%s': %s"), params[1].c_str(), m.get_parse_error().c_str())); filters.push_back(filter_name_expr_pair(params[0],params[1])); } else throw confighandlerexception(AHS_INVALID_COMMAND); } void filtercontainer::dump_config(std::vector& config_output) { for (std::vector::iterator it=filters.begin();it!=filters.end();it++) { config_output.push_back(utils::strprintf("define-filter %s %s", utils::quote(it->first).c_str(), utils::quote(it->second).c_str())); } } }