Class: Marcdouane::Rules::EnsureHeadersCascade

Inherits:
Rule
  • Object
show all
Defined in:
lib/marcdouane/rules/ensure_headers_cascade.rb

Overview

Ensure that every child header is always a direct descendant of the previous header (i.e its level increments by 1).

Constant Summary collapse

ERROR_MESSAGE =
"Header levels should increment one at a time"

Instance Attribute Summary

Attributes inherited from Rule

#file, #markdown, #options

Instance Method Summary collapse

Methods inherited from Rule

#error!, #identifier, #initialize, #line_number_from_byte_range

Constructor Details

This class inherits a constructor from Marcdouane::Rules::Rule

Instance Method Details

#check!Object



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/marcdouane/rules/ensure_headers_cascade.rb', line 10

def check!
  previous_level = nil

  @markdown.on(:heading) do |header|
    previous_level ||= header.level

    if header.level > previous_level && header.level != previous_level + 1
      error!(line_number_from_byte_range(header.byte_range))
    else
      previous_level = header.level
    end
  end

  @markdown.walk
end