# frozen_string_literal: true module RuboCop module Cop module Discourse # Do not use Nokogiri::HTML.fragment # Instead use Nokogiri::HTML5.fragment, which is using Nokogumbo parser # # @example # # bad # Nokogiri::HTML.fragment("

test

") # # # good # Nokogiri::HTML5.fragment("

test

") class NoNokogiriHtmlFragment < Cop MSG = "Nokogiri::HTML.fragment is deprecated and should not be used." def_node_matcher :using_nokogiri_html_fragment?, <<-MATCHER (send (const (const nil? :Nokogiri) :HTML) :fragment ...) MATCHER def on_send(node) return if !using_nokogiri_html_fragment?(node) add_offense(node, message: MSG) end end end end end