fix: truncatewords should use at least one word, #537

This commit is contained in:
Harttle
2022-10-21 14:40:25 +08:00
committed by Harttle
parent 71a1dc6e72
commit 32f613fb43
2 changed files with 8 additions and 3 deletions
+4 -3
View File
@@ -89,9 +89,10 @@ export function truncate (v: string, l = 50, o = '...') {
return v.substring(0, l - o.length) + o
}
export function truncatewords (v: string, l = 15, o = '...') {
export function truncatewords (v: string, words = 15, o = '...') {
const arr = stringify(v).split(/\s+/)
let ret = arr.slice(0, l).join(' ')
if (arr.length >= l) ret += o
if (words <= 0) words = 1
let ret = arr.slice(0, words).join(' ')
if (arr.length >= words) ret += o
return ret
}
@@ -172,6 +172,10 @@ describe('filters/string', function () {
})
})
describe('truncatewords', function () {
it('should truncate to 1 words if less than 1', function () {
return test('{{ "Ground control to Major Tom." | truncatewords: 0 }}',
'Ground...')
})
it('should truncate when too many words', function () {
return test('{{ "Ground control to Major Tom." | truncatewords: 3 }}',
'Ground control to...')