Class: RailsBestPractices::Core::CheckingVisitor

Inherits:
Object
  • Object
show all
Defined in:
lib/rails_best_practices/core/checking_visitor.rb

Overview

CheckingVisitor is a visitor class.

it remembers all the checks for prepare and review processes according to interesting_nodes and interesting_nodes, then recursively iterate all sexp nodes,

for prepare process if the node_type and the node filename match the interesting_prepare_nodes and interesting_files, then run the prepare for that node.

for review process if the node_type and the node filename match the interesting_review_nodes and interesting_files, then run the reivew for that node.

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ CheckingVisitor

remember all the checks for prepare and review processes according to interesting_nodes.

Parameters:

  • options (Hash) (defaults to: {})

    => [], :prepares => [], :reviews => []



21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/rails_best_practices/core/checking_visitor.rb', line 21

def initialize(options={})
  @lexicals = options[:lexicals]
  [:prepare, :review].each do |process|
    instance_variable_set("@#{process}_checks", {})                  # @review_checks = {}
    options["#{process}s".to_sym].each do |check|                    # options[:reviews].each do |check|
      check.send("interesting_nodes").each do |node|                 #   check.interesting_nodes.each do |node|
        instance_variable_get("@#{process}_checks")[node] ||= []     #     @review_checks[node] ||= []
        instance_variable_get("@#{process}_checks")[node] << check   #     @review_checks[node] << check
        instance_variable_get("@#{process}_checks")[node].uniq!      #     @review_checks[node].uniq!
      end                                                            #   end
    end                                                              # end
  end
end

Instance Method Details

#lexical(filename, content) ⇒ Object

for lexical process check the content of files one by one.



37
38
39
40
41
# File 'lib/rails_best_practices/core/checking_visitor.rb', line 37

def lexical(filename, content)
  @lexicals.each do |lexical|
    lexical.check(filename, content)
  end
end