Skip to content

Commit c0a1c1c

Browse files
committed
feat: add implicit operators for VFSDirectoryPath and VFSFilePath
1 parent 93898c1 commit c0a1c1c

File tree

12 files changed

+113
-13
lines changed

12 files changed

+113
-13
lines changed

Atypical.VirtualFileSystem.DemoCli/Commands/DemonstrateVFS.cs

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,33 @@
22

33
namespace Atypical.VirtualFileSystem.DemoCli.Commands;
44

5+
public class BugDeleteFolder : Command
6+
{
7+
public override int Execute(CommandContext context)
8+
{
9+
// Create a virtual file system
10+
var factory = new VirtualFileSystemFactory();
11+
var vfs = factory.CreateFileSystem();
12+
13+
// Create folders
14+
vfs.CreateDirectory("/Assets");
15+
vfs.CreateDirectory("/Assets/New Folder");
16+
vfs.CreateDirectory("/Assets/New Folder 1");
17+
18+
// Delete folder
19+
vfs.DeleteDirectory("/Assets/New Folder 1");
20+
21+
var paths = vfs.Index.GetPathsStartingWith("/Assets/New Folder");
22+
23+
foreach (var path in paths)
24+
{
25+
AnsiConsole.MarkupLine($"[red]{path}[/]");
26+
}
27+
28+
return 0;
29+
}
30+
}
31+
532
public class DemonstrateVFS : Command
633
{
734
public override int Execute(CommandContext context)

Atypical.VirtualFileSystem.DemoCli/Program.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
app.Configure(config =>
77
{
8-
config.AddCommand<DemonstrateVFS>("demo");
8+
config.AddCommand<BugDeleteFolder>("demo");
99
});
1010

1111
app.Run(args);

Directory.Build.props

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<Project>
22
<PropertyGroup>
3-
<TargetFramework>net9.0</TargetFramework>
3+
<TargetFrameworks>net8.0;net9.0</TargetFrameworks>
44
<ImplicitUsings>enable</ImplicitUsings>
55
<Nullable>enable</Nullable>
66
<LangVersion>12</LangVersion>
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
#### [Atypical.VirtualFileSystem.Core](VirtualFileSystem.md 'VirtualFileSystem')
2+
### [Atypical.VirtualFileSystem.Core](VirtualFileSystem.md#Atypical.VirtualFileSystem.Core 'Atypical.VirtualFileSystem.Core').[VFSDirectoryPath](VFSDirectoryPath.md 'Atypical.VirtualFileSystem.Core.VFSDirectoryPath')
3+
4+
## VFSDirectoryPath.implicit operator VFSDirectoryPath(string) Operator
5+
6+
Implicit conversion from string.
7+
This allows you to use a string as a [VFSDirectoryPath](VFSDirectoryPath.md 'Atypical.VirtualFileSystem.Core.VFSDirectoryPath').
8+
9+
```csharp
10+
public static Atypical.VirtualFileSystem.Core.VFSDirectoryPath implicit operator VFSDirectoryPath(string path);
11+
```
12+
#### Parameters
13+
14+
<a name='Atypical.VirtualFileSystem.Core.VFSDirectoryPath.op_ImplicitAtypical.VirtualFileSystem.Core.VFSDirectoryPath(string).path'></a>
15+
16+
`path` [System.String](https://docs.microsoft.com/en-us/dotnet/api/System.String 'System.String')
17+
18+
The path to convert.
19+
20+
#### Returns
21+
[VFSDirectoryPath](VFSDirectoryPath.md 'Atypical.VirtualFileSystem.Core.VFSDirectoryPath')
22+
The directory path.

docs/api/VFSDirectoryPath.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,4 +29,5 @@ Implements [System.IEquatable&lt;](https://docs.microsoft.com/en-us/dotnet/api/S
2929

3030
| Operators | |
3131
| :--- | :--- |
32+
| [implicit operator VFSDirectoryPath(string)](VFSDirectoryPath.implicitoperatorVFSDirectoryPath(string).md 'Atypical.VirtualFileSystem.Core.VFSDirectoryPath.op_Implicit Atypical.VirtualFileSystem.Core.VFSDirectoryPath(string)') | Implicit conversion from string.<br/>This allows you to use a string as a [VFSDirectoryPath](VFSDirectoryPath.md 'Atypical.VirtualFileSystem.Core.VFSDirectoryPath'). |
3233
| [implicit operator string(VFSDirectoryPath)](VFSDirectoryPath.implicitoperatorstring(VFSDirectoryPath).md 'Atypical.VirtualFileSystem.Core.VFSDirectoryPath.op_Implicit string(Atypical.VirtualFileSystem.Core.VFSDirectoryPath)') | Implicit conversion to string<br/>This allows you to use a [VFSDirectoryPath](VFSDirectoryPath.md 'Atypical.VirtualFileSystem.Core.VFSDirectoryPath') as a string. |
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
#### [Atypical.VirtualFileSystem.Core](VirtualFileSystem.md 'VirtualFileSystem')
2+
### [Atypical.VirtualFileSystem.Core](VirtualFileSystem.md#Atypical.VirtualFileSystem.Core 'Atypical.VirtualFileSystem.Core').[VFSFilePath](VFSFilePath.md 'Atypical.VirtualFileSystem.Core.VFSFilePath')
3+
4+
## VFSFilePath.implicit operator VFSFilePath(string) Operator
5+
6+
Implicit conversion from string.
7+
This allows you to use a string as a [VFSFilePath](VFSFilePath.md 'Atypical.VirtualFileSystem.Core.VFSFilePath').
8+
9+
```csharp
10+
public static Atypical.VirtualFileSystem.Core.VFSFilePath implicit operator VFSFilePath(string path);
11+
```
12+
#### Parameters
13+
14+
<a name='Atypical.VirtualFileSystem.Core.VFSFilePath.op_ImplicitAtypical.VirtualFileSystem.Core.VFSFilePath(string).path'></a>
15+
16+
`path` [System.String](https://docs.microsoft.com/en-us/dotnet/api/System.String 'System.String')
17+
18+
The path to convert.
19+
20+
#### Returns
21+
[VFSFilePath](VFSFilePath.md 'Atypical.VirtualFileSystem.Core.VFSFilePath')
22+
The file path.

docs/api/VFSFilePath.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,4 +25,5 @@ Implements [System.IEquatable&lt;](https://docs.microsoft.com/en-us/dotnet/api/S
2525

2626
| Operators | |
2727
| :--- | :--- |
28+
| [implicit operator VFSFilePath(string)](VFSFilePath.implicitoperatorVFSFilePath(string).md 'Atypical.VirtualFileSystem.Core.VFSFilePath.op_Implicit Atypical.VirtualFileSystem.Core.VFSFilePath(string)') | Implicit conversion from string.<br/>This allows you to use a string as a [VFSFilePath](VFSFilePath.md 'Atypical.VirtualFileSystem.Core.VFSFilePath'). |
2829
| [implicit operator string(VFSFilePath)](VFSFilePath.implicitoperatorstring(VFSFilePath).md 'Atypical.VirtualFileSystem.Core.VFSFilePath.op_Implicit string(Atypical.VirtualFileSystem.Core.VFSFilePath)') | Implicit conversion to string<br/>This allows you to use a [VFSFilePath](VFSFilePath.md 'Atypical.VirtualFileSystem.Core.VFSFilePath') as a string. |

docs/api/VirtualFileSystem.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,8 @@
127127
The file path is relative to the root of the virtual file system.
128128
- **[ToString()](VFSDirectoryPath.ToString().md 'Atypical.VirtualFileSystem.Core.VFSDirectoryPath.ToString()')** `Method` Returns a string that represents the current object.
129129
The string representation of the directory path is the path itself.
130+
- **[implicit operator VFSDirectoryPath(string)](VFSDirectoryPath.implicitoperatorVFSDirectoryPath(string).md 'Atypical.VirtualFileSystem.Core.VFSDirectoryPath.op_Implicit Atypical.VirtualFileSystem.Core.VFSDirectoryPath(string)')** `Operator` Implicit conversion from string.
131+
This allows you to use a string as a [VFSDirectoryPath](VFSDirectoryPath.md 'Atypical.VirtualFileSystem.Core.VFSDirectoryPath').
130132
- **[implicit operator string(VFSDirectoryPath)](VFSDirectoryPath.implicitoperatorstring(VFSDirectoryPath).md 'Atypical.VirtualFileSystem.Core.VFSDirectoryPath.op_Implicit string(Atypical.VirtualFileSystem.Core.VFSDirectoryPath)')** `Operator` Implicit conversion to string
131133
This allows you to use a [VFSDirectoryPath](VFSDirectoryPath.md 'Atypical.VirtualFileSystem.Core.VFSDirectoryPath') as a string.
132134
- **[VFSDirectoryRenamedArgs](VFSDirectoryRenamedArgs.md 'Atypical.VirtualFileSystem.Core.VFSDirectoryRenamedArgs')** `Class` Provides data for the DirectoryRenamed event.
@@ -173,6 +175,8 @@
173175
The file path is relative to the root of the virtual file system.
174176
- **[ToString()](VFSFilePath.ToString().md 'Atypical.VirtualFileSystem.Core.VFSFilePath.ToString()')** `Method` Returns a string that represents the current object.
175177
The file path is relative to the root of the virtual file system.
178+
- **[implicit operator VFSFilePath(string)](VFSFilePath.implicitoperatorVFSFilePath(string).md 'Atypical.VirtualFileSystem.Core.VFSFilePath.op_Implicit Atypical.VirtualFileSystem.Core.VFSFilePath(string)')** `Operator` Implicit conversion from string.
179+
This allows you to use a string as a [VFSFilePath](VFSFilePath.md 'Atypical.VirtualFileSystem.Core.VFSFilePath').
176180
- **[implicit operator string(VFSFilePath)](VFSFilePath.implicitoperatorstring(VFSFilePath).md 'Atypical.VirtualFileSystem.Core.VFSFilePath.op_Implicit string(Atypical.VirtualFileSystem.Core.VFSFilePath)')** `Operator` Implicit conversion to string
177181
This allows you to use a [VFSFilePath](VFSFilePath.md 'Atypical.VirtualFileSystem.Core.VFSFilePath') as a string.
178182
- **[VFSFileRenamedArgs](VFSFileRenamedArgs.md 'Atypical.VirtualFileSystem.Core.VFSFileRenamedArgs')** `Class` Provides data for the FileRenamed event.

docs/links

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,12 @@ T:Atypical.VirtualFileSystem.Core.VFSNode|VFSNode.md|VFSNode
3434
M:Atypical.VirtualFileSystem.Core.VFSDirectoryPath.#ctor(System.String)|VFSDirectoryPath.VFSDirectoryPath(string).md|VFSDirectoryPath(string)
3535
M:Atypical.VirtualFileSystem.Core.VFSDirectoryPath.ToString|VFSDirectoryPath.ToString().md|ToString()
3636
M:Atypical.VirtualFileSystem.Core.VFSDirectoryPath.op_Implicit(Atypical.VirtualFileSystem.Core.VFSDirectoryPath)~System.String|VFSDirectoryPath.implicitoperatorstring(VFSDirectoryPath).md|implicit operator string(VFSDirectoryPath)
37+
M:Atypical.VirtualFileSystem.Core.VFSDirectoryPath.op_Implicit(System.String)~Atypical.VirtualFileSystem.Core.VFSDirectoryPath|VFSDirectoryPath.implicitoperatorVFSDirectoryPath(string).md|implicit operator VFSDirectoryPath(string)
3738
T:Atypical.VirtualFileSystem.Core.VFSDirectoryPath|VFSDirectoryPath.md|VFSDirectoryPath
3839
M:Atypical.VirtualFileSystem.Core.VFSFilePath.#ctor(System.String)|VFSFilePath.VFSFilePath(string).md|VFSFilePath(string)
3940
M:Atypical.VirtualFileSystem.Core.VFSFilePath.ToString|VFSFilePath.ToString().md|ToString()
4041
M:Atypical.VirtualFileSystem.Core.VFSFilePath.op_Implicit(Atypical.VirtualFileSystem.Core.VFSFilePath)~System.String|VFSFilePath.implicitoperatorstring(VFSFilePath).md|implicit operator string(VFSFilePath)
42+
M:Atypical.VirtualFileSystem.Core.VFSFilePath.op_Implicit(System.String)~Atypical.VirtualFileSystem.Core.VFSFilePath|VFSFilePath.implicitoperatorVFSFilePath(string).md|implicit operator VFSFilePath(string)
4143
T:Atypical.VirtualFileSystem.Core.VFSFilePath|VFSFilePath.md|VFSFilePath
4244
P:Atypical.VirtualFileSystem.Core.VFSPath.Value|VFSPath.Value.md|Value
4345
P:Atypical.VirtualFileSystem.Core.VFSPath.Parent|VFSPath.Parent.md|Parent

src/Atypical.VirtualFileSystem.Core/Atypical.VirtualFileSystem.Core.csproj

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -39,22 +39,16 @@
3939
"Virtual File System" is an attempt to solve this problem. Currently, this library is at an early stage of development. If you need additional functionality, I invite you to open an issue to discuss it.
4040
</Description>
4141
<PackageTags>virtual filesystem;testing;core;net8</PackageTags>
42-
<Copyright>Copyright (c) 2022-2023 Atypical Consulting SRL</Copyright>
42+
<Copyright>Copyright (c) 2022-2024 Atypical Consulting SRL</Copyright>
4343
<PackageProjectUrl>https://github.com/Atypical-Consulting/VirtualFileSystem</PackageProjectUrl>
4444
<RepositoryUrl>https://github.com/Atypical-Consulting/VirtualFileSystem.git</RepositoryUrl>
4545
<RepositoryType>git</RepositoryType>
4646
<RepositoryBranch>main</RepositoryBranch>
4747
<PackageReleaseNotes>
4848
## Changes
4949

50-
- build(deps): bump JetBrains/qodana-action from 2023.2 to 2023.3 @dependabot (#85)
51-
- build(deps): bump actions/setup-dotnet from 3 to 4 @dependabot (#83)
52-
- build(deps): bump release-drafter/release-drafter from 5 to 6 @dependabot (#84)
53-
- build(deps): bump actions/checkout from 3 to 4 @dependabot (#86)
54-
- build(deps): bump actions/cache from 3 to 4 @dependabot (#87)
55-
- Features/undo redo @phmatray (#82)
56-
- upgrade dependencies @phmatray (#80)
57-
- build(deps): bump Spectre.Console from 0.47.0 to 0.48.0 @dependabot (#70)
50+
- Add support for .NET 9.0
51+
- Drop support for .NET 6.0
5852
</PackageReleaseNotes>
5953
<PackageRequireLicenseAcceptance>false</PackageRequireLicenseAcceptance>
6054
<PackageLanguage>en-US</PackageLanguage>

0 commit comments

Comments
 (0)