Module: RailsBestPractices::Core::Check::Classable

Included in:
Prepares::ControllerPrepare, Prepares::MailerPrepare, Prepares::ModelPrepare
Defined in:
lib/rails_best_practices/core/check.rb

Overview

Helper to parse the class name.

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(base) ⇒ Object



117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
# File 'lib/rails_best_practices/core/check.rb', line 117

def self.included(base)
  base.class_eval do
    interesting_nodes :module, :class

    # remember module name
    add_callback :start_module do |node|
      classable_modules << node.module_name.to_s
    end

    # end of the module.
    add_callback :end_module do |_node|
      classable_modules.pop
    end

    # remember the class name
    add_callback :start_class do |node|
      base_class_name = node.base_class.is_a?(CodeAnalyzer::Nil) ? nil : node.base_class.to_s
      @klass = Core::Klass.new(node.class_name.to_s, base_class_name, classable_modules)
      klasses << @klass
    end

    # end of the class
    add_callback :end_class do |_node|
      klasses.pop
      @klass = klasses.last
    end
  end
end

Instance Method Details

#classable_modulesObject

modules.



157
158
159
# File 'lib/rails_best_practices/core/check.rb', line 157

def classable_modules
  @class_modules ||= []
end

#current_class_nameObject

get the current class name.



147
148
149
# File 'lib/rails_best_practices/core/check.rb', line 147

def current_class_name
  @klass.to_s
end

#current_extend_class_nameObject

get the current extend class name.



152
153
154
# File 'lib/rails_best_practices/core/check.rb', line 152

def current_extend_class_name
  @klass.extend_class_name
end

#klassesObject



161
162
163
# File 'lib/rails_best_practices/core/check.rb', line 161

def klasses
  @klasses ||= []
end