public static FXSpecification Create( IEnumerable <IDefineGroupFlexpression> predefinedOverwritableGroups, IEnumerable <IDefineGroupFlexpression> predefinedSealedGroups, IEqualityComparer <string> groupNameComparer = null) { predefinedOverwritableGroups ??= Array.Empty <IDefineGroupFlexpression>(); predefinedSealedGroups ??= Array.Empty <IDefineGroupFlexpression>(); groupNameComparer ??= StringComparer.Ordinal; var groups = predefinedOverwritableGroups .Where(p => p.IsDefined) .Select(p => new GroupFlexpressionDefinition(p.GroupName, AutoFreezingValue.CreateDefinedNotFrozen(p.Content))) .Concat(predefinedSealedGroups .Where(p => p.IsDefined) .Select(p => new GroupFlexpressionDefinition(p.GroupName, AutoFreezingValue.CreateDefinedFrozen(p.Content), isSealed: true))) .ToDictionary( pK => pK.GroupName, pV => pV, groupNameComparer); var res = new FXSpecification(groups); return(res); }
public Flexpression DefineGroup(string groupName, IFlexpression content) { var group = _groupsDefinitionsByName.GetExistingValueOrNew( groupName, pName => new GroupFlexpressionDefinition(pName, AutoFreezingValue.CreateUndefined <IFlexpression>())); if (content != null) { group.ContentContainer.Set(content); } return(group); }