Class: Slamdown::Conversion::Converter

Inherits:
Object
  • Object
show all
Defined in:
lib/slamdown/conversion/converter.rb

Overview

Coordinates the validated public conversion pipeline and applies the conversion error-reporting contract.

Constant Summary collapse

FORMATS =
{
	"markdown" => Output::Markdown,
	"kramdown" => Output::Kramdown
}.freeze
ERROR_MODES =
[:raise, :warn, :silent].freeze

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(format, errors) ⇒ Converter

Returns a new instance of Converter.



20
21
22
23
24
25
# File 'lib/slamdown/conversion/converter.rb', line 20

def initialize(format, errors)
	@format = normalise_format(format)
	@output_class = FORMATS.fetch(@format)
	validate_error_mode(errors)
	@errors = errors
end

Class Method Details

.convert(input, format:, options: {}, errors: :warn) ⇒ Object



15
16
17
# File 'lib/slamdown/conversion/converter.rb', line 15

def convert(input, format:, options: {}, errors: :warn)
	new(format, errors).convert(input, options)
end

Instance Method Details

#convert(input, options) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/slamdown/conversion/converter.rb', line 27

def convert(input, options)
	root = conversion_root(input)
	configuration = Configuration.build(options)
	prepared = Preparer.prepare(root, configuration)
	normalisation = Normaliser.normalise(prepared, configuration)
	rendering = Renderer.render(normalisation.tree, configuration, @format)
	report_rendering_errors(rendering.diagnostics)

	@output_class.new(rendering.output, normalisation.diagnostics + rendering.diagnostics)
rescue ArgumentError
	raise
rescue ConversionError
	raise
rescue StandardError => error
	handle_conversion_error(error, defined?(normalisation) && normalisation ? normalisation.diagnostics : [])
end