Example #1
0
        public static IOLink From(string value, bool strict = true)
        {
            var link = FileLink.From(value, strict: false) ?? FolderLink.From(value, strict: false) as IOLink;

            ExpectNot(strict && link == null, "Value is not an I/O link");

            return(link);
        }
Example #2
0
        public static FileLink From(FolderLink folder, string file)
        {
            if (!TryFrom(folder, file, out var link))
            {
                throw new FormatException($"Failed to parse file: {file}");
            }

            return(link);
        }
Example #3
0
        public static bool TryFrom(string folder, string file, out FileLink link)
        {
            link = null;

            if (FolderLink.TryFrom(folder, out var parsedFolder))
            {
                if (FileName.TryFrom(file, out var parsedFile))
                {
                    link = new FileLink(parsedFolder, parsedFile);
                }
            }

            return(link != null);
        }
Example #4
0
        public static FileLink From(string value, bool strict = true, bool extensionOptional = false)
        {
            var parsedFolder = FolderLink.From(value, strict);

            if (parsedFolder != null)
            {
                var fileSegment = parsedFolder.Resource.Path.Segments.LastOrDefault();

                if (fileSegment != null)
                {
                    var parsedName = FileName.From(fileSegment.ToString(), strict, extensionOptional);

                    if (parsedName != null)
                    {
                        return(new FileLink(parsedFolder.Up(strict: false), parsedName));
                    }
                }
            }

            ExpectNot(strict, "Cannot parse file link");

            return(null);
        }
Example #5
0
        public static bool TryFrom(string value, out FileLink link, bool extensionOptional = false)
        {
            link = null;

            if (FolderLink.TryFrom(value, out var parsedFolder))
            {
                var file = parsedFolder.Resource.Path.Segments.LastOrDefault()?.ToString();

                if (file != null)
                {
                    if (FileName.TryFrom(file, out var parsedFile, extensionOptional))
                    {
                        if (!parsedFolder.TryUp(out var folderUp))
                        {
                            folderUp = parsedFolder;
                        }

                        link = new FileLink(folderUp, parsedFile);
                    }
                }
            }

            return(link != null);
        }
Example #6
0
        private IEnumerable <FolderLink> ReadFolderLinksCore(FolderResource subfolder, bool recursive = false)
        {
            var folderPath = Link.Then(subfolder).ToString();
            var pattern    = "*.*";
            var option     = recursive ? SearchOption.AllDirectories : SearchOption.TopDirectoryOnly;

            return(Directory.GetDirectories(folderPath, pattern, option).Select(subdirectory => FolderLink.From(subdirectory)));
        }
Example #7
0
 public LocalFolder(FolderLink link)
 {
     Link = link;
 }
Example #8
0
        public static bool TryFrom(string folder, FileResource file, out FileLink link)
        {
            link = FolderLink.TryFrom(folder, out var parsedFolder) ? From(parsedFolder, file) : null;

            return(link != null);
        }
Example #9
0
        //
        // Factory
        //

        public static bool TryFrom(FolderLink folder, string file, out FileLink link)
        {
            link = FileResource.TryFrom(file, out var parsedFile) ? From(folder, parsedFile) : null;

            return(link != null);
        }
Example #10
0
 public FileResource RelativeTo(FolderLink folder) =>
 FileResource.From(Folder.RelativeTo(folder), Name);
Example #11
0
 FileLink(FolderLink folder, FileName name)
 {
     Folder = folder;
     Name   = name;
 }
Example #12
0
 public static FileLink From(FolderLink folder, FileResource file) =>
 new FileLink(folder.Then(file.Folder), file.Name);
Example #13
0
        public static FileLink From(string folder, string file, bool strict = true)
        {
            var parsedFolder = FolderLink.From(folder, strict);

            return(parsedFolder == null ? null : From(parsedFolder, file, strict));
        }
Example #14
0
        public static FileLink From(FolderLink folder, string file, bool strict = true)
        {
            var parsedFile = FileResource.From(file, strict);

            return(parsedFile == null ? null : From(folder, parsedFile));
        }
Example #15
0
 public FileResource RelativeTo(FolderLink folder)
 {
     return(FileResource.From(Folder.RelativeTo(folder), Name));
 }