Class: Steep::Source::IgnoreRanges
- Defined in:
- lib/steep/source/ignore_ranges.rb
Instance Attribute Summary collapse
-
#all_ignores ⇒ Object
readonly
Returns the value of attribute all_ignores.
-
#error_ignores ⇒ Object
readonly
Returns the value of attribute error_ignores.
-
#ignored_lines ⇒ Object
readonly
Returns the value of attribute ignored_lines.
-
#ignored_ranges ⇒ Object
readonly
Returns the value of attribute ignored_ranges.
Instance Method Summary collapse
- #each_ignore(&block) ⇒ Object
- #ignore?(start_line, end_line, code) ⇒ Boolean
- #ignore_code?(line, code) ⇒ Boolean
-
#initialize(ignores:) ⇒ IgnoreRanges
constructor
A new instance of IgnoreRanges.
Constructor Details
#initialize(ignores:) ⇒ IgnoreRanges
Returns a new instance of IgnoreRanges.
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/steep/source/ignore_ranges.rb', line 6 def initialize(ignores:) @all_ignores = ignores.sort_by(&:line) @error_ignores = [] @ignored_lines = {} @ignored_ranges = [] last_start = nil #: AST::Ignore::IgnoreStart? all_ignores.each do |ignore| case ignore when AST::Ignore::IgnoreStart if last_start error_ignores << last_start end last_start = ignore when AST::Ignore::IgnoreEnd if last_start ignored_ranges << [last_start, ignore] last_start = nil else error_ignores << ignore end when AST::Ignore::IgnoreLine if last_start error_ignores << ignore else ignored_lines[ignore.line] = ignore end end end if last_start error_ignores << last_start end end |
Instance Attribute Details
#all_ignores ⇒ Object (readonly)
Returns the value of attribute all_ignores.
4 5 6 |
# File 'lib/steep/source/ignore_ranges.rb', line 4 def all_ignores @all_ignores end |
#error_ignores ⇒ Object (readonly)
Returns the value of attribute error_ignores.
4 5 6 |
# File 'lib/steep/source/ignore_ranges.rb', line 4 def error_ignores @error_ignores end |
#ignored_lines ⇒ Object (readonly)
Returns the value of attribute ignored_lines.
4 5 6 |
# File 'lib/steep/source/ignore_ranges.rb', line 4 def ignored_lines @ignored_lines end |
#ignored_ranges ⇒ Object (readonly)
Returns the value of attribute ignored_ranges.
4 5 6 |
# File 'lib/steep/source/ignore_ranges.rb', line 4 def ignored_ranges @ignored_ranges end |
Instance Method Details
#each_ignore(&block) ⇒ Object
43 44 45 46 47 48 49 50 |
# File 'lib/steep/source/ignore_ranges.rb', line 43 def each_ignore(&block) if block ignored_ranges.each(&block) ignored_lines.each_value(&block) else enum_for(:each_ignore) end end |
#ignore?(start_line, end_line, code) ⇒ Boolean
52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
# File 'lib/steep/source/ignore_ranges.rb', line 52 def ignore?(start_line, end_line, code) if ignore = ignored_lines.fetch(start_line, nil) ignore_code?(ignore, code) and return ignore end if start_line != end_line if ignore = ignored_lines.fetch(end_line, nil) ignore_code?(ignore, code) and return ignore end end ignored_ranges.find do |ignore_start, ignore_end| range = ignore_start.line..ignore_end.line range.cover?(start_line) && range.cover?(end_line) end end |
#ignore_code?(line, code) ⇒ Boolean
69 70 71 72 73 74 75 76 |
# File 'lib/steep/source/ignore_ranges.rb', line 69 def ignore_code?(line, code) case diags = line.ignored_diagnostics when Symbol true else diags.any? {|d| code == "Ruby::#{d}" } end end |