Class: Kward::ANSI::MarkdownStream

Inherits:
Object
  • Object
show all
Defined in:
lib/kward/ansi.rb

Instance Method Summary collapse

Constructor Details

#initialize(enabled: ANSI.enabled?) ⇒ MarkdownStream

Returns a new instance of MarkdownStream.



129
130
131
132
133
# File 'lib/kward/ansi.rb', line 129

def initialize(enabled: ANSI.enabled?)
  @enabled = enabled
  @pending = +""
  @in_fence = false
end

Instance Method Details

#render(delta, final: false) ⇒ Object



135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
# File 'lib/kward/ansi.rb', line 135

def render(delta, final: false)
  text = delta.to_s
  return ANSI.markdown(text, enabled: @enabled) if fast_markdown?(text, final)

  @pending << text
  rendered = +""
  while (match = @pending.match(/\r\n|\r|\n/))
    line = @pending[0...match.begin(0)]
    @pending = @pending[(match.end(0))..] || +""
    rendered << render_line(line) << "\n"
  end

  if final && !@pending.empty?
    rendered << render_line(@pending)
    @pending.clear
  end

  if final && @in_fence
    rendered << "\n" unless rendered.empty? || rendered.end_with?("\n")
    rendered << ANSI.colorize("" + "" * 39, :gray, enabled: @enabled)
    @in_fence = false
  end

  rendered
end