public static void DrawCloud(WordsCollectionBuilder wcbuilder, WordNormalizator normalizator, IEnumerable<string> words, CloudBuilder cloudBuilder, WordRenderer renderer, RenderTarget target)
        {
            if (wcbuilder == null)
                throw new ArgumentNullException(nameof(wcbuilder));
            if (normalizator == null)
                throw new ArgumentNullException(nameof(normalizator));

            var wordsSorted = wcbuilder(normalizator, words);
            DrawCloud(wordsSorted, cloudBuilder, renderer, target);
        }
        public void Init()
        {
            var path = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) ?? "";
            Environment.CurrentDirectory = path;

            var asm = Assembly.GetAssembly(typeof(Hunspell));
            var type = asm.GetType("NHunspell.MarshalHunspellDll", true);
            var field = type.GetField("nativeDLLPath", BindingFlags.NonPublic | BindingFlags.Static);
            // ReSharper disable once PossibleNullReferenceException
            field.SetValue(null, path);

            var di = new StandardKernel();
            di.Bind<Func<string, Word>>().ToConstant<Func<string, Word>>(s => new Word(s));
            di.Bind<WordNormalizator>().To<SimpleNormalizator>();
            di.Bind<Hunspell>().ToConstant(new Hunspell("ru_RU.aff", "ru_RU.dic"));

            _normalizator = di.Get<WordNormalizator>();
        }
 public static WordsCollection BuildWordCollection(WordNormalizator normalizator, IEnumerable<string> words)
     => new WordsCollection(words.Select(normalizator.Normalize)
         .Where(normalizator.IsWordSuitable)
         .GroupBy(s => s)
         .Select(g => new Word(g.Key) {Weight = g.Count()}));