From a8878e1e20af471a7aa8f44db31faeb559b39979 Mon Sep 17 00:00:00 2001 From: Sasha Koshka Date: Thu, 22 Aug 2024 16:31:16 -0400 Subject: [PATCH] Add Equals method to config.Value --- config/config.go | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/config/config.go b/config/config.go index 4e2391d..711c255 100644 --- a/config/config.go +++ b/config/config.go @@ -84,12 +84,17 @@ var negativeZero = math.Copysign(0, -1) type Value interface { value () fmt.Stringer + Equals (Value) bool } // ValueString is a string value. type ValueString string var _ Value = ValueString("") func (ValueString) value () { } +func (value ValueString) Equals (other Value) bool { + other, ok := other.(ValueString) + return ok && value == other +} func (value ValueString) String () string { return fmt.Sprintf("\"%s\"", escape(string(value))) } @@ -98,6 +103,10 @@ func (value ValueString) String () string { type ValueNumber float64 var _ Value = ValueNumber(0) func (ValueNumber) value () { } +func (value ValueNumber) Equals (other Value) bool { + other, ok := other.(ValueNumber) + return ok && value == other +} func (value ValueNumber) String () string { number := float64(value) // the requirements I wrote said lossless in all cases. here's lossless @@ -133,6 +142,10 @@ func (value ValueNumber) String () string { var _ Value = ValueBool(false) type ValueBool bool func (ValueBool) value () { } +func (value ValueBool) Equals (other Value) bool { + other, ok := other.(ValueBool) + return ok && value == other +} func (value ValueBool) String () string { if value { return "true"