Sha256: dc8b98716e9b7dc4c2784129e92f3731e5b84b2b965cecadb4cc56528807d568

Contents?: true

Size: 1.21 KB

Versions: 6

Compression:

Stored size: 1.21 KB

Contents

# encoding: utf-8
require 'rails_best_practices/checks'
require 'rails_best_practices/core'

module RailsBestPractices
  
  class <<self
    def analyze_files(dir = '.', options = {})
      files = expand_dirs_to_files(dir)
      files = model_first_sort(files)
      ['vendor', 'spec', 'test', 'stories', 'features'].each do |pattern|
        files = ignore_files(files, "#{pattern}/") unless options[pattern]
      end
      
      # Exclude files based on exclude regexes if the option is set.
      for pattern in options[:exclude]
        files = ignore_files(files, pattern)
      end
      
      files
    end
  
    def expand_dirs_to_files *dirs
      extensions = ['rb', 'erb', 'haml', 'builder']

      dirs.flatten.map { |p|
        if File.directory? p
          Dir[File.join(p, '**', "*.{#{extensions.join(',')}}")]
        else
          p
        end
      }.flatten
    end

    # for law_of_demeter_check
    def model_first_sort files
      files.sort { |a, b|
        if a =~ /models\/.*rb/
          -1
        elsif b =~ /models\/.*rb/
          1
        else
          a <=> b
        end
      }
    end

    def ignore_files files, pattern
      files.reject { |file| file.index(pattern) }
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
rails_best_practices-0.5.3 lib/rails_best_practices.rb
rails_best_practices-0.5.2 lib/rails_best_practices.rb
rails_best_practices-0.5.1 lib/rails_best_practices.rb
rails_best_practices-0.5.0 lib/rails_best_practices.rb
rails_best_practices-0.4.6 lib/rails_best_practices.rb
rails_best_practices-0.4.5 lib/rails_best_practices.rb