Class: Pelusa::ClassAnalyzer
- Inherits:
-
Object
- Object
- Pelusa::ClassAnalyzer
- Defined in:
- lib/pelusa/class_analyzer.rb
Class Method Summary collapse
-
.walk(start_node) ⇒ Object
Public: Walk a node, analyzing it as it goes.
Instance Method Summary collapse
-
#analyze(lints) ⇒ Object
Public: Analyzes a class with a series of lints.
-
#class_name ⇒ Object
Public: Returns the name of the Class being analyzed.
-
#initialize(klass) ⇒ ClassAnalyzer
constructor
Public: Initializes a ClassAnalyzer.
-
#type ⇒ Object
Public: Returns the type of container being examined (class or module).
Constructor Details
#initialize(klass) ⇒ ClassAnalyzer
Public: Initializes a ClassAnalyzer.
klass - The class AST node.
5 6 7 |
# File 'lib/pelusa/class_analyzer.rb', line 5 def initialize(klass) @klass = klass end |
Class Method Details
.walk(start_node) ⇒ Object
Public: Walk a node, analyzing it as it goes.
block - supply a block that will be executed as the node gets walked.
37 38 39 40 41 42 43 |
# File 'lib/pelusa/class_analyzer.rb', line 37 def self.walk(start_node) raise ArgumentError, "Walk requires a block!" unless block_given? start_node.walk do |continue, node| yield(node) true end end |
Instance Method Details
#analyze(lints) ⇒ Object
Public: Analyzes a class with a series of lints.
lints - The lints to check for.
Returns a collection of Analysis, one for each lint.
27 28 29 30 31 32 |
# File 'lib/pelusa/class_analyzer.rb', line 27 def analyze(lints) lints.map do |lint_class| lint = lint_class.new lint.check(@klass) end end |
#class_name ⇒ Object
Public: Returns the name of the Class being analyzed.
Returns the String name.
12 13 14 15 |
# File 'lib/pelusa/class_analyzer.rb', line 12 def class_name name = @klass.name name.name end |
#type ⇒ Object
Public: Returns the type of container being examined (class or module).
18 19 20 |
# File 'lib/pelusa/class_analyzer.rb', line 18 def type @klass.is_a?(Rubinius::ToolSets::Runtime::ToolSet::AST::Class) ? "class" : "module" end |