Ejemplo n.º 1
0
 public Syllable(string value, string transliteration, SyllabaryType syllabaryType)
 {
     Value           = value;
     Transliteration = transliteration;
     SyllabaryType   = syllabaryType;
     IsActive        = true;
 }
Ejemplo n.º 2
0
        public static (string, string) GeneratePracticeTextWithHint(Dictionary <SyllabaryParts, bool> selectedParts, SyllabaryType selectedType)
        {
            // source data stuff
            var selectedSyllabels = new List <KeyValuePair <string, string> >();
            var selectedSyllabary = new Dictionary <SyllabaryParts, Dictionary <string, string> >();

            switch (selectedType)
            {
            case SyllabaryType.Hiragana:
                selectedSyllabary = Hiragana.Syllables;
                break;

            case SyllabaryType.Katakana:
                selectedSyllabary = Katakana.Syllables;
                break;
            }

            selectedSyllabels = selectedSyllabary
                                .Where(entry => selectedParts.GetValueOrDefault(entry.Key))
                                .SelectMany(partEntry => partEntry.Value)
                                .ToList();

            if (selectedSyllabels.Count() == 0)
            {
                return(String.Empty, String.Empty);
            }

            // generated stuff

            StringBuilder output = new StringBuilder();
            StringBuilder hint   = new StringBuilder();

            Random rnd = new Random((int)DateTime.Now.Ticks);

            var maxSyllabsInWord = 4;
            var syllabsInWord    = 0;

            for (int i = 0; i < 256; i++)
            {
                var sylab = selectedSyllabels.ElementAt(rnd.Next(0, selectedSyllabels.Count() - 1));

                output.Append(sylab.Key);
                hint.Append(sylab.Value);
                syllabsInWord++;

                if (rnd.Next(0, 4) % 4 == 0 || syllabsInWord >= maxSyllabsInWord)
                {
                    output.Append(' ');
                    hint.Append("&nbsp;&nbsp;&nbsp;&nbsp;");
                    syllabsInWord = 0;
                }
            }

            return(output.ToString(), hint.ToString());
        }