mirror of
https://github.com/harttle/liquidjs.git
synced 2026-09-15 04:10:40 -07:00
feat: add remove_last filter
This commit is contained in:
@@ -39,6 +39,14 @@ export function remove_first (v: string, l: string) {
|
|||||||
return stringify(v).replace(String(l), '')
|
return stringify(v).replace(String(l), '')
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function remove_last (v: string, l: string) {
|
||||||
|
const str = stringify(v)
|
||||||
|
const pattern = String(l)
|
||||||
|
const index = str.lastIndexOf(pattern)
|
||||||
|
if (index === -1) return str
|
||||||
|
return str.substring(0, index) + str.substring(index + pattern.length + 1)
|
||||||
|
}
|
||||||
|
|
||||||
export function rstrip (str: string, chars?: string) {
|
export function rstrip (str: string, chars?: string) {
|
||||||
if (chars) {
|
if (chars) {
|
||||||
chars = escapeRegExp(stringify(chars))
|
chars = escapeRegExp(stringify(chars))
|
||||||
|
|||||||
@@ -202,13 +202,23 @@ 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...')
|
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('remove_last', function () {
|
||||||
|
it('should remove the last occurrence of substring', function () {
|
||||||
|
return test('{{ "I strained to see the train through the rain" | remove_last: "rain" }}',
|
||||||
|
'I strained to see the train through the ')
|
||||||
|
})
|
||||||
|
it('should handle substring not found', function () {
|
||||||
|
return test('{{ "I strained to see the train through the rain" | remove_last: "no such thing" }}',
|
||||||
|
'I strained to see the train through the rain')
|
||||||
|
})
|
||||||
|
})
|
||||||
describe('replace_last', function () {
|
describe('replace_last', function () {
|
||||||
it('should replace the last occurrence of substring', 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" }}',
|
return test('{{ "Take my protein pills and put my helmet on" | replace_last: "my", "your" }}',
|
||||||
'Take my protein pills and put your helmet on')
|
'Take my protein pills and put your helmet on')
|
||||||
})
|
})
|
||||||
it('should handle substring not found', function () {
|
it('should handle substring not found', function () {
|
||||||
return test('{{ "Take my protein pills and put my helmet on" | replace_last: "nosuchthing", "your" }}',
|
return test('{{ "Take my protein pills and put my helmet on" | replace_last: "no such thing", "your" }}',
|
||||||
'Take my protein pills and put my helmet on')
|
'Take my protein pills and put my helmet on')
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user