Exemplo n.º 1
0
        public IEnumerable <string> Analyze()
        {
            string error = string.Empty;
            Dictionary <string, int> result = new Dictionary <string, int>();

            try
            {
                result = wordCounter.CountWords(bookLoader.Load(bookPath));
            }
            catch (FileNotFoundException)
            {
                error = "could not find file: " + bookPath;
            }
            catch (DirectoryNotFoundException)
            {
                error = "could not find directory containing file: " + bookPath;
            }
            catch (Exception e)
            {
                error = e.Message;
            }
            if (error.Length > 0)
            {
                yield return(error);
            }
            else
            {
                foreach (var kvp in result.OrderBy(a => a.Value))
                {
                    yield return(string.Format("Word: {0}, Count: {1}, Prime? {2}", kvp.Key, kvp.Value, primeTester.IsPrime(kvp.Value) ? "Yes" : "No"));
                }
            }
        }
Exemplo n.º 2
0
        public void CalculateAndUpdateWordCount(string text)
        {
            var words     = textSplitter.SanitizeAndSplitIntoWords(text);
            var wordCount = wordCounter.CountWords(words);

            foreach (var kvp in wordCount)
            {
                var existingWord = countedWords.SingleOrDefault(cw => cw.Word.Equals(kvp.Key));
                if (existingWord == null)
                {
                    existingWord = new CountedWord {
                        Word = kvp.Key, Count = kvp.Value
                    };
                    countedWords.Add(existingWord);
                }
                else
                {
                    existingWord.Count += kvp.Value;
                }

                bool isPrime;
                if (!primeCheckResults.TryGetValue(existingWord.Count, out isPrime))
                {
                    isPrime = primeChecker.IsPrime(existingWord.Count);
                    primeCheckResults[existingWord.Count] = isPrime;
                }

                existingWord.IsPrime = isPrime;
            }
        }
Exemplo n.º 3
0
        public IList <KeyValuePair <string, int> > CountTopWords(string source, int top)
        {
            var text     = textReader.SourceText(source);
            var words    = textWordCounter.CountWords(text);
            var topWords = words.OrderByDescending(x => x.Value).Take(top);

            return(topWords.ToList());
        }
Exemplo n.º 4
0
 public Result Layout(string inputPath, string outputPath)
 {
     return(parser.ParseFile(inputPath)
            .Then(parsed => wordCounter.CountWords(parsed))
            .Then(countDict => translator.TranslateWordsToSizedWords(countDict))
            .Then(translated => layouter.LayoutWords(translated))
            .Then(rectangles => visualizer.Visualize(rectangles, outputPath))
            .RefineError("Cannot layout:"));
 }
Exemplo n.º 5
0
 public Result <List <Word> > GetWords(List <string> text, int topNWords,
                                       int minWordLength, int minFontSize, int maxFontSize, string fontFamily)
 {
     return(textAnalyzer.GetWords(text, minWordLength)
            .Then(words => wordConverters.Aggregate(words,
                                                    (current, converter) => converter.ConvertWords(current).GetValueOrThrow()))
            .Then(words =>
                  wordFilters.Aggregate(words, (current, filter) => filter.FilterWords(current).GetValueOrThrow()))
            .Then(words => wordCounter.CountWords(words, topNWords))
            .Then(words => fontAnalyzer.SetFontForWords(words, minFontSize, maxFontSize, fontFamily)));
 }
Exemplo n.º 6
0
        public int CalculateReadTime(string text)
        {
            var wordCount = _wordCounter.CountWords(text);
            var value     = wordCount / 200d;
            var minutes   = (int)value;
            var seconds   = ((value % 2) * 0.6d) * 100;

            if (seconds >= 30)
            {
                minutes++;
            }

            return(minutes);
        }
Exemplo n.º 7
0
        private void btnCount_Click(object sender, EventArgs e)
        {
            Application.DoEvents();

            IWordCounter wordCounter = null;

            if (cmbWordCounters.SelectedIndex != -1)
            {
                wordCounter =
                    _wordCounters.SingleOrDefault(x => x.GetType().Name == cmbWordCounters.SelectedItem.ToString());
            }

            if (wordCounter != null)
            {
                var results = wordCounter.CountWords(txtInput.Text)
                              .OrderByDescending(x => x.Count)
                              .ToList();

                resultsView.Items.Clear();

                foreach (var result in results)
                {
                    var item = new ListViewItem(result.Word);
                    item.SubItems.Add(result.Count.ToString(CultureInfo.InvariantCulture));

                    resultsView.Items.Add(item);
                }

                lblCount.Text = results.Count().ToString();
            }

            else
            {
                MessageBox.Show("Please choose a word counter");
            }
        }
Exemplo n.º 8
0
        public void WordCounterTests_ReturnsCorrectWordCount()
        {
            // Arrange
            const string text = "The quick brown fox jumps over the lazy dog";

            var expectedResult = new Dictionary <string, int>
            {
                { "the", 2 },
                { "quick", 1 },
                { "brown", 1 },
                { "fox", 1 },
                { "jumps", 1 },
                { "over", 1 },
                { "lazy", 1 },
                { "dog", 1 }
            };

            // Act
            var actualResult = _wordCounter.CountWords(text);

            // Assert
            CollectionAssert.AreEqual(expectedResult, actualResult);
        }
Exemplo n.º 9
0
 public void EmptyString()
 {
     Assert.IsFalse(wordCounter.CountWords(string.Empty).Any());
 }
		public void Execute()
		{
			_reader.Read(ProcessInputChunk);
			_wordCounter.CountWords(_bufferManager.Previous);
		}