#include "matcherexception.h"

#include "config.h"
#include "ruststring.h"
#include "strprintf.h"

namespace newsboat {

const char* MatcherException::what() const throw()
{
	static std::string errmsg;
	switch (type_) {
	case Type::ATTRIB_UNAVAIL:
		errmsg = strprintf::fmt(
				_("attribute `%s' is not available."), addinfo);
		break;
	case Type::INVALID_REGEX:
		errmsg = strprintf::fmt(
				_("regular expression '%s' is invalid: %s"),
				addinfo,
				addinfo2);
		break;
	}
	return errmsg.c_str();
}

MatcherException MatcherException::from_rust_error(MatcherErrorFfi error)
{
	const std::string info_ = RustString(error.info);
	const std::string info2_ = RustString(error.info2);
	return MatcherException(error.type, info_, info2_);
}

} // namespace newsboat
