From b0ce091283db9b0be892a2f9a03f8c230b24b1d8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?France=CC=81=20Wilke?= <francewilke@gmail.com>
Date: Fri, 12 Nov 2021 06:58:54 +0200
Subject: [PATCH] Add shared `CleanZone` to map zone name/codes

---
 address_utils/address_utils.go | 67 ++++++++++++++++++++++++++++++++++
 1 file changed, 67 insertions(+)

diff --git a/address_utils/address_utils.go b/address_utils/address_utils.go
index f8c5556..3144653 100644
--- a/address_utils/address_utils.go
+++ b/address_utils/address_utils.go
@@ -72,3 +72,70 @@ func stripUnwantedCharacters(s string) string {
 
 	return s
 }
+
+func CleanZone(oldCountry, oldZone *string) (newCountry, newZone *string) {
+	// Google zones
+	/*
+		"long_name": "KwaZulu-Natal",
+		"short_name": "KZN",
+
+		"long_name": "Gauteng",
+		"short_name": "GP",
+
+		"long_name": "Free State",
+		"short_name": "FS",
+
+		"long_name": "Limpopo",
+		"short_name": "LP",
+
+		"long_name": "Mpumalanga",
+		"short_name": "MP",
+
+		"long_name": "North West",
+		"short_name": "NW",
+
+		"long_name": "Western Cape",
+		"short_name": "WC",
+
+		"long_name": "Eastern Cape",
+		"short_name": "EC",
+
+		"long_name": "Northern Cape",
+		"short_name": "NC",
+	*/
+
+	newCountry = oldCountry
+	if oldCountry == nil || *oldCountry == "South Africa" || len(*oldCountry) == 0 {
+		defaultCountry := "ZA"
+		newCountry = &defaultCountry
+	}
+
+	if *newCountry == "ZA" && oldZone != nil {
+		zone := *oldZone
+		// Gauteng - GT from uAfrica should be GP for Google
+		if zone == "GT" {
+			zone = "GP"
+		} else if zone == "NT" {
+			zone = "KZN"
+		}
+
+		zone = string_utils.ReplaceCaseInsensitive(zone, "KwaZulu-Natal", "KZN")
+		zone = string_utils.ReplaceCaseInsensitive(zone, "KwaZulu Natal", "KZN")
+		zone = string_utils.ReplaceCaseInsensitive(zone, "Gauteng", "GP")
+		zone = string_utils.ReplaceCaseInsensitive(zone, "Freestate", "FS")
+		zone = string_utils.ReplaceCaseInsensitive(zone, "Free State", "FS")
+		zone = string_utils.ReplaceCaseInsensitive(zone, "Limpopo", "LP")
+		zone = string_utils.ReplaceCaseInsensitive(zone, "Mpumalanga", "MP")
+		zone = string_utils.ReplaceCaseInsensitive(zone, "North West", "NW")
+		zone = string_utils.ReplaceCaseInsensitive(zone, "Eastern Cape", "EC")
+		zone = string_utils.ReplaceCaseInsensitive(zone, "Western Cape", "WC")
+		zone = string_utils.ReplaceCaseInsensitive(zone, "Northern Cape", "NC")
+		zone = string_utils.ReplaceCaseInsensitive(zone, "Eastern-Cape", "EC")
+		zone = string_utils.ReplaceCaseInsensitive(zone, "Western-Cape", "WC")
+		zone = string_utils.ReplaceCaseInsensitive(zone, "Northern-Cape", "NC")
+
+		newZone = &zone
+	}
+
+	return
+}
-- 
GitLab