package no.valg.valgnatt.common;

class JsonUtil {
	// Denne koden er laget for JSON-stringer som vi har kontroll på (derfor dropper jeg en del sjekker/kontroller)
	// Finner slutten av et json-objekt

	private JsonUtil() {
	}

	static int finnObjektSluttPosisjon(String json, int objektStartPosisjon, String tabellSomUnntas) {
		int parentesTeller = 1; // vi regner at posisjonen er satt rett etter objektets første venstre krøllparentes (se metode over)
		int pos = objektStartPosisjon;
		while (parentesTeller > 0) {
			int venstreParentes = json.indexOf('{', pos);
			int høyreParentes = json.indexOf('}', pos);
			if (venstreParentes > -1 && venstreParentes < høyreParentes) {
				parentesTeller++;
				pos = venstreParentes;
			} else {
				parentesTeller--;
				pos = høyreParentes;
			}
			pos++;
		}

		//Gjør unntak for tabell, som må være til slutt i objektet. 
		if (tabellSomUnntas != null) {
			int tabellstartPos = json.indexOf("\"" + tabellSomUnntas + "\": [", objektStartPosisjon);
			tabellstartPos = json.lastIndexOf("\n", tabellstartPos);
			if (tabellstartPos > 0 && tabellstartPos < pos) {
				return tabellstartPos;
			}
		}

		return pos - 1;
	}


	// Fjerner linjeskift med etterfølgende mellomrom, erstatter dette med ett enkelt mellomrom
	static String fjernFormatering(String formatertJson, int startPos, int sluttPos) {
		String str = formatertJson.substring(startPos, sluttPos);
		return formatertJson.substring(0, startPos) + str.replaceAll("\n\\s+", " ") + formatertJson.substring(sluttPos);
	}

}
