Sha256: dee7db3a4d1b52f3ea9c78fbd265e25ee2b6f63d06aa281d574689c4f9e0f7c6

Contents?: true

Size: 1.04 KB

Versions: 5

Compression:

Stored size: 1.04 KB

Contents

# frozen_string_literal: true

module SlimLint
  # Abstract lint reporter. Subclass and override {#display_report} to
  # implement a custom lint reporter.
  #
  # @abstract
  class Reporter
    # Creates the reporter that will display the given report.
    #
    # @param logger [SlimLint::Logger]
    def initialize(logger)
      @log = logger
    end

    # Implemented by subclasses to display lints from a {SlimLint::Report}.
    #
    # @param report [SlimLint::Report]
    def display_report(report)
      raise NotImplementedError,
        "Implement `display_report` to display #{report}"
    end

    # Keep tracking all the descendants of this class for the list of available
    # reporters.
    #
    # @return [Array<Class>]
    def self.descendants
      @descendants ||= []
    end

    # Executed when this class is subclassed.
    #
    # @param descendant [Class]
    def self.inherited(descendant)
      descendants << descendant
    end

    private

    # @return [SlimLint::Logger] logger to send output to
    attr_reader :log
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
slim_lint_standard-0.0.2.2 lib/slim_lint/reporter.rb
slim_lint_standard-0.0.2.1 lib/slim_lint/reporter.rb
slim_lint_standard-0.0.2 lib/slim_lint/reporter.rb
slim_lint_standard-0.0.1 lib/slim_lint/reporter.rb
slim_lint_standard-0.0.0 lib/slim_lint/reporter.rb