private static void parseFilterNode(FilterCollection filterCollection, Dictionary <string, Filter> filterMap, YamlNode node) { string name; string[] args; if (node is YamlScalarNode) { name = ((YamlScalarNode)node).Value.Trim().ToLower(); args = new string[0]; } else if (node is YamlSequenceNode) { IEnumerator <YamlNode> it = ((YamlSequenceNode)node).Children.GetEnumerator(); if (!it.MoveNext()) { throw new InvalidConfigurationException("An empty list as a filter is not valid!"); } node = it.Current; if (!(node is YamlScalarNode)) { throw new InvalidConfigurationException("Filter definitions as a list my only contain strings!"); } name = ((YamlScalarNode)node).Value.Trim().ToLower(); args = readFilterArgs(it); } else if (node is YamlMappingNode) { YamlMappingNode filterConfig = (YamlMappingNode)node; IDictionary <YamlNode, YamlNode> childNodes = filterConfig.Children; node = (childNodes.ContainsKey(Node.NAME) ? childNodes[Node.NAME] : null); if (!(node is YamlScalarNode)) { throw new InvalidConfigurationException("The filter name is missing or invalid!"); } name = ((YamlScalarNode)node).Value.Trim().ToLower(); node = (childNodes.ContainsKey(Node.ARGS) ? childNodes[Node.ARGS] : null); if (node is YamlSequenceNode) { args = readFilterArgs(((YamlSequenceNode)node).Children.GetEnumerator()); } else { args = new string[0]; } } else { throw new InvalidConfigurationException("Invalid filter configuration"); } if (!filterMap.ContainsKey(name)) { throw new InvalidConfigurationException("Unknown filter " + name); } filterCollection.Add(filterMap[name], args); }
private static void parseFilterNode(FilterCollection filterCollection, Dictionary<string, Filter> filterMap, YamlNode node) { string name; string[] args; if (node is YamlScalarNode) { name = ((YamlScalarNode)node).Value.Trim().ToLower(); args = new string[0]; } else if (node is YamlSequenceNode) { IEnumerator<YamlNode> it = ((YamlSequenceNode)node).Children.GetEnumerator(); if (!it.MoveNext()) { throw new InvalidConfigurationException("An empty list as a filter is not valid!"); } node = it.Current; if (!(node is YamlScalarNode)) { throw new InvalidConfigurationException("Filter definitions as a list my only contain strings!"); } name = ((YamlScalarNode)node).Value.Trim().ToLower(); args = readFilterArgs(it); } else if (node is YamlMappingNode) { YamlMappingNode filterConfig = (YamlMappingNode)node; IDictionary<YamlNode, YamlNode> childNodes = filterConfig.Children; node = (childNodes.ContainsKey(Node.NAME) ? childNodes[Node.NAME] : null); if (!(node is YamlScalarNode)) { throw new InvalidConfigurationException("The filter name is missing or invalid!"); } name = ((YamlScalarNode)node).Value.Trim().ToLower(); node = (childNodes.ContainsKey(Node.ARGS) ? childNodes[Node.ARGS] : null); if (node is YamlSequenceNode) { args = readFilterArgs(((YamlSequenceNode)node).Children.GetEnumerator()); } else { args = new string[0]; } } else { throw new InvalidConfigurationException("Invalid filter configuration"); } if (!filterMap.ContainsKey(name)) { throw new InvalidConfigurationException("Unknown filter " + name); } filterCollection.Add(filterMap[name], args); }