예제 #1
0
        public Result <ITagCloud> GenerateTagCloud()
        {
            var filteredWords = WordsProvider.GetWords()
                                .Then(words => WordsFilter.Apply(words));

            if (!filteredWords.IsSuccess)
            {
                return(Result.Fail <ITagCloud>(filteredWords.Error));
            }

            var wordsFrequencies = GetTokens(filteredWords.Value)
                                   .OrderByDescending(wordToken => wordToken.Frequency)
                                   .ToArray();
            var wordsCount = wordsFrequencies.Select(wordToken => wordToken.Frequency).Sum();

            foreach (var wordToken in wordsFrequencies)
            {
                var width  = Math.Max(100, 500 * wordToken.Frequency / wordsCount);
                var height = Math.Max(50, 250 * wordToken.Frequency / wordsCount);
                var size   = new Size(width, height);
                PutNextWord(wordToken.Word, size);
            }

            return(this);
        }
예제 #2
0
        public void GenerateTagCloud()
        {
            var words            = WordsProvider.GetWords();
            var filteredWords    = WordsFilter.Apply(words);
            var wordsFrequencies = GetTokens(filteredWords)
                                   .OrderByDescending(wordToken => wordToken.Frequency);
            var wordsCount = wordsFrequencies.Select(wordToken => wordToken.Frequency).Sum();

            foreach (var wordToken in wordsFrequencies)
            {
                var width  = Math.Max(100, 500 * wordToken.Frequency / wordsCount);
                var height = Math.Max(50, 250 * wordToken.Frequency / wordsCount);
                var size   = new Size(width, height);
                PutNextWord(wordToken.Word, size);
            }
        }