Ejemplo n.º 1
0
        public string GetPathRelativeTo(string basePath)
        {
            var dir = new DirectoryInfo(basePath);

            var baseFs = new FolderStack(dir);
            var fileFs = new FolderStack(new FileInfo(FullPath).Directory);
            var kickedStack = new Stack<DirectoryInfo>();

            string temp = string.Empty;
            while (baseFs.CurrentDirectory.FullName != fileFs.CurrentDirectory.FullName)
            {
                if (baseFs.CurrentDirectory.FullName.Length > fileFs.CurrentDirectory.FullName.Length)
                {
                    baseFs.Pop();
                    temp += "../";
                }
                else
                    kickedStack.Push(fileFs.Pop());
            }
            while (kickedStack.Any())
            {
                temp += kickedStack.Pop().Name + "/";
            }
            temp += new FileInfo(FullPath).Name;
            return temp;
        }
Ejemplo n.º 2
0
 public void ResolveRefs()
 {
     var fs = new FolderStack(new FileInfo(FullPath).Directory);
     var unresolved = JsRefs.Where(jr => !jr.Resolve(ref fs)).ToList();
     foreach (var jr in unresolved)
     {
         Console.WriteLine(string.Format("Could not resolve reference: {0} in file: {1}", jr.RefPath, new FileInfo(FullPath).Name));
     }
 }
Ejemplo n.º 3
0
 public bool Resolve(ref FolderStack fs)
 {
     fs = fs.Save();
     try
     {
         var tempfs = fs;
         var filename = RefPath;
         if (RefPath.Contains("\\"))
         {
             var tokens = RefPath.Split('\\');
             var dirs = tokens.Take(tokens.Length - 1);
             filename = tokens.Last();
             dirs.TakeWhile(dir => ProcessDirectory(tempfs, dir)).ToList();
         }
         ResolvedPath = Path.Combine(tempfs.CurrentDirectory.FullName, filename);
         Exists = File.Exists(ResolvedPath);
         return Exists;
     }
     finally
     {
         fs = fs.Restore();
     }
 }
Ejemplo n.º 4
0
 private bool ProcessDirectory(FolderStack fs, string curDir)
 {
     if (curDir == "..")
         return fs.Pop() != null;
     return fs.Push(curDir);
 }