using System; 
 | 
using System.Collections.Generic; 
 | 
using System.Text; 
 | 
using System.Text.RegularExpressions; 
 | 
using System.IO; 
 | 
  
 | 
#if UNITY_XCODE_API_BUILD 
 | 
namespace UnityEditor.iOS.Xcode 
 | 
#else 
 | 
namespace UnityEditor.iOS.Xcode.Custom 
 | 
#endif 
 | 
{ 
 | 
    internal class PBXPath 
 | 
    { 
 | 
        /// Replaces '\' with '/'. We need to apply this function to all paths that come from the user 
 | 
        /// of the API because we store paths to pbxproj and on windows we may get path with '\' slashes 
 | 
        /// instead of '/' slashes 
 | 
        public static string FixSlashes(string path) 
 | 
        { 
 | 
            if (path == null) 
 | 
                return null; 
 | 
            return path.Replace('\\', '/'); 
 | 
        } 
 | 
  
 | 
        public static void Combine(string path1, PBXSourceTree tree1, string path2, PBXSourceTree tree2, 
 | 
                                   out string resPath, out PBXSourceTree resTree) 
 | 
        { 
 | 
            if (tree2 == PBXSourceTree.Group) 
 | 
            { 
 | 
                resPath = Combine(path1, path2); 
 | 
                resTree = tree1; 
 | 
                return; 
 | 
            } 
 | 
             
 | 
            resPath = path2; 
 | 
            resTree = tree2; 
 | 
        } 
 | 
         
 | 
        // Combines two paths 
 | 
        public static string Combine(string path1, string path2) 
 | 
        { 
 | 
            if (path2.StartsWith("/")) 
 | 
                return path2; 
 | 
            if (path1.EndsWith("/")) 
 | 
                return path1 + path2; 
 | 
            if (path1 == "") 
 | 
                return path2; 
 | 
            if (path2 == "") 
 | 
                return path1; 
 | 
            return path1 + "/" + path2; 
 | 
        } 
 | 
         
 | 
        public static string GetDirectory(string path) 
 | 
        { 
 | 
            path = path.TrimEnd('/'); 
 | 
            int pos = path.LastIndexOf('/'); 
 | 
            if (pos == -1) 
 | 
                return ""; 
 | 
            else 
 | 
                return path.Substring(0, pos); 
 | 
        } 
 | 
  
 | 
        public static string GetCurrentDirectory() 
 | 
        { 
 | 
            if (Environment.OSVersion.Platform != PlatformID.MacOSX && 
 | 
                Environment.OSVersion.Platform != PlatformID.Unix) 
 | 
            { 
 | 
                throw new Exception("PBX project compatible current directory can only obtained on OSX"); 
 | 
            } 
 | 
                 
 | 
            string path = Directory.GetCurrentDirectory(); 
 | 
            path = FixSlashes(path); 
 | 
            if (!IsPathRooted(path)) 
 | 
                return "/" + path; 
 | 
            return path; 
 | 
        } 
 | 
         
 | 
        public static string GetFilename(string path) 
 | 
        { 
 | 
            int pos = path.LastIndexOf('/'); 
 | 
            if (pos == -1) 
 | 
                return path; 
 | 
            else 
 | 
                return path.Substring(pos + 1); 
 | 
        } 
 | 
  
 | 
        public static bool IsPathRooted(string path) 
 | 
        { 
 | 
            if (path == null || path.Length == 0) 
 | 
                return false; 
 | 
            return path[0] == '/'; 
 | 
        } 
 | 
         
 | 
        public static string GetFullPath(string path) 
 | 
        { 
 | 
            if (IsPathRooted(path)) 
 | 
                return path; 
 | 
            else 
 | 
                return Combine(GetCurrentDirectory(), path); 
 | 
        } 
 | 
  
 | 
        public static string[] Split(string path) 
 | 
        { 
 | 
            if (string.IsNullOrEmpty(path)) 
 | 
                return new string[]{}; 
 | 
            return path.Split(new[]{'/'}, StringSplitOptions.RemoveEmptyEntries); 
 | 
        } 
 | 
    } 
 | 
  
 | 
} // UnityEditor.iOS.Xcode 
 |