module scorpion.lang;

import std..string : split, indexOf, strip;

struct LanguageManager {

	private Lang[string] languages;

	void add(string language, string data) {
		auto ptr = language in languages;
		if(ptr) {
			(*ptr).load(data);
		} else {
			Lang lang;
			lang.load(data);
			languages[language] = lang;
		}
	}

	bool has(string language) {
		return !!(language in languages);
	}

	Lang get(string language) {
		return languages[language];
	}

	@property string defaultLanguage() {
		return "en";
	}

}

struct Lang {

	string[string] values;

	void load(string data) {
		foreach(line ; data.split("\n")) {
			immutable sep = line.indexOf("=");
			if(sep != -1) {
				immutable key = line[0..sep].strip;
				if(key.length) {
					values[key] = line[sep+1..$].strip;
				}
			}
		}
	}

	alias values this;

}