mirror of
https://github.com/harttle/liquidjs.git
synced 2026-09-15 04:10:40 -07:00
feat: add replace_last filter
This commit is contained in:
@@ -82,6 +82,15 @@ export function replace_first (v: string, arg1: string, arg2: string) {
|
||||
return stringify(v).replace(String(arg1), arg2)
|
||||
}
|
||||
|
||||
export function replace_last (v: string, arg1: string, arg2: string) {
|
||||
const str = stringify(v)
|
||||
const pattern = String(arg1)
|
||||
const index = str.lastIndexOf(pattern)
|
||||
if (index === -1) return str
|
||||
const replacement = String(arg2)
|
||||
return str.substring(0, index) + replacement + str.substring(index + pattern.length)
|
||||
}
|
||||
|
||||
export function truncate (v: string, l = 50, o = '...') {
|
||||
v = stringify(v)
|
||||
if (v.length <= l) return v
|
||||
|
||||
@@ -202,4 +202,14 @@ describe('filters/string', function () {
|
||||
return test('{{ "1 2 3 4 5 6 7 8 9 a b c d e f" | truncatewords }}', '1 2 3 4 5 6 7 8 9 a b c d e f...')
|
||||
})
|
||||
})
|
||||
describe('replace_last', function () {
|
||||
it('should replace the last occurrence of substring', function () {
|
||||
return test('{{ "Take my protein pills and put my helmet on" | replace_last: "my", "your" }}',
|
||||
'Take my protein pills and put your helmet on')
|
||||
})
|
||||
it('should handle substring not found', function () {
|
||||
return test('{{ "Take my protein pills and put my helmet on" | replace_last: "nosuchthing", "your" }}',
|
||||
'Take my protein pills and put my helmet on')
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user