mirror of
https://github.com/gohugoio/hugo.git
synced 2024-11-21 20:46:30 -05:00
parent
dc2a544fac
commit
f4598a0986
2 changed files with 47 additions and 0 deletions
|
@ -196,3 +196,38 @@ title: "p3"
|
|||
Home: p1|p3|
|
||||
`)
|
||||
}
|
||||
|
||||
// Issue #11279
|
||||
func TestWhereLikeOperator(t *testing.T) {
|
||||
t.Parallel()
|
||||
files := `
|
||||
-- content/p1.md --
|
||||
---
|
||||
title: P1
|
||||
foo: ab
|
||||
---
|
||||
-- content/p2.md --
|
||||
---
|
||||
title: P2
|
||||
foo: abc
|
||||
---
|
||||
-- content/p3.md --
|
||||
---
|
||||
title: P3
|
||||
foo: bc
|
||||
---
|
||||
-- layouts/index.html --
|
||||
<ul>
|
||||
{{- range where site.RegularPages "Params.foo" "like" "^ab" -}}
|
||||
<li>{{ .Title }}</li>
|
||||
{{- end -}}
|
||||
</ul>
|
||||
`
|
||||
b := hugolib.NewIntegrationTestBuilder(
|
||||
hugolib.IntegrationTestConfig{
|
||||
T: t,
|
||||
TxtarString: files,
|
||||
},
|
||||
).Build()
|
||||
b.AssertFileContent("public/index.html", "<ul><li>P1</li><li>P2</li></ul>")
|
||||
}
|
||||
|
|
|
@ -21,6 +21,7 @@ import (
|
|||
"strings"
|
||||
|
||||
"github.com/gohugoio/hugo/common/hreflect"
|
||||
"github.com/gohugoio/hugo/common/hstrings"
|
||||
"github.com/gohugoio/hugo/common/maps"
|
||||
)
|
||||
|
||||
|
@ -272,6 +273,17 @@ func (ns *Namespace) checkCondition(v, mv reflect.Value, op string) (bool, error
|
|||
return false, nil
|
||||
}
|
||||
return false, errors.New("invalid intersect values")
|
||||
case "like":
|
||||
if svp != nil && smvp != nil {
|
||||
re, err := hstrings.GetOrCompileRegexp(*smvp)
|
||||
if err != nil {
|
||||
return false, err
|
||||
}
|
||||
if re.MatchString(*svp) {
|
||||
return true, nil
|
||||
}
|
||||
return false, nil
|
||||
}
|
||||
default:
|
||||
return false, errors.New("no such operator")
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue