public ActionResult Index(ReadabilityInput_vm model)
        {
            //throw an if statement about ModelState.IsValid property
            if (string.IsNullOrWhiteSpace(model.InputText))
            {
                ModelState.AddModelError("InputText", "Silly Rabbit. Empty text boxes are for kids!");
                return(View(model));
            }


            var    wordCountFinder     = Regex.Matches(model.InputText, @"\b[^\s]+\b");
            double wordCount           = wordCountFinder.Count;
            var    sentenceCountFinder = Regex.Matches(model.InputText, @"\s+[^.!?]*[.!?]");
            double sentenceCount       = sentenceCountFinder.Count;
            var    syllableCountFinder = Regex.Matches(model.InputText, @"[aeiouy]+?\w*?[^e]");
            double syllableCount       = syllableCountFinder.Count;

            double readingLevel = .39 * (wordCount / sentenceCount)
                                  + 11.8 * (syllableCount / wordCount)
                                  - 15.59;

            var viewModel = new ReadabilityResults_vm()
            {
                InputText = model.InputText,
                Words     = Convert.ToString(wordCount),
                Sentences = Convert.ToString(sentenceCount),
                Syllables = Convert.ToString(syllableCount),
                Score     = Convert.ToString(readingLevel)
            };

            return(View("ReadabilityResults", viewModel));
        }
Esempio n. 2
0
        public ActionResult Index(ReadabilityInput_vm model, string btnSubmit)
        {
            if (string.IsNullOrWhiteSpace(model.InputText))
            {
                ModelState.AddModelError("InputText", "Text cannot be empty or white space.");
            }
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            ReadabilityResults_vm viewModel = new ReadabilityResults_vm();


            switch (btnSubmit)
            {
            case "Flesch Reading Ease":

                var readingScore = new FleschReadingEase(model.InputText);

                viewModel.InputText          = model.InputText;
                viewModel.NumberOfWords      = Convert.ToString(readingScore.NumberOfWords);
                viewModel.NumberOfSentences  = Convert.ToString(readingScore.NumberOfSentences);
                viewModel.NumberOfSyllables  = Convert.ToString(readingScore.NumberOfSyllables);
                viewModel.NumberOfCharacters = Convert.ToString(readingScore.NumberOfCharacters);
                viewModel.ReadabilityScore   = Convert.ToString(readingScore.ReadingScore);
                ViewData["IndexUsed"]        = "Flesch Reading Ease";

                break;

            case "Flesch Kincaid Grade Level":
                var readingScore2 = new FleschKincaidGradeLevel(model.InputText);

                viewModel.InputText          = model.InputText;
                viewModel.NumberOfWords      = Convert.ToString(readingScore2.NumberOfWords);
                viewModel.NumberOfSentences  = Convert.ToString(readingScore2.NumberOfSentences);
                viewModel.NumberOfSyllables  = Convert.ToString(readingScore2.NumberOfSyllables);
                viewModel.NumberOfCharacters = Convert.ToString(readingScore2.NumberOfCharacters);
                viewModel.ReadabilityScore   = Convert.ToString(readingScore2.ReadingScore);
                ViewData["IndexUsed"]        = "Flesch Kincaid Grade Level";

                break;

            case "Automated Readability Index":
                var readingScore3 = new AutomatedReadabilityIndex(model.InputText);

                viewModel.InputText          = model.InputText;
                viewModel.NumberOfWords      = Convert.ToString(readingScore3.NumberOfWords);
                viewModel.NumberOfSentences  = Convert.ToString(readingScore3.NumberOfSentences);
                viewModel.NumberOfSyllables  = Convert.ToString(readingScore3.NumberOfSyllables);
                viewModel.NumberOfCharacters = Convert.ToString(readingScore3.NumberOfCharacters);
                viewModel.ReadabilityScore   = Convert.ToString(readingScore3.ReadingScore);
                ViewData["IndexUsed"]        = "Automated Readability Index";

                break;

            case "Coleman-Liau Index":
                var readingScore4 = new ColemanLiauIndex(model.InputText);

                viewModel.InputText          = model.InputText;
                viewModel.NumberOfWords      = Convert.ToString(readingScore4.NumberOfWords);
                viewModel.NumberOfSentences  = Convert.ToString(readingScore4.NumberOfSentences);
                viewModel.NumberOfSyllables  = Convert.ToString(readingScore4.NumberOfSyllables);
                viewModel.NumberOfCharacters = Convert.ToString(readingScore4.NumberOfCharacters);
                viewModel.ReadabilityScore   = Convert.ToString(readingScore4.ReadingScore);
                ViewData["IndexUsed"]        = "Coleman-Liau Index";

                break;

            default:
                break;
            }


            return(View("ReadabilityResults", viewModel));
        }