Class: Slamdown::Conversion::Normaliser::HeadingLevels

Inherits:
Object
  • Object
show all
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

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