Sha256: 36962b6d019fe9ffc3652cf0cf00e436747a15d5187a51076191e01ea4cb4e89

Contents?: true

Size: 1.17 KB

Versions: 3

Compression:

Stored size: 1.17 KB

Contents

module Pelusa
  class Runner
    # Public: Initializes an Analyzer.
    #
    # lints    - The lints to check the code for.
    # reporter - The Reporter to use. Will be used to report back the results in
    #            methods such as #run.
    def initialize(lints, reporter)
      @lints    = lints
      @reporter = reporter
    end

    # Public: Runs the analyzer on a set of files.
    #
    # Returns an Array of Reports of those file runs.
    def run(files)
      reporters = Array(files).map do |file|
        run_file(file)
      end
      @reporter.print_banner

      exit_code = 0

      reporters.each do |reporter|
        reporter.report
        exit_code = 1 unless reporter.successful?
      end
      exit_code
    end

    # Public: Runs the analyzer on a single file.
    #
    # Returns a Report of the single run.
    def run_file(file)
      ast      = parser.parse_file(file)
      analyzer = Analyzer.new(@lints, @reporter, file)
      analyzer.analyze(ast)
    end

    #######
    private
    #######

    # Internal: Returns the Melbourne 1.9 parser.
    #
    # Returns a Rubinius::Melbourne parser.
    def parser
      Rubinius::Melbourne19
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
pelusa-0.1.1 lib/pelusa/runner.rb
pelusa-0.1.0 lib/pelusa/runner.rb
pelusa-0.0.2 lib/pelusa/runner.rb