Sha256: aedce1bc30d0881ce2b9afe8a753effad4f057db7ddf9afce5de2d723e6d1cd6

Contents?: true

Size: 1.56 KB

Versions: 1

Compression:

Stored size: 1.56 KB

Contents

require "coffeelint/version"
require 'execjs'
require 'coffee-script'

module Coffeelint
  require 'coffeelint/railtie' if defined?(Rails)

  def self.path()
    @path ||= File.expand_path('../../coffeelint/src/coffeelint.coffee', __FILE__)
  end

  def self.lint(script)
    coffeescriptSource = File.read(CoffeeScript::Source.path)
    coffeelintSource = CoffeeScript.compile(File.read(Coffeelint.path))
    context = ExecJS.compile(coffeescriptSource + coffeelintSource)
    context.call('coffeelint.lint', script)
  end

  def self.lint_file(filename)
    Coffeelint.lint(File.read(filename))
  end

  def self.lint_dir(directory)
    retval = {}
    Dir.glob("#{directory}/**/*.coffee") do |name|
      retval[name] = Coffeelint.lint_file(name)
      yield name, retval[name]
    end
    retval
  end

  def self.display_test_results(name, errors)
    name = name[2..-1]

    good = "\u2713"
    bad = "\u2717"

    if errors.length == 0
      puts "  #{good} \e[1m\e[32m#{name}\e[0m"
      return true
    else
      puts "  #{bad} \e[1m\e[31m#{name}\e[0m"
      errors.each do |error|
        puts "     #{bad} \e[31m##{error["lineNumber"]}\e[0m: #{error["message"]}, #{error["context"]}."
      end
      return false
    end
  end

  def self.run_test(file)
    result = Coffeelint.lint_file(file)
    Coffeelint.display_test_results(file, result)
  end

  def self.run_test_suite(directory)
    success = true
    Coffeelint.lint_dir(directory) do |name, errors|
      result = Coffeelint.display_test_results(name, errors)
      success = false if not result
    end
    success
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
coffeelint-0.0.2 lib/coffeelint.rb