public static Language Load(LettersRepository lettersDb) { List <char>[] groups = { lettersDb.Vowels, lettersDb.Consonants, lettersDb.Silents }; (int minLetter, int maxLetter) = groups .SelectMany(group => group) .Aggregate( (min: (int)char.MaxValue, max: (int)char.MinValue), (a, l) => (Math.Min(a.min, l), Math.Max(a.max, l))); Language language = new(minLetter, maxLetter); GraphemeType[] types = { GraphemeType.Vowel, GraphemeType.Consonant, GraphemeType.Silent }; int identifier = 0; // Значение по-умолчанию -1, указывает на то что идентификатора для символа нет for (int i = 0; i < language.identifiersByChar.Length; i++) { language.identifiersByChar[i] = -1; } foreach ((IEnumerable <char> letters, GraphemeType type) in groups.Zip(types)) { foreach (char letter in letters) { Grapheme g = new(type, letter.ToString()); language.graphemesByIdentifier[identifier] = g; language.charsByIdentifier[identifier] = letter; language.graphemesByChar[letter - minLetter] = g; language.identifiersByChar[letter - minLetter] = identifier++; } } return(language); }
public LettersRepositoryTests() { _lettersRepository = new LettersRepository(ConnectionString); _usersRepository = new UsersRepository(ConnectionString); }