Class: MdBlockConverter::Markdown

Inherits:
Object
  • Object
show all
Defined in:
lib/md_block_converter/markdown.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(text) ⇒ Markdown

Returns a new instance of Markdown.



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/md_block_converter/markdown.rb', line 7

def initialize(text)
  iter_context = {
    in_block: false,
    block_lines: [],
    block_indent: nil,
    block_lang: nil,
    elements: []
  }
  @elements = text.lines.map(&:chomp).each_with_object(iter_context) do |line|
    if line.match?(/^\s*```\s*$/)
      if iter_context[:in_block]
        iter_context[:in_block] = false
        iter_context[:elements] << Block.new(iter_context[:block_lines], iter_context[:block_indent], iter_context[:block_lang]).convert!
        iter_context[:block_lines] = []
        iter_context[:block_indent] = nil
        iter_context[:block_lang] = nil
      else
        iter_context[:in_block] = true
        iter_context[:block_lines] = []
        iter_context[:block_indent] = line.match(/^\s*/)[0].length
        iter_context[:block_lang] = line.match(/```\s*(\S*)/)[1]
      end
    else
      if iter_context[:in_block]
        iter_context[:block_lines] << line
      else
        iter_context[:elements] << line
      end
    end
  end[:elements]
end

Instance Attribute Details

#elementsObject

Returns the value of attribute elements.



5
6
7
# File 'lib/md_block_converter/markdown.rb', line 5

def elements
  @elements
end

Instance Method Details

#to_sObject



39
40
41
# File 'lib/md_block_converter/markdown.rb', line 39

def to_s
  @elements.map(&:to_s).join("\n")
end