Class: Slamdown::Conversion::Normaliser
- Inherits:
-
Object
- Object
- Slamdown::Conversion::Normaliser
- Defined in:
- lib/slamdown/conversion/normaliser.rb,
lib/slamdown/conversion/normaliser/breaks.rb,
lib/slamdown/conversion/normaliser/content.rb,
lib/slamdown/conversion/normaliser/node_factory.rb,
lib/slamdown/conversion/normaliser/url_rewriter.rb,
lib/slamdown/conversion/normaliser/heading_levels.rb,
lib/slamdown/conversion/normaliser/element_actions.rb,
lib/slamdown/conversion/normaliser/inline_semantics.rb,
lib/slamdown/conversion/normaliser/correction_diagnostics.rb
Overview
Coordinates one renderer-independent normalisation run through focused element, content, break and heading collaborators.
Defined Under Namespace
Classes: Breaks, Content, CorrectionDiagnostics, ElementActions, HeadingLevels, InlineSemantics, NodeFactory, UrlRewriter
Constant Summary collapse
- BLOCK_SEMANTICS =
Content::BLOCK_SEMANTICS
Class Method Summary collapse
Instance Method Summary collapse
-
#initialize(configuration) ⇒ Normaliser
constructor
A new instance of Normaliser.
- #normalise(root) ⇒ Object
Constructor Details
#initialize(configuration) ⇒ Normaliser
Returns a new instance of Normaliser.
16 17 18 19 20 |
# File 'lib/slamdown/conversion/normaliser.rb', line 16 def initialize(configuration) raise ArgumentError, "configuration must be a Slamdown conversion configuration" unless configuration.is_a?(Configuration) @configuration = configuration end |
Class Method Details
Instance Method Details
#normalise(root) ⇒ Object
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/slamdown/conversion/normaliser.rb', line 22 def normalise(root) validate_root(root) node_factory = NodeFactory.new diagnostics = CorrectionDiagnostics.new content = Content.new(node_factory) breaks = Breaks.new(node_factory, content, diagnostics) element_actions = ElementActions.new(@configuration, node_factory, content, breaks, diagnostics) children = element_actions.normalise_root(root) if @configuration.inline children = content.normalise_inline_sequence(children, :trim => true) else children = content.wrap_phrasing_runs(children) children = HeadingLevels.new(@configuration, content, diagnostics).adjust(children) end tree = node_factory.build( :kind => :document, :children => children, :properties => root.kind == :document ? root.properties : {}, :source_path => [] ) Normalisation.new(tree, diagnostics.to_a) end |