CommandLine.Core.SpecificationPropertyRules.EnforceMutuallyExclusiveSet C# (CSharp) Method

EnforceMutuallyExclusiveSet() private static method

private static EnforceMutuallyExclusiveSet ( ) : IEnumerable>>.Func
return IEnumerable>>.Func
        private static Func<IEnumerable<SpecificationProperty>, IEnumerable<Maybe<Error>>> EnforceMutuallyExclusiveSet()
        {
            return specProps =>
                {
                    var options = specProps.Where(sp => sp.Specification.IsOption() && sp.Value.IsJust());
                    var groups = options.GroupBy(g => ((OptionSpecification)g.Specification).SetName);
                    if (groups.Count() > 1)
                    {
                        return options.Select(s => Maybe.Just<Error>(new MutuallyExclusiveSetError(NameInfo.FromOptionSpecification((OptionSpecification)s.Specification))));
                    }
                    return Enumerable.Empty<Nothing<Error>>();
                };
        }