Class: Seo::ImageOptimizer

Inherits:
BaseService show all
Defined in:
app/services/seo/image_optimizer.rb

Defined Under Namespace

Classes: Result

Instance Method Summary collapse

Methods inherited from BaseService

#initialize, #log_debug, #log_error, #log_info, #log_warning, #logger, #options, #tagged_logger

Constructor Details

This class inherits a constructor from BaseService

Instance Method Details

#process(html_fragment) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
# File 'app/services/seo/image_optimizer.rb', line 5

def process(html_fragment)
  logger.tagged('Seo::ImageOptimizer') do
    html_doc = Nokogiri::HTML(html_fragment)
    html_doc.xpath('//img').each do |img|
      css_classes = (img['class'] || '').split(' ')
      img['loading'] = 'lazy'
      img['class'] = css_classes.map(&:presence).compact.uniq.join(' ')
    end
    html_out = html_doc.at('body')&.inner_html.presence&.html_safe

    Result.new(html_out: html_out)
  end
end