Example #1
0
 public static MaskItem <bool, GenderedItem <bool>?>?EqualityMaskHelper <TItem>(
     IGenderedItemGetter <TItem>?lhs,
     IGenderedItemGetter <TItem>?rhs,
     Func <TItem, TItem, Include, bool> maskGetter,
     EqualsMaskHelper.Include include)
 {
     if (lhs == null || rhs == null)
     {
         if (lhs == null && rhs == null)
         {
             return(include == Include.All ? new MaskItem <bool, GenderedItem <bool>?>(true, default) : null);
         }
         return(new MaskItem <bool, GenderedItem <bool>?>(false, default));
     }
     else
     {
         var  maleMask   = maskGetter(lhs.Male, rhs.Male, include);
         var  femaleMask = maskGetter(lhs.Female, rhs.Female, include);
         bool overall    = maleMask == femaleMask;
         if (!overall || include == Include.All)
         {
             return(new MaskItem <bool, GenderedItem <bool>?>(
                        overall,
                        new GenderedItem <bool>(maleMask, femaleMask)));
         }
         return(null);
     }
 }
Example #2
0
 public static MaskItem <bool, GenderedItem <MaskItem <bool, TMask?>?>?>?EqualityMaskHelper <TItem, TMask>(
     IGenderedItemGetter <TItem>?lhs,
     IGenderedItemGetter <TItem>?rhs,
     Func <TItem, TItem, Include, MaskItem <bool, TMask?>?> maskGetter,
     EqualsMaskHelper.Include include)
     where TMask : class, IMask <bool>
 {
     if (lhs == null || rhs == null)
     {
         if (lhs == null && rhs == null)
         {
             return(include == Include.All ? new MaskItem <bool, GenderedItem <MaskItem <bool, TMask?>?>?>(true, default) : null);
         }
         return(new MaskItem <bool, GenderedItem <MaskItem <bool, TMask?>?>?>(false, default));
     }
     else
     {
         var maleMask    = maskGetter(lhs.Male, rhs.Male, include);
         var femaleMask  = maskGetter(lhs.Female, rhs.Female, include);
         var maleEqual   = maleMask?.Overall ?? true;
         var femaleEqual = femaleMask?.Overall ?? true;
         var overall     = maleEqual && femaleEqual;
         if (!overall || include == Include.All)
         {
             return(new MaskItem <bool, GenderedItem <MaskItem <bool, TMask?>?>?>(
                        overall,
                        new GenderedItem <MaskItem <bool, TMask?>?>(
                            male: !maleEqual || include == Include.All ? maleMask : null,
                            female: !femaleEqual || include == Include.All ? femaleMask : null)));
         }
         return(null);
     }
 }
Example #3
0
 public static void ToString <TItem>(IGenderedItemGetter <TItem> item, FileGeneration fg, string?name)
 {
     fg.AppendLine($"{name} =>");
     fg.AppendLine("[");
     using (new DepthWrapper(fg))
     {
         var male = item.Male;
         if (male is IPrintable mp)
         {
             mp.ToString(fg, "Male");
         }
         else if (male != null)
         {
             fg.AppendLine($"Male => {male}");
         }
         var female = item.Female;
         if (female is IPrintable fp)
         {
             fp.ToString(fg, "Female");
         }
         else if (female != null)
         {
             fg.AppendLine($"Female => {female}");
         }
     }
     fg.AppendLine("]");
 }
Example #4
0
 public static MaskItem <bool, GenderedItem <MaskItem <bool, TMask?>?>?>?HasBeenSetMaskHelper <TItem, TMask>(
     IGenderedItemGetter <TItem?>?item,
     Func <TItem, TMask?> getter)
     where TItem : class
     where TMask : class, IMask <bool>
 {
     if (item == null)
     {
         return(null);
     }
     else
     {
         var maleMask   = item.Male == null ? null : getter(item.Male);
         var femaleMask = item.Female == null ? null : getter(item.Female);
         var maleHas    = maleMask?.Any(i => i) ?? false;
         var femaleHas  = femaleMask?.Any(i => i) ?? false;
         return(new MaskItem <bool, GenderedItem <MaskItem <bool, TMask?>?>?>(
                    true,
                    new GenderedItem <MaskItem <bool, TMask?>?>(
                        new MaskItem <bool, TMask?>(maleHas, maleMask),
                        new MaskItem <bool, TMask?>(femaleHas, femaleMask))));
     }
 }
Example #5
0
 public static MaskItem <bool, GenderedItem <TMask?>?>?HasBeenSetHelper <TItem, TMask>(IGenderedItemGetter <TItem>?item, Func <TItem, TMask?> getter)
     where TMask : class, IMask <bool>
 {
     if (item == null)
     {
         return(null);
     }
     else
     {
         return(new MaskItem <bool, GenderedItem <TMask?>?>(
                    true,
                    new GenderedItem <TMask?>(
                        getter(item.Male),
                        getter(item.Female))));
     }
 }
Example #6
0
 public static void RemapLinks <TItem>(this IGenderedItemGetter <TItem?> gendered, IReadOnlyDictionary <FormKey, FormKey> mapping)
     where TItem : class, IFormLinkContainer
 {
     gendered.Male?.RemapLinks(mapping);
     gendered.Female?.RemapLinks(mapping);
 }