mirror of
https://github.com/gohugoio/hugo.git
synced 2024-11-21 20:46:30 -05:00
parent
298ebc37c2
commit
5cc8b58907
2 changed files with 18 additions and 17 deletions
|
@ -535,8 +535,8 @@ func first(limit interface{}, seq interface{}) (interface{}, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// findRE returns a list of strings that match the regular expression. By default all matches
|
// findRE returns a list of strings that match the regular expression. By default all matches
|
||||||
// will be included. The number of matches can be limitted with an optional third parameter.
|
// will be included. The number of matches can be limited with an optional third parameter.
|
||||||
func findRE(expr string, content interface{}, limit ...int) ([]string, error) {
|
func findRE(expr string, content interface{}, limit ...interface{}) ([]string, error) {
|
||||||
re, err := reCache.Get(expr)
|
re, err := reCache.Get(expr)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
@ -546,11 +546,17 @@ func findRE(expr string, content interface{}, limit ...int) ([]string, error) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
if len(limit) > 0 {
|
|
||||||
return re.FindAllString(conv, limit[0]), nil
|
if len(limit) == 0 {
|
||||||
|
return re.FindAllString(conv, -1), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
return re.FindAllString(conv, -1), nil
|
lim, err := cast.ToIntE(limit[0])
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return re.FindAllString(conv, lim), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// last returns the last N items in a rangeable list.
|
// last returns the last N items in a rangeable list.
|
||||||
|
|
|
@ -121,7 +121,7 @@ div: {{div 6 3}}
|
||||||
echoParam: {{ echoParam .Params "langCode" }}
|
echoParam: {{ echoParam .Params "langCode" }}
|
||||||
emojify: {{ "I :heart: Hugo" | emojify }}
|
emojify: {{ "I :heart: Hugo" | emojify }}
|
||||||
eq: {{ if eq .Section "blog" }}current{{ end }}
|
eq: {{ if eq .Section "blog" }}current{{ end }}
|
||||||
findRE: {{ findRE "[G|g]o" "Hugo is a static side generator written in Go." 1 }}
|
findRE: {{ findRE "[G|g]o" "Hugo is a static side generator written in Go." "1" }}
|
||||||
hasPrefix 1: {{ hasPrefix "Hugo" "Hu" }}
|
hasPrefix 1: {{ hasPrefix "Hugo" "Hu" }}
|
||||||
hasPrefix 2: {{ hasPrefix "Hugo" "Fu" }}
|
hasPrefix 2: {{ hasPrefix "Hugo" "Fu" }}
|
||||||
htmlEscape 1: {{ htmlEscape "Cathal Garvey & The Sunshine Band <cathal@foo.bar>" | safeHTML}}
|
htmlEscape 1: {{ htmlEscape "Cathal Garvey & The Sunshine Band <cathal@foo.bar>" | safeHTML}}
|
||||||
|
@ -2233,29 +2233,24 @@ func TestFindRE(t *testing.T) {
|
||||||
for i, this := range []struct {
|
for i, this := range []struct {
|
||||||
expr string
|
expr string
|
||||||
content interface{}
|
content interface{}
|
||||||
limit int
|
limit interface{}
|
||||||
expect []string
|
expect []string
|
||||||
ok bool
|
ok bool
|
||||||
}{
|
}{
|
||||||
{"[G|g]o", "Hugo is a static site generator written in Go.", 2, []string{"go", "Go"}, true},
|
{"[G|g]o", "Hugo is a static site generator written in Go.", 2, []string{"go", "Go"}, true},
|
||||||
{"[G|g]o", "Hugo is a static site generator written in Go.", -1, []string{"go", "Go"}, true},
|
{"[G|g]o", "Hugo is a static site generator written in Go.", -1, []string{"go", "Go"}, true},
|
||||||
{"[G|g]o", "Hugo is a static site generator written in Go.", 1, []string{"go"}, true},
|
{"[G|g]o", "Hugo is a static site generator written in Go.", 1, []string{"go"}, true},
|
||||||
{"[G|g]o", "Hugo is a static site generator written in Go.", 0, []string(nil), true},
|
{"[G|g]o", "Hugo is a static site generator written in Go.", "1", []string{"go"}, true},
|
||||||
{"[G|go", "Hugo is a static site generator written in Go.", 0, []string(nil), false},
|
{"[G|g]o", "Hugo is a static site generator written in Go.", nil, []string(nil), true},
|
||||||
{"[G|g]o", t, 0, []string(nil), false},
|
{"[G|go", "Hugo is a static site generator written in Go.", nil, []string(nil), false},
|
||||||
|
{"[G|g]o", t, nil, []string(nil), false},
|
||||||
} {
|
} {
|
||||||
var (
|
var (
|
||||||
res []string
|
res []string
|
||||||
err error
|
err error
|
||||||
)
|
)
|
||||||
|
|
||||||
if this.limit >= 0 {
|
res, err = findRE(this.expr, this.content, this.limit)
|
||||||
res, err = findRE(this.expr, this.content, this.limit)
|
|
||||||
|
|
||||||
} else {
|
|
||||||
res, err = findRE(this.expr, this.content)
|
|
||||||
}
|
|
||||||
|
|
||||||
if err != nil && this.ok {
|
if err != nil && this.ok {
|
||||||
t.Errorf("[%d] returned an unexpected error: %s", i, err)
|
t.Errorf("[%d] returned an unexpected error: %s", i, err)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue