/// <summary> /// Splits the rule flags. /// </summary> /// <param name="flags">The flags.</param> /// <returns></returns> protected IRuleFlagProcessor SplitRuleFlags(string flags) { RuleFlagProcessor dictionary = new RuleFlagProcessor(); List<string> temporaryHolding = new List<string>(); dictionary.BeginAdd(); foreach (string flag in flags.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries)) { string temp = flag; if (flag.Contains("\"") || temporaryHolding.Count > 0) { temporaryHolding.Add(flag.Replace("\"", String.Empty)); if (flag.Contains("\"") && temporaryHolding.Count > 1) { temp = String.Join(",", temporaryHolding.ToArray()); temporaryHolding.Clear(); } else continue; } IRuleFlag ruleFlag = AddRuleFlag(temp); if (ruleFlag != null) dictionary.Add(ruleFlag); } dictionary.EndAdd(); return dictionary; }