コード例 #1
0
        /// <summary>
        /// Combines a list of <see cref="DifferenceSimplifier"/> delegates into a single one.
        /// </summary>
        /// <param name="simplifiers">The simplifiers.</param>
        /// <returns>The new single <see cref="DifferenceSimplifier"/>.</returns>
        /// <exception cref="System.ArgumentNullException"><paramref name="simplifiers"/> is <c>null</c>.</exception>
        public static DifferenceSimplifier Combine(IEnumerable <DifferenceSimplifier> simplifiers)
        {
            if (simplifiers == null)
            {
                throw new ArgumentNullException(nameof(simplifiers));
            }

            DifferenceSimplifier current = null;

            foreach (var item in simplifiers)
            {
                if (current == null)
                {
                    current = item;
                }
                else
                {
                    var previous = current;
                    current = x => current(previous(x));
                }
            }

            if (current == null)
            {
                current = x => x;
            }

            return(current);
        }
コード例 #2
0
ファイル: Differencer.cs プロジェクト: patrickrobbins/difflib
 /// <summary>
 /// Adds a simplifier to the differences.
 /// </summary>
 /// <param name="simplifier">The simplifier to add.</param>
 /// <returns><c>this</c> instance.</returns>
 public Differencer <T> AddSimplifier(DifferenceSimplifier simplifier)
 {
     if (simplifier == null)
     {
         throw new ArgumentNullException(nameof(simplifier));
     }
     if (_simplifier == null)
     {
         _simplifier = simplifier;
     }
     else
     {
         _simplifier = DifferenceSimplifiers.Combine(_simplifier, simplifier);
     }
     return(this);
 }