summaryrefslogtreecommitdiffstats
path: root/resource
diff options
context:
space:
mode:
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2018-01-12 18:06:35 +0100
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2018-01-12 18:06:35 +0100
commit46db900dab9c0e6fcd9d227f10a32fb24f5c8bd9 (patch)
treed3fd208f1fe36d791d92963ec653bc663012be5f /resource
parent60c9f3b1c34b69771e25a66906f150f460d73223 (diff)
resource: Implement Resources.ByPrefix
Fixes #4266
Diffstat (limited to 'resource')
-rw-r--r--resource/resource.go37
-rw-r--r--resource/resource_test.go3
2 files changed, 30 insertions, 10 deletions
diff --git a/resource/resource.go b/resource/resource.go
index 4a535889d..bb84aed79 100644
--- a/resource/resource.go
+++ b/resource/resource.go
@@ -72,22 +72,39 @@ func (r Resources) ByType(tp string) Resources {
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 {
*helpers.PathSpec
mimeTypes media.Types
diff --git a/resource/resource_test.go b/resource/resource_test.go
index fbc66af8f..73d98d62a 100644
--- a/resource/resource_test.go
+++ b/resource/resource_test.go
@@ -126,4 +126,7 @@ func TestResourcesGetByPrefix(t *testing.T) {
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")))
+
}