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); }
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); }
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); }
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); }
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); }
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))); }
public LocalFolder(FolderLink link) { Link = link; }
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); }
// // 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); }
public FileResource RelativeTo(FolderLink folder) => FileResource.From(Folder.RelativeTo(folder), Name);
FileLink(FolderLink folder, FileName name) { Folder = folder; Name = name; }
public static FileLink From(FolderLink folder, FileResource file) => new FileLink(folder.Then(file.Folder), file.Name);
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)); }
public static FileLink From(FolderLink folder, string file, bool strict = true) { var parsedFile = FileResource.From(file, strict); return(parsedFile == null ? null : From(folder, parsedFile)); }
public FileResource RelativeTo(FolderLink folder) { return(FileResource.From(Folder.RelativeTo(folder), Name)); }