public WordTrieNode(WordNodeConfig config, WordTrieNode parent, Word wordToAdd, bool isNodeValue)
     : this(config)
 {
     _parent = parent;
       _word = isNodeValue ? wordToAdd : null;
       _mostPopularWords.Add(wordToAdd);
 }
 /// <summary>
 /// Create an instance of <see cref="IWordCollection"/> object.
 /// </summary>
 /// <param name="matchByTrie">Defines a type of <see cref="IWordCollection"/> object that will used for words processing.</param>
 /// <param name="config"><see cref="WordNodeConfig"/></param>
 public static IWordCollection CreateWordsCollection(StandaloneMode mode, WordNodeConfig config)
 {
     switch(mode)
       {
     case StandaloneMode.Dictionary:
       return new WordDictionaryCollection(config.MostPopularWordsLimit);
     case StandaloneMode.HashSet:
       return new WordHashSetCollection(config.MostPopularWordsLimit);
     default:
       return new WordTrieCollection(config);
       }
 }
 public WordTrieCollection(WordNodeConfig config)
     : base(config)
 {
 }
 private static void InitializeWordsCollection(string[] args)
 {
     StandaloneMode mode = StandaloneMode.Trie;
       if (args.Length == 1)
     Enum.TryParse<StandaloneMode>(args[0].Substring(1), true, out mode);
       int mostPopularWordsLimit = Convert.ToInt32(ConfigurationManager.AppSettings["MostPopularWordsLimit"]);
       var config = new WordNodeConfig { MostPopularWordsLimit = mostPopularWordsLimit };
       _wordCollection = CommonHelper.CreateWordsCollection(mode, config);
       Console.WriteLine("Standalone mode: {0}", mode.ToString());
 }
 public WordTrieNode(WordNodeConfig config)
 {
     _config = config;
       _mostPopularWords = new MostPopularWords(config.MostPopularWordsLimit);
       _childNodes = new Dictionary<char, WordTrieNode>();
 }