class RuboCop::RSpec::ExpectOffense::AnnotatedSource
Parsed representation of code annotated with the ‘^^^ Message` style
def self.parse(annotated_source)
-
(AnnotatedSource)
-
Parameters:
-
annotated_source
(String
) -- string passed to the matchers
def self.parse(annotated_source) source = [] annotations = [] annotated_source.each_line do |source_line| if source_line =~ ANNOTATION_PATTERN annotations << [source.size, source_line] else source << source_line end end new(source, annotations) end
def initialize(lines, annotations)
- Note: - annotations are sorted so that reconstructing the annotation
Parameters:
-
annotations
(Array<(Integer, String)>
) -- -
lines
(Array
) --
def initialize(lines, annotations) @lines = lines.freeze @annotations = annotations.sort.freeze end
def plain_source
-
(String)
-
def plain_source lines.join end
def to_s
-
(String)
-
Other tags:
- Example: standardization -
def to_s reconstructed = lines.dup annotations.reverse_each do |line_number, annotation| reconstructed.insert(line_number, annotation) end reconstructed.join end
def with_offense_annotations(offenses)
-
(self)
-
Parameters:
-
offenses
(Array
) --
def with_offense_annotations(offenses) offense_annotations = offenses.map do |offense| indent = ' ' * offense.column carets = '^' * offense.column_length [offense.line, "#{indent}#{carets} #{offense.message}\n"] end self.class.new(lines, offense_annotations) end