package units

// percentConverter is a converter for percent unit.
type percentConverter struct{}

func NewPercentConverter() Converter {
	return &percentConverter{}
}

func (*percentConverter) Name() string {
	return "percent"
}

func FromPercentUnit(u Unit) float64 {
	switch u {
	case "percent", "%":
		return 1
	case "percentunit":
		return 100
	default:
		return 1
	}
}

func (c *percentConverter) Convert(v Value, to Unit) Value {
	return Value{
		F: v.F * FromPercentUnit(v.U) / FromPercentUnit(to),
		U: to,
	}
}
