Class: Kward::PromptInterface::TranscriptBuffer
- Inherits:
-
Object
- Object
- Kward::PromptInterface::TranscriptBuffer
- Defined in:
- lib/kward/prompt_interface/transcript_buffer.rb
Overview
Bounded in-memory transcript buffer used by the prompt interface.
Instance Attribute Summary collapse
-
#text ⇒ Object
readonly
Returns the value of attribute text.
Instance Method Summary collapse
- #append(text) ⇒ Object
- #clear ⇒ Object
- #display_rows(width) ⇒ Object
- #empty? ⇒ Boolean
- #end_with?(*suffixes) ⇒ Boolean
- #include?(*arguments) ⇒ Boolean
-
#initialize(limit:) ⇒ TranscriptBuffer
constructor
A new instance of TranscriptBuffer.
- #invalidate_display_rows_cache ⇒ Object
- #text_display_rows(width) ⇒ Object
- #to_s ⇒ Object
- #viewport_rows(row_count, width) ⇒ Object
- #viewport_text(row_count, width) ⇒ Object
Constructor Details
#initialize(limit:) ⇒ TranscriptBuffer
Returns a new instance of TranscriptBuffer.
9 10 11 12 13 14 |
# File 'lib/kward/prompt_interface/transcript_buffer.rb', line 9 def initialize(limit:) @limit = limit @text = +"" @display_rows_cache_width = nil @display_rows_cache = nil end |
Instance Attribute Details
#text ⇒ Object (readonly)
Returns the value of attribute text.
7 8 9 |
# File 'lib/kward/prompt_interface/transcript_buffer.rb', line 7 def text @text end |
Instance Method Details
#append(text) ⇒ Object
37 38 39 40 41 42 |
# File 'lib/kward/prompt_interface/transcript_buffer.rb', line 37 def append(text) @text << ANSI.sanitize_transcript(text) @text = @text[-@limit, @limit] if @text.length > @limit invalidate_display_rows_cache @text end |
#clear ⇒ Object
32 33 34 35 |
# File 'lib/kward/prompt_interface/transcript_buffer.rb', line 32 def clear @text = +"" invalidate_display_rows_cache end |
#display_rows(width) ⇒ Object
56 57 58 59 60 61 |
# File 'lib/kward/prompt_interface/transcript_buffer.rb', line 56 def display_rows(width) return @display_rows_cache if @display_rows_cache_width == width && @display_rows_cache @display_rows_cache_width = width @display_rows_cache = text_display_rows(width) end |
#empty? ⇒ Boolean
24 25 26 |
# File 'lib/kward/prompt_interface/transcript_buffer.rb', line 24 def empty? @text.empty? end |
#end_with?(*suffixes) ⇒ Boolean
28 29 30 |
# File 'lib/kward/prompt_interface/transcript_buffer.rb', line 28 def end_with?(*suffixes) @text.end_with?(*suffixes) end |
#include?(*arguments) ⇒ Boolean
20 21 22 |
# File 'lib/kward/prompt_interface/transcript_buffer.rb', line 20 def include?(*arguments) @text.include?(*arguments) end |
#invalidate_display_rows_cache ⇒ Object
70 71 72 73 |
# File 'lib/kward/prompt_interface/transcript_buffer.rb', line 70 def invalidate_display_rows_cache @display_rows_cache_width = nil @display_rows_cache = nil end |
#text_display_rows(width) ⇒ Object
63 64 65 66 67 68 |
# File 'lib/kward/prompt_interface/transcript_buffer.rb', line 63 def text_display_rows(width) @text.split(/\r\n|\r|\n/, -1).flat_map do |line| chunks = ANSI.wrap_visible(line, width) chunks.empty? ? [""] : chunks end end |
#to_s ⇒ Object
16 17 18 |
# File 'lib/kward/prompt_interface/transcript_buffer.rb', line 16 def to_s @text end |
#viewport_rows(row_count, width) ⇒ Object
48 49 50 51 52 53 54 |
# File 'lib/kward/prompt_interface/transcript_buffer.rb', line 48 def (row_count, width) return [] unless row_count.positive? rows = display_rows(width).last(row_count) rows = ([""] * (row_count - rows.length)) + rows if rows.length < row_count rows end |
#viewport_text(row_count, width) ⇒ Object
44 45 46 |
# File 'lib/kward/prompt_interface/transcript_buffer.rb', line 44 def (row_count, width) (row_count, width).join("\n") end |