/*
    Copyright (C) 2010 Tomasz Ĺšniatowski, Adam Radziszewski

    This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the Free
Software Foundation; either version 3 of the License, or (at your option)
any later version.

    This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
or FITNESS FOR A PARTICULAR PURPOSE. 

    See the LICENSE and COPYING files for more details.
*/

#include <libpwrutils/plural.h>
#include <sstream>

namespace PwrNlp {

std::string enpl(int amount, const std::string& sg)
{
	if (amount == 1) {
		return sg;
	} else {
		return sg + "s";
	}
}

std::string enpln(int amount, const std::string& sg)
{
	std::stringstream ss;
	ss << amount << " " << enpl(amount, sg);
	return ss.str();
}

std::string enpl(int amount, const std::string& sg, const std::string& pl)
{
	if (amount == 1) {
		return sg;
	} else {
		return pl;
	}
}

std::string enpln(int amount, const std::string& sg, const std::string& pl)
{
	std::stringstream ss;
	ss << amount << " " << enpl(amount, sg, pl);
	return ss.str();
}


std::string plpl(int amount, const std::string& gen0, const std::string& nom1, const std::string& acc2)
{
	if (amount == 1) {
		return nom1;
	} else {
		amount %= 100;
		if (amount > 10 && amount < 20) {
			return gen0;
		} else {
			amount %= 10;
			if (amount == 2 || amount == 3 || amount == 4) {
				return acc2;
			} else {
				return gen0;
			}
		}
	}
}

std::string plpln(int amount, const std::string& gen0, const std::string& nom1, const std::string& acc2)
{
	std::stringstream ss;
	ss << amount << " " << plpl(amount, gen0, nom1, acc2);
	return ss.str();
}

} /* end namespace PwrNlp */