Class: Yaml::Converter::MarkdownEmitter

Inherits:
Object
  • Object
show all
Defined in:
lib/yaml/converter/markdown_emitter.rb

Overview

High-level emitter orchestrates parsing tokens and applying the state machine,
producing a Markdown document with fenced YAML blocks and extracted notes.

Constant Summary collapse

START_YAML =
"```yaml"
END_YAML =
"```"
VALIDATED_STR =
"YAML validation:"
NOTE_STR =
"note:"

Instance Method Summary collapse

Constructor Details

#initialize(options) ⇒ MarkdownEmitter

Returns a new instance of MarkdownEmitter.

Parameters:



18
19
20
21
22
23
24
25
26
# File 'lib/yaml/converter/markdown_emitter.rb', line 18

def initialize(options)
  @options = options
  @max_len = options.fetch(:max_line_length)
  @truncate = options.fetch(:truncate)
  @margin_notes = options.fetch(:margin_notes)
  @validate = options.fetch(:validate)
  @validation_status = :ok
  @is_latex = false
end

Instance Method Details

#emit(lines) ⇒ Array<String>

Convert input lines to markdown using parser + state machine, then append a footer.

Parameters:

  • lines (Array<String>)

    Raw YAML file lines

Returns:

  • (Array<String>)

    Final markdown lines



38
39
40
41
42
43
44
45
46
47
# File 'lib/yaml/converter/markdown_emitter.rb', line 38

def emit(lines)
  parser = Parser.new(@options)
  tokens = parser.tokenize(lines)
  sm = StateMachine.new(validation_status: @validation_status, max_line_length: @max_len, truncate: @truncate, margin_notes: @margin_notes, current_date: @options[:current_date])
  body = sm.apply(tokens)
  if @options[:emit_footer]
    body << "---- \n\nProduced by [yaml-converter](https://github.com/kettle-rb/yaml-converter)"
  end
  body
end

#set_validation_status(status) ⇒ void

This method returns an undefined value.

Set the validation status used when injecting the validation status line.

Parameters:

  • status (Symbol)

    :ok or :fail



31
32
33
# File 'lib/yaml/converter/markdown_emitter.rb', line 31

def set_validation_status(status)
  @validation_status = status
end