private IEnumerable <PsfContentFolderRedirectionViewModel> SetRules(PsfRedirectedPathConfig redirectionPsfFixup) { if (redirectionPsfFixup == null) { yield break; } if (redirectionPsfFixup.KnownFolders != null) { foreach (var knownGroup in redirectionPsfFixup.KnownFolders.GroupBy(kf => kf.Id)) { foreach (var relativeGroup in knownGroup.SelectMany(k => k.RelativePaths).GroupBy(pdr => pdr.Base)) { yield return(new PsfContentFolderRedirectionViewModel(knownGroup.Key, relativeGroup.Key, GetRules(relativeGroup))); } } } if (redirectionPsfFixup.PackageDriveRelative != null) { foreach (var relativeGroup in redirectionPsfFixup.PackageDriveRelative.GroupBy(pdr => pdr.Base)) { yield return(new PsfContentFolderRedirectionViewModel(PsfContentFolderRelationTo.Drive, relativeGroup.Key, GetRules(relativeGroup))); } } if (redirectionPsfFixup.PackageRelative != null) { foreach (var relativeGroup in redirectionPsfFixup.PackageRelative.GroupBy(pr => pr.Base)) { yield return(new PsfContentFolderRedirectionViewModel(PsfContentFolderRelationTo.PackageRoot, relativeGroup.Key, GetRules(relativeGroup))); } } }
public PsfContentProcessRedirectionViewModel(string processRegularExpression, string fixupName, PsfRedirectedPathConfig redirectionPsfFixup) : base(processRegularExpression, fixupName) { this.Rules = new ChangeableCollection <PsfContentFolderRedirectionViewModel>(this.SetRules(redirectionPsfFixup)); this.Rules.Commit(); this.AddChildren(this.Rules); }