resource: Make GetByPrefix work for Page resources
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Fri, 12 Jan 2018 16:46:50 +0000 (17:46 +0100)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Fri, 12 Jan 2018 16:46:50 +0000 (17:46 +0100)
Fixes #4264

hugolib/page_bundler_test.go
resource/resource.go

index f43766fb8fb6702249658ef3a6016ca72e3422f6..084119241c2509f252d29fba714f24ee7fcebfde 100644 (file)
@@ -111,6 +111,10 @@ func TestPageBundlerSite(t *testing.T) {
                                assert.Contains(firstPage.Content, "TheContent")
                                assert.Len(leafBundle1.Resources, 6) // 2 pages 3 images 1 custom mime type
 
+                               assert.Equal(firstPage, pageResources.GetByPrefix("1"))
+                               assert.Equal(secondPage, pageResources.GetByPrefix("2"))
+                               assert.Nil(pageResources.GetByPrefix("doesnotexist"))
+
                                imageResources := leafBundle1.Resources.ByType("image")
                                assert.Len(imageResources, 3)
                                image := imageResources[0]
index 9cf9524b842968f227f719176256b76be9d01fe7..4a535889d69b3224d20ddfaa6322dcbe13fc2a24 100644 (file)
@@ -72,8 +72,15 @@ func (r Resources) ByType(tp string) Resources {
 func (r Resources) GetByPrefix(prefix string) Resource {
        prefix = strings.ToLower(prefix)
        for _, resource := range r {
-               _, name := filepath.Split(resource.RelPermalink())
+               var name string
+               f, ok := resource.(source.File)
+               if ok {
+                       name = f.BaseFileName()
+               } else {
+                       _, name = filepath.Split(resource.RelPermalink())
+               }
                name = strings.ToLower(name)
+
                if strings.HasPrefix(name, prefix) {
                        return resource
                }