Sha256: c35424e9ff123f3e7f752784bf2f5f0db1e1288f44e62852f30dfb26ec24c856

Contents?: true

Size: 785 Bytes

Versions: 13

Compression:

Stored size: 785 Bytes

Contents

# frozen_string_literal: true
require "nokogiri"
require "forwardable"

module ThemeCheck
  class HtmlVisitor
    attr_reader :checks

    def initialize(checks)
      @checks = checks
    end

    def visit_liquid_file(liquid_file)
      visit(HtmlNode.parse(liquid_file))
    rescue ArgumentError => e
      call_checks(:on_parse_error, e, liquid_file)
    end

    private

    def visit(node)
      call_checks(:on_element, node) if node.element?
      call_checks(:"on_#{node.name}", node)
      node.children.each { |child| visit(child) }
      unless node.literal?
        call_checks(:"after_#{node.name}", node)
        call_checks(:after_element, node) if node.element?
      end
    end

    def call_checks(method, *args)
      checks.call(method, *args)
    end
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
theme-check-1.15.0 lib/theme_check/html_visitor.rb
theme-check-1.14.0 lib/theme_check/html_visitor.rb
theme-check-1.13.0 lib/theme_check/html_visitor.rb
theme-check-1.12.1 lib/theme_check/html_visitor.rb
theme-check-1.12.0 lib/theme_check/html_visitor.rb
theme-check-1.11.0 lib/theme_check/html_visitor.rb
theme-check-1.10.3 lib/theme_check/html_visitor.rb
theme-check-1.10.2 lib/theme_check/html_visitor.rb
theme-check-1.10.1 lib/theme_check/html_visitor.rb
theme-check-1.10.0 lib/theme_check/html_visitor.rb
theme-check-1.9.2 lib/theme_check/html_visitor.rb
theme-check-1.9.1 lib/theme_check/html_visitor.rb
theme-check-1.9.0 lib/theme_check/html_visitor.rb