Class: Mdoc::Processor::SmartCodeBlock

Inherits:
Mdoc::Processor show all
Defined in:
lib/mdoc/processor/smart_code_block.rb

Instance Method Summary collapse

Methods inherited from Mdoc::Processor

#post_processors, #pre_processors, #repeatable?

Instance Method Details

#process!(doc) ⇒ Object



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
# File 'lib/mdoc/processor/smart_code_block.rb', line 7

def process!(doc)
  odd, last, hold = false, false, 0
  new_body = ''
  doc.body.split(/\n/).each do |line|
    if line =~ /^\s*~{3,}\s*\w*\s*/
      hold = 0 if odd
      odd = odd ? false : true
      last = true
    else
      next if last && odd && (line =~ /^\s*$/)

      if line =~ /^\s*$/
        hold += 1 # hold the line
        next
      end

      last = false
    end

    hold.times { new_body << "\n" }
    hold = 0
    new_body << line << "\n"
  end

  doc.body = new_body.chomp
  # puts doc.body
end