Class: Kward::ANSI::MarkdownStream
- Inherits:
-
Object
- Object
- Kward::ANSI::MarkdownStream
- Defined in:
- lib/kward/ansi.rb
Overview
String wrapper that strips ANSI escape sequences while preserving visible text operations.
Instance Method Summary collapse
-
#initialize(enabled: ANSI.enabled?) ⇒ MarkdownStream
constructor
A new instance of MarkdownStream.
- #render(delta, final: false) ⇒ Object
Constructor Details
#initialize(enabled: ANSI.enabled?) ⇒ MarkdownStream
Returns a new instance of MarkdownStream.
180 181 182 183 184 |
# File 'lib/kward/ansi.rb', line 180 def initialize(enabled: ANSI.enabled?) @enabled = enabled @pending = +"" @in_fence = false end |
Instance Method Details
#render(delta, final: false) ⇒ Object
186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 |
# File 'lib/kward/ansi.rb', line 186 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 |