Sha256: 0d221e7ca8c2c98beba143cad836521f3981eb09a248567cadaf409f4ca11c64

Contents?: true

Size: 1.17 KB

Versions: 11

Compression:

Stored size: 1.17 KB

Contents

# frozen_string_literal: true

module PlatformosCheck
  # Reports missing content_for_layout in layouts
  class RequiredLayoutObject < LiquidCheck
    severity :error
    category :liquid
    doc docs_url(__FILE__)

    def initialize
      @content_for_layout_found = false
    end

    def on_document(node)
      @layout_platformos_app_node = node if node.app_file.layout?
    end

    def on_variable(node)
      return unless node.value.name.is_a?(Liquid::VariableLookup)

      @content_for_layout_found ||= node.value.name.name == "content_for_layout"
    end

    def after_document(node)
      return unless node.app_file.layout?

      add_missing_object_offense("content_for_layout", "</body>") unless @content_for_layout_found
    end

    private

    def add_missing_object_offense(name, tag)
      add_offense("layout must include {{#{name}}}", node: @layout_platformos_app_node) do
        if @layout_platformos_app_node.source.index(tag)
          @layout_platformos_app_node.source.insert(@layout_platformos_app_node.source.index(tag), "  {{ #{name} }}\n  ")
          @layout_platformos_app_node.markup = @layout_platformos_app_node.source
        end
      end
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
platformos-check-0.4.0 lib/platformos_check/checks/required_layout_object.rb
platformos-check-0.3.3 lib/platformos_check/checks/required_layout_object.rb
platformos-check-0.3.1 lib/platformos_check/checks/required_layout_object.rb
platformos-check-0.3.0 lib/platformos_check/checks/required_layout_object.rb
platformos-check-0.2.2 lib/platformos_check/checks/required_layout_object.rb
platformos-check-0.2.1 lib/platformos_check/checks/required_layout_object.rb
platformos-check-0.2.0 lib/platformos_check/checks/required_layout_object.rb
platformos-check-0.1.0 lib/platformos_check/checks/required_layout_object.rb
platformos-check-0.0.3 lib/platformos_check/checks/required_layout_object.rb
platformos-check-0.0.2 lib/platformos_check/checks/required_layout_object.rb
platformos-check-0.0.1 lib/platformos_check/checks/required_layout_object.rb