Inheritance: DirectoryEntry
コード例 #1
0
ファイル: DirectoryEntry.cs プロジェクト: shahid-pk/Runt
        public static Tuple <DirectoryEntry, ImmutableList <ProjectEntry> > Create(DirectoryInfo dir, string relativePath)
        {
            if (relativePath == "packages")
            {
                return(new Tuple <DirectoryEntry, ImmutableList <ProjectEntry> >(PackagesEntry.Create(dir), null));
            }

            if (relativePath != null && File.Exists(Path.Combine(dir.FullName, "project.json")))
            {
                return(ProjectEntry.Create(dir, relativePath));
            }

            var dirsAndProjects = from d in dir.EnumerateDirectories()
                                  where !d.IsHidden()
                                  orderby d.Name
                                  select Create(d, Path.Combine(relativePath, d.Name));

            var dirs     = ImmutableList.CreateBuilder <DirectoryEntry>();
            var projects = ImmutableList.CreateBuilder <ProjectEntry>();

            foreach (var dap in dirsAndProjects)
            {
                if (dap.Item2 != null)
                {
                    projects.AddRange(dap.Item2);
                }
                dirs.Add(dap.Item1);
            }

            var files = from f in dir.EnumerateFiles()
                        where !f.IsHidden()
                        orderby f.Name
                        select(Entry) FileEntry.Create(f, Path.Combine(relativePath, f.Name));

            return(new Tuple <DirectoryEntry, ImmutableList <ProjectEntry> >(
                       new DirectoryEntry(relativePath, false, dir,
                                          dirs.ToImmutable(), files.ToImmutableList()),
                       projects.ToImmutable()));
        }
コード例 #2
0
ファイル: ProjectEntry.cs プロジェクト: Runt-Editor/Runt
        public static new Tuple<DirectoryEntry, ImmutableList<ProjectEntry>> Create(DirectoryInfo dir, string relativePath)
        {
            var dirsAndProjects = from d in dir.EnumerateDirectories()
                                  where !d.IsHidden()
                                  && !d.Name.Equals("bin", StringComparison.OrdinalIgnoreCase)
                                  && !d.Name.Equals("obj", StringComparison.OrdinalIgnoreCase)
                                  orderby d.Name
                                  select Create(d, IOPath.Combine(relativePath, d.Name));

            var dirs = ImmutableList.CreateBuilder<DirectoryEntry>();
            foreach (var dap in dirsAndProjects)
            {
                // Discard sub-projects
                dirs.Add(dap.Item1);
            }

            var files = from f in dir.EnumerateFiles()
                        where !f.IsHidden()
                        orderby f.Name
                        select (Entry)FileEntry.Create(f, IOPath.Combine(relativePath, f.Name));

            var project = new ProjectEntry(relativePath, false, dir, dirs.ToImmutable(), files.ToImmutableList(),
                new ReferencesEntry(false, relativePath + ":references", ImmutableList.Create<ReferenceEntry>(), null),
                ImmutableList.Create<DiagnosticMessage>(), -1, ImmutableList.Create<string>(), ImmutableDictionary.Create<string, string>(), null);
            return new Tuple<DirectoryEntry, ImmutableList<ProjectEntry>>(
                project,
                ImmutableList.Create(project));
        }