Commit 954f3076 authored by Stan Hu's avatar Stan Hu

Enable frozen strings in remaining lib/banzai/filter/*.rb files

This also fixes a bug with the ImageLazyLoadFilter not doing the right
thing when an existing class attribute is present.

Part of #47424
parent dc7b4b7b
---
title: Enable frozen strings in remaining lib/banzai/filter/*.rb files
merge_request: 20777
author:
type: performance
# frozen_string_literal: true
module Banzai
module Filter
# HTML filter that moves the value of image `src` attributes to `data-src`
......@@ -5,7 +7,7 @@ module Banzai
class ImageLazyLoadFilter < HTML::Pipeline::Filter
def call
doc.xpath('descendant-or-self::img').each do |img|
img['class'] ||= '' << 'lazy'
img.add_class('lazy')
img['data-src'] = img['src']
img['src'] = LazyImageTagHelper.placeholder_image
end
......
# frozen_string_literal: true
require 'rouge/plugins/common_mark'
require 'rouge/plugins/redcarpet'
......@@ -15,7 +17,7 @@ module Banzai
end
def highlight_node(node)
css_classes = 'code highlight js-syntax-highlight'
css_classes = +'code highlight js-syntax-highlight'
lang = node.attr('lang')
retried = false
......
# frozen_string_literal: true
module Banzai
module Filter
# HTML filter that adds an anchor child element to all Headers in a
......@@ -19,7 +21,7 @@ module Banzai
def call
return doc if context[:no_header_anchors]
result[:toc] = ""
result[:toc] = +""
headers = Hash.new(0)
header_root = current_header = HeaderNode.new
......
......@@ -7,6 +7,20 @@ describe Banzai::Filter::ImageLazyLoadFilter do
%(<img src="#{path}" />)
end
def image_with_class(path, class_attr = nil)
%(<img src="#{path}" class="#{class_attr}"/>)
end
it 'adds a class attribute' do
doc = filter(image('/uploads/e90decf88d8f96fe9e1389afc2e4a91f/test.jpg'))
expect(doc.at_css('img')['class']).to eq 'lazy'
end
it 'appends to the current class attribute' do
doc = filter(image_with_class('/uploads/e90decf88d8f96fe9e1389afc2e4a91f/test.jpg', 'test'))
expect(doc.at_css('img')['class']).to eq 'test lazy'
end
it 'transforms the image src to a data-src' do
doc = filter(image('/uploads/e90decf88d8f96fe9e1389afc2e4a91f/test.jpg'))
expect(doc.at_css('img')['data-src']).to eq '/uploads/e90decf88d8f96fe9e1389afc2e4a91f/test.jpg'
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment