From 1b0cd5728432bd55967f47326ce73c64e5cba7ba Mon Sep 17 00:00:00 2001 From: Matthew Rich Date: Fri, 25 Jul 2025 07:08:40 +0000 Subject: [PATCH] add URI.FindIn(SearchPath) to resolve relative paths --- internal/folio/uri.go | 7 +++++++ internal/folio/uri_test.go | 10 ++++++++++ 2 files changed, 17 insertions(+) diff --git a/internal/folio/uri.go b/internal/folio/uri.go index 07a4341..eff0fc4 100644 --- a/internal/folio/uri.go +++ b/internal/folio/uri.go @@ -57,6 +57,13 @@ func (u URI) Parse() data.URIParser { return nil } +func (u *URI) FindIn(s *SearchPath) { + if s == nil { + s = NewSearchPath(ConfigKey("system.importpath").GetStringSlice()) + } + *u = s.FindURI(*u) +} + func (u URI) Exists() bool { return transport.ExistsURI(string(u)) } diff --git a/internal/folio/uri_test.go b/internal/folio/uri_test.go index 4b1f82a..5aacf0b 100644 --- a/internal/folio/uri_test.go +++ b/internal/folio/uri_test.go @@ -37,3 +37,13 @@ func TestURINewResource(t *testing.T) { } +func TestURIFindIn(t *testing.T) { + searchPath := NewSearchPath(ConfigKey("system.importpath").GetStringSlice()) + assert.Nil(t, searchPath.AddPath(string(TempDir))) + assert.Nil(t, TempDir.CreateFile("bar", "testdata")) + + var file URI = "file://bar" + file.FindIn(searchPath) + assert.True(t, file.Exists()) + assert.Equal(t, string(file), fmt.Sprintf("file://%s/bar", TempDir)) +}