Class: Steep::Drivers::Annotations

Inherits:
Object
  • Object
show all
Includes:
Utils::EachSignature
Defined in:
lib/steep/drivers/annotations.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Utils::EachSignature

#each_file_in_dir, #each_ruby_file, #each_ruby_source, #each_signature

Constructor Details

#initialize(source_paths:, stdout:, stderr:) ⇒ Annotations

Returns a new instance of Annotations.



11
12
13
14
15
16
17
# File 'lib/steep/drivers/annotations.rb', line 11

def initialize(source_paths:, stdout:, stderr:)
  @source_paths = source_paths
  @stdout = stdout
  @stderr = stderr

  @labeling = ASTUtils::Labeling.new
end

Instance Attribute Details

#labelingObject (readonly)

Returns the value of attribute labeling.



7
8
9
# File 'lib/steep/drivers/annotations.rb', line 7

def labeling
  @labeling
end

#source_pathsObject (readonly)

Returns the value of attribute source_paths.



4
5
6
# File 'lib/steep/drivers/annotations.rb', line 4

def source_paths
  @source_paths
end

#stderrObject (readonly)

Returns the value of attribute stderr.



6
7
8
# File 'lib/steep/drivers/annotations.rb', line 6

def stderr
  @stderr
end

#stdoutObject (readonly)

Returns the value of attribute stdout.



5
6
7
# File 'lib/steep/drivers/annotations.rb', line 5

def stdout
  @stdout
end

Instance Method Details

#runObject



19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/steep/drivers/annotations.rb', line 19

def run
  each_ruby_source(source_paths, false) do |source|
    source.each_annotation.sort_by {|node, _| [node.loc.expression.begin_pos, node.loc.expression.end_pos] }.each do |node, annotations|
      loc = node.loc
      stdout.puts "#{source.path}:#{loc.line}:#{loc.column}:#{node.type}:\t#{node.loc.expression.source.lines.first}"
      annotations.each do |annotation|
        stdout.puts "  #{annotation.location.source}"
      end
    end
  end

  0
end