diff --git a/lib/jekyll/filters.rb b/lib/jekyll/filters.rb index 183c9c58..02523d9c 100644 --- a/lib/jekyll/filters.rb +++ b/lib/jekyll/filters.rb @@ -117,7 +117,7 @@ module Jekyll # # Returns the escaped String. def xml_escape(input) - CGI.escapeHTML(input.to_s) + input.to_s.encode(:xml => :attr).gsub(/\A"|"\Z/, "") end # CGI escape a string for use in a URL. Replaces any special characters @@ -308,7 +308,7 @@ module Jekyll # # Returns a String representation of the object. def inspect(input) - CGI.escapeHTML(input.inspect) + xml_escape(input.inspect) end private diff --git a/test/test_filters.rb b/test/test_filters.rb index de59bc02..4ded0cd6 100644 --- a/test/test_filters.rb +++ b/test/test_filters.rb @@ -394,6 +394,10 @@ class TestFilters < JekyllUnitTest should "return a HTML-escaped string representation of an object" do assert_equal "{"<a>"=>1}", @filter.inspect({ "" => 1 }) end + + should "quote strings" do + assert_equal ""string"", @filter.inspect("string") + end end context "slugify filter" do