예제 #1
0
            private IDictionary <TLDRule.RuleType, IDictionary <string, TLDRule> > GetTLDRules()
            {
                var results = new Dictionary <TLDRule.RuleType, IDictionary <string, TLDRule> >();
                var rules   = Enum.GetValues(typeof(TLDRule.RuleType)).Cast <TLDRule.RuleType>();

                foreach (var rule in rules)
                {
                    results[rule] = new Dictionary <string, TLDRule>(StringComparer.CurrentCultureIgnoreCase);
                }

                var ruleStrings = ReadRulesData();
                //  Strip out any lines that are:
                //  a.) A comment
                //  b.) Blank
                var filteredRuleString = ruleStrings.Where(ruleString =>
                                                           !ruleString.StartsWith("//") && ruleString.Trim().Length != 0);

                foreach (var ruleString in filteredRuleString)
                {
                    var result = new TLDRule(ruleString);
                    results[result.Type][result.Name] = result;
                }

                //  Return our results:
                if (CoreHelpers.InDebugMode())
                {
                    Debug.WriteLine(string.Format("Loaded {0} rules into cache.",
                                                  results.Values.Sum(r => r.Values.Count)));
                }
                return(results);
            }