Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
 public LettersRepositoryTests()
 {
     _lettersRepository = new LettersRepository(ConnectionString);
     _usersRepository   = new UsersRepository(ConnectionString);
 }