Class: Slamdown::Conversion::Normaliser::HeadingLevels
- Inherits:
-
Object
- Object
- Slamdown::Conversion::Normaliser::HeadingLevels
- Defined in:
- lib/slamdown/conversion/normaliser/heading_levels.rb
Overview
Calculates one conversion-root heading map after blank and policy-removed headings have left the tree.
Instance Method Summary collapse
- #adjust(children) ⇒ Object
-
#initialize(configuration, content, diagnostics) ⇒ HeadingLevels
constructor
A new instance of HeadingLevels.
Constructor Details
#initialize(configuration, content, diagnostics) ⇒ HeadingLevels
Returns a new instance of HeadingLevels.
9 10 11 12 13 |
# File 'lib/slamdown/conversion/normaliser/heading_levels.rb', line 9 def initialize(configuration, content, diagnostics) @configuration = configuration @content = content @diagnostics = diagnostics end |
Instance Method Details
#adjust(children) ⇒ Object
15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/slamdown/conversion/normaliser/heading_levels.rb', line 15 def adjust(children) headings = @content.descendants(children).select { |node| node.representation == :semantic && node.semantic_kind == :heading } return children if headings.empty? source_levels = headings.map { |heading| heading.properties[:source_level] }.uniq.sort provisional_levels = source_levels.each_with_index.each_with_object({}) do |(level, index), result| result[level] = @configuration.headings[:compact] ? index + 1 : level end offset = @configuration.headings[:start] - provisional_levels.values.min children.map { |child| rewrite(child, provisional_levels, offset) } end |