feat: Add support for the Jekyll sample filter (#612)

* Add support for the Jekyll sample filter

See https://jekyllrb.com/docs/liquid/filters

I am sorting the array randomly and then picking the first N items or all items if there is no sample limit.

* Remove incorrect spaces before parens

Typo and copy-paste meet
This commit is contained in:
Tomáš Hübelbauer
2023-05-27 00:55:39 +08:00
committed by GitHub
parent dca9ab52b8
commit ba8b842452
2 changed files with 25 additions and 0 deletions
+11
View File
@@ -88,3 +88,14 @@ export function uniq<T> (arr: T[]): T[] {
return true
})
}
export function sample<T> (v: T[] | string, count: number | undefined = undefined): T[] | string {
v = toValue(v)
if (isNil(v)) return []
if (!isArray(v)) {
v = stringify(v)
return [...v].sort(() => Math.random()).slice(0, count).join('')
}
return [...v].sort(() => Math.random()).slice(0, count)
}