From ed73794f82b6a7fc529c7bd85761c225e7bc5a09 Mon Sep 17 00:00:00 2001 From: Justin Li Date: Fri, 22 Feb 2019 12:53:54 -0500 Subject: [PATCH] Preserve existing strip_html behaviour for weird inputs --- lib/liquid/standardfilters.rb | 11 +++++++---- test/integration/standard_filter_test.rb | 3 +++ 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/lib/liquid/standardfilters.rb b/lib/liquid/standardfilters.rb index d7e2dbb8..af9b30b8 100644 --- a/lib/liquid/standardfilters.rb +++ b/lib/liquid/standardfilters.rb @@ -11,12 +11,12 @@ module Liquid "'".freeze => '''.freeze } HTML_ESCAPE_ONCE_REGEXP = /["><']|&(?!([a-zA-Z]+|(#\d+));)/ - STRIP_HTML = Regexp.union( + STRIP_HTML_BLOCKS = Regexp.union( //m, //m, - //m, - /<.*?>/m + //m ) + STRIP_HTML_TAGS = /<.*?>/m # Return the size of an array or of an string def size(input) @@ -108,7 +108,10 @@ module Liquid end def strip_html(input) - input.to_s.gsub(STRIP_HTML, ''.freeze) + empty = ''.freeze + result = input.to_s.gsub(STRIP_HTML_BLOCKS, empty) + result.gsub!(STRIP_HTML_TAGS, empty) + result end # Remove all newlines from the string diff --git a/test/integration/standard_filter_test.rb b/test/integration/standard_filter_test.rb index d39472e0..d7a575e8 100644 --- a/test/integration/standard_filter_test.rb +++ b/test/integration/standard_filter_test.rb @@ -177,6 +177,9 @@ class StandardFiltersTest < Minitest::Test assert_equal 'test', @filters.strip_html("test") assert_equal 'test', @filters.strip_html("test") assert_equal '', @filters.strip_html(nil) + + # Quirk of the existing implementation + assert_equal 'foo;', @filters.strip_html("<<") end def test_join