From 3ea2eb0afb2b3a95898d349c9d28b1ddb03e342c Mon Sep 17 00:00:00 2001 From: Frankie Robertson Date: Thu, 6 Mar 2025 11:24:44 +0200 Subject: [PATCH 1/2] Add package extension for URIs.jl --- Project.toml | 12 ++++++++---- ext/FilePathsBaseURIsExt.jl | 28 ++++++++++++++++++++++++++++ test/runtests.jl | 1 + test/uris.jl | 10 ++++++++++ 4 files changed, 47 insertions(+), 4 deletions(-) create mode 100644 ext/FilePathsBaseURIsExt.jl create mode 100644 test/uris.jl diff --git a/Project.toml b/Project.toml index c03342a..0edcb89 100644 --- a/Project.toml +++ b/Project.toml @@ -12,20 +12,24 @@ Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" [weakdeps] Mmap = "a63ad114-7e13-5084-954f-fe012c677804" Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" +URIs = "5c2747f8-b7ea-4ff2-ba2e-563bfd36b1d4" [extensions] FilePathsBaseMmapExt = "Mmap" FilePathsBaseTestExt = "Test" +FilePathsBaseURIsExt = "URIs" [compat] -julia = "1" -Mmap = "<0.0.1, 1" Compat = "3.33, 4" +Mmap = "<0.0.1, 1" +URIs = "1.5.1" +julia = "1" [extras] JLSO = "9da8a3cd-07a3-59c0-a743-3fdc52c30d11" -Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" Mmap = "a63ad114-7e13-5084-954f-fe012c677804" +Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" +URIs = "5c2747f8-b7ea-4ff2-ba2e-563bfd36b1d4" [targets] -test = ["JLSO", "Mmap", "Test"] +test = ["JLSO", "Mmap", "Test", "URIs"] diff --git a/ext/FilePathsBaseURIsExt.jl b/ext/FilePathsBaseURIsExt.jl new file mode 100644 index 0000000..eef34fc --- /dev/null +++ b/ext/FilePathsBaseURIsExt.jl @@ -0,0 +1,28 @@ +module FilePathsBaseURIsExt +using URIs +using FilePathsBase + +const absent = SubString("absent", 1, 0) + +function URIs.URI(p::AbstractPath; query=absent, fragment=absent) + if isempty(p.root) + throw(ArgumentError("$p is not an absolute path")) + end + + b = IOBuffer() + print(b, "file://") + + if !isempty(p.drive) + print(b, "/") + print(b, p.drive) + end + + for s in p.segments + print(b, "/") + print(b, URIs.escapeuri(s)) + end + + return URIs.URI(URIs.URI(String(take!(b))); query=query, fragment=fragment) +end + +end #module diff --git a/test/runtests.jl b/test/runtests.jl index ddbf65e..5d5a002 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -17,6 +17,7 @@ include(p"testpkg.jl") include(p"mode.jl") include(p"buffer.jl") include(p"system.jl") + include(p"uris.jl") @static if Sys.isunix() # Test that our weird registered path works diff --git a/test/uris.jl b/test/uris.jl new file mode 100644 index 0000000..2ae17bb --- /dev/null +++ b/test/uris.jl @@ -0,0 +1,10 @@ +using URIs +using FilePathsBase + +@testset "URIs" begin + @test string(URIs.URI(p"/foo/bar")) == "file:///foo/bar" + @test string(URIs.URI(p"/foo foo/bar")) == "file:///foo%20foo/bar" + @test_throws ArgumentError URIs.URI(p"foo/bar") + @test string(URIs.URI(WindowsPath("C:\\foo\\bar"))) == "file:///C:/foo/bar" + @test string(URIs.URI(p"/foo/bar", query="querypart", fragment="fragmentpart")) == "file:///foo/bar?querypart#fragmentpart" +end From 617d5c6716b5f0d2856d083da630e557706a7316 Mon Sep 17 00:00:00 2001 From: Frankie Robertson Date: Thu, 6 Mar 2025 11:27:24 +0200 Subject: [PATCH 2/2] Bump version => 0.10.0 --- Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index 0edcb89..8fbd7b3 100644 --- a/Project.toml +++ b/Project.toml @@ -1,7 +1,7 @@ name = "FilePathsBase" uuid = "48062228-2e41-5def-b9a4-89aafe57970f" authors = ["Rory Finnegan"] -version = "0.9.24" +version = "0.10.0" [deps] Compat = "34da2185-b29b-5c13-b0c7-acf172513d20"