public void Add(string path, string blobId) { // If has directory path, recursively add int slash = path.IndexOf('/'); if (slash >= 0) { string name = path.Substring(0, slash); string tail = path.Substring(slash + 1); FileFolder folder; if (!m_folders.TryGetValue(name, out folder)) { string subRootedName = (RootedName.Length <= 1) ? string.Concat("/", name) : string.Concat(RootedName, "/", name); folder = new ItemBankFolder(m_project, subRootedName, name); m_folders.Add(name, folder); } ((ItemBankFolder)folder).Add(tail, blobId); } // Otherwise add file else { m_files[path] = new ItemBankFile(m_project, string.Concat(RootedName, "/", path), path, blobId); } }
private bool FollowPath(string path, out ItemBankFolder folder, out string name) { string[] parts = path.ToLowerInvariant().Split('/'); if (parts.Length < 1) { throw new FileNotFoundException("Empty path: " + path); } if (parts[0].Length == 0) { throw new FileNotFoundException("Absolute paths not supported: " + path); } ItemBankFolder f = this; for (int i = 0; i < parts.Length - 1; ++i) { FileFolder next; if (!f.m_folders.TryGetValue(parts[i], out next)) { folder = null; name = null; return(false); } f = (ItemBankFolder)next; } folder = f; name = parts[parts.Length - 1]; return(true); }
private void LoadTree() { m_root = new ItemBankFolder(this, RootedName, Name); foreach (var pair in m_package.m_gitLab.ListRepositoryTree(m_projectId)) { System.Diagnostics.Debug.Assert(pair.Key.IndexOf('\\') < 0); // Should use forward slashes exclusively m_root.Add(pair.Key.ToLower(), pair.Value); } }