private ViewFolder <T> buildFolder(string path) { var views = ViewEngineSettings.FileSystem.FindFiles(path, _match).Select(x => new FubuFile(x, Provenance) { ProvenancePath = _content.Path }) .Select(_builder).Where(x => !_settings.IsExcluded(x)); var folder = new ViewFolder <T>(path) { IsShared = _settings.IsSharedFolder(path) }; folder.RelativePath = string.Empty; folder.Views.AddRange(views); _folders.Add(folder); ViewEngineSettings.FileSystem.ChildDirectoriesFor(path).Where(x => !_settings.FolderShouldBeIgnored(x)).Each(child => { var childFolder = buildFolder(child); childFolder.Parent = folder; childFolder.RelativePath = (folder.RelativePath + "/" + childFolder.Name).TrimStart('/'); if (childFolder.IsShared) { folder.LayoutFolders.Add(childFolder); } }); return(folder); }
public void should_ignore_folders() { var settings = new ViewEngineSettings(); settings.FolderShouldBeIgnored("/foo/fubu-content/").ShouldBeTrue(); settings.FolderShouldBeIgnored("/foo/fubu-content").ShouldBeTrue(); settings.FolderShouldBeIgnored("fubu-content").ShouldBeTrue(); settings.FolderShouldBeIgnored("bin").ShouldBeTrue(); settings.FolderShouldBeIgnored("obj").ShouldBeTrue(); settings.FolderShouldBeIgnored("node_modules").ShouldBeTrue(); settings.FolderShouldBeIgnored("node_modules/").ShouldBeTrue(); settings.FolderShouldBeIgnored("/foo/node_modules/").ShouldBeTrue(); settings.FolderShouldBeIgnored("/foo/bar/node_modules/").ShouldBeTrue(); settings.FolderShouldBeIgnored("ok").ShouldBeFalse(); settings.FolderShouldBeIgnored("ok/").ShouldBeFalse(); settings.FolderShouldBeIgnored("/ok").ShouldBeFalse(); settings.FolderShouldBeIgnored("/ok/good/alright").ShouldBeFalse(); }