/// <summary> /// Initializes the CollapseXML object /// </summary> public Collapse( MissingFilterBehavior missingFilterBehavior = MissingFilterBehavior.ThrowException, bool transformInlineText = true) { IsInlineTextTransformEnabled = transformInlineText; MissingFilterBehavior = missingFilterBehavior; dateTimeFormat = ""; numberFormatProvider = CultureInfo.CurrentCulture; }
/// <summary> /// Checks whether the item should be included in the output /// </summary> /// <param name="filterDefinition">A filter definition object with name and arguments</param> /// <param name="behavior">Specifies what happens when a filter is missing</param> /// <returns>True if current item should be included</returns> internal bool IsIncludedWithFilter(FilterDefinition filterDefinition, MissingFilterBehavior behavior) { if (!filterMap.ContainsKey(filterDefinition.Function)) { switch (behavior) { case MissingFilterBehavior.IncludeItem: return true; case MissingFilterBehavior.OmitItem: return false; case MissingFilterBehavior.ThrowException: default: throw new FilterNotFoundException(filterDefinition.Function); } } // Find a filter FilterFunction predicate = filterMap[filterDefinition.Function]; // Create filter arguments IEnumerable<CollapseFilterArgument> arguments = filterDefinition.Arguments .Select(arg => new CollapseFilterArgument(GetObject(arg.Path), arg.Name)); // Run the predicate to see if the item should be included return predicate( new CollapseFilterArgumentCollection(arguments)); }