Sha256: e181f9027ba9ad8e3b53767f0256420affeed68f174a95218a6a89cd135c7ed5

Contents?: true

Size: 1.59 KB

Versions: 1

Compression:

Stored size: 1.59 KB

Contents

class JavascriptLintTask
 
  def initialize(javascript_lint, dir)
    @javascript_lint = javascript_lint
    @dir = dir
 
    # TODO: Tidy!
    if (RUBY_PLATFORM =~ /mswin32/)
      @dir = @dir.gsub('/', '\\')
    end
 
  end
  
  def run(files)
    all_files = files[:all]
    modified_files = files[:filtered]
    
    return nil if (!@javascript_lint.is_configured? all_files)
    return nil if (!@javascript_lint.should_run? modified_files)
 
    detail = @javascript_lint.execute()
    
    state, summary, first = parse_result(detail)
 
    # TODO: Tidy!
    # Move to function/class w/ win32 related code
    if (first[0, @dir.length] == @dir)
      first = first[(@dir.length + 1)..-1]
    end
 
    return {
        :state => state,
        :title => 'Javascript Lint',
        :summary => summary,
        :first => first,
        :detail => detail
      }
  end
  
  # Move to parse class
  def parse_result(detail)
    summary_line = detail.grep( /\d+\s+error.*,\s+\d+\s+warning.*/ )[0]
    
    if summary_line.nil?
      # error
      error_info = (detail + "\nUnknown Error!").to_a[0].strip
      return :error, 'Error', error_info
    end
    
    if summary_line =~ /([1-9]+)\d*\s+error/
      num_failures = $1
      error_info = detail.grep(/\([0-9]+\):([^:]*)Error:/)[0].strip
      return :failure, num_failures + ' Errors', error_info
    end
 
    if summary_line =~ /([1-9]+)\d*\s+warning/
      num_failures = $1
      error_info = detail.grep(/\([0-9]+\)/)[0].strip
      return :warning, num_failures + ' Warnings', error_info
    end
    
    return :success, 'All files are clean', ''
    
  end
  
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
karl-loris-0.0.9 lib/tasks/javascript_lint/javascript_lint_task.rb