ref: 46db900dab9c0e6fcd9d227f10a32fb24f5c8bd9
parent: 60c9f3b1c34b69771e25a66906f150f460d73223
author: Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
date: Fri Jan 12 13:06:35 EST 2018
resource: Implement Resources.ByPrefix Fixes #4266
--- a/resource/resource.go
+++ b/resource/resource.go
@@ -72,20 +72,37 @@
func (r Resources) GetByPrefix(prefix string) Resource {prefix = strings.ToLower(prefix)
for _, resource := range r {- 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) {+ if matchesPrefix(resource, prefix) {return resource
}
}
return nil
+}
+
+// ByPrefix gets all resources matching the given base filename prefix, e.g
+// "logo" will match logo.png.
+func (r Resources) ByPrefix(prefix string) Resources {+ var matches Resources
+ prefix = strings.ToLower(prefix)
+ for _, resource := range r {+ if matchesPrefix(resource, prefix) {+ matches = append(matches, resource)
+ }
+ }
+ return matches
+}
+
+func matchesPrefix(r Resource, prefix string) bool {+ var name string
+ f, ok := r.(source.File)
+ if ok {+ name = f.BaseFileName()
+ } else {+ _, name = filepath.Split(r.RelPermalink())
+ }
+ name = strings.ToLower(name)
+
+ return strings.HasPrefix(name, prefix)
}
type Spec struct {--- a/resource/resource_test.go
+++ b/resource/resource_test.go
@@ -126,4 +126,7 @@
assert.Equal("/foo1.css", resources.GetByPrefix("foo1").RelPermalink()) assert.Nil(resources.GetByPrefix("asdfasdf"))+ assert.Equal(2, len(resources.ByPrefix("logo")))+ assert.Equal(1, len(resources.ByPrefix("logo2")))+
}
--
⑨