From 88aa63fd58b5a5824c031acc6f3e4072bedd262f Mon Sep 17 00:00:00 2001 From: Francisco Soto Date: Thu, 24 Aug 2023 12:37:30 -0700 Subject: [PATCH] fix: handle windows newlines on `newline_to_br` and `strip_newlines` --- src/filters/html.ts | 2 +- src/filters/string.ts | 2 +- test/integration/filters/html.spec.ts | 2 +- test/integration/filters/string.spec.ts | 6 ++++++ 4 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/filters/html.ts b/src/filters/html.ts index 73be53cb64..b296dc63db 100644 --- a/src/filters/html.ts +++ b/src/filters/html.ts @@ -28,7 +28,7 @@ export function escape_once (str: string) { } export function newline_to_br (v: string) { - return stringify(v).replace(/\n/g, '
\n') + return stringify(v).replace(/\r?\n/gm, '
\n') } export function strip_html (v: string) { diff --git a/src/filters/string.ts b/src/filters/string.ts index e7955387b4..2a10135818 100644 --- a/src/filters/string.ts +++ b/src/filters/string.ts @@ -74,7 +74,7 @@ export function strip (v: string, chars?: string) { } export function strip_newlines (v: string) { - return stringify(v).replace(/\n/g, '') + return stringify(v).replace(/\r?\n/gm, '') } export function capitalize (str: string) { diff --git a/test/integration/filters/html.spec.ts b/test/integration/filters/html.spec.ts index f40c12d092..460a7aeb19 100644 --- a/test/integration/filters/html.spec.ts +++ b/test/integration/filters/html.spec.ts @@ -30,7 +30,7 @@ describe('filters/html', function () { it('should support string_with_newlines', function () { const src = '{% capture string_with_newlines %}\n' + 'Hello\n' + - 'there\n' + + 'there\r\n' + '{% endcapture %}' + '{{ string_with_newlines | newline_to_br }}' const dst = '
\n' + diff --git a/test/integration/filters/string.spec.ts b/test/integration/filters/string.spec.ts index d8bdf93f76..bc54e07ce6 100644 --- a/test/integration/filters/string.spec.ts +++ b/test/integration/filters/string.spec.ts @@ -137,6 +137,12 @@ describe('filters/string', function () { '{{ string_with_newlines | strip_newlines }}', 'Hellothere') }) + it('should support strip_newlines on Windows newlines ', function () { + return test('{% capture string_with_newlines %}\n' + + 'Hello\r\nthere\n{% endcapture %}' + + '{{ string_with_newlines | strip_newlines }}', + 'Hellothere') + }) describe('truncate', function () { it('should truncate when string too long', function () { return test('{{ "Ground control to Major Tom." | truncate: 20 }}',