diff --git a/src/filters/html.ts b/src/filters/html.ts
index 73be53cb6..b296dc63d 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 e7955387b..2a1013581 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 f40c12d09..460a7aeb1 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 d8bdf93f7..bc54e07ce 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 }}',