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.
- #initialize_copy(source) ⇒ Object
- #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
43 44 45 46 47 48 |
# File 'lib/kward/prompt_interface/transcript_buffer.rb', line 43 def append(text) @text << ANSI.sanitize_transcript(text) @text = @text[-@limit, @limit] if @text.length > @limit invalidate_display_rows_cache @text end |
#clear ⇒ Object
38 39 40 41 |
# File 'lib/kward/prompt_interface/transcript_buffer.rb', line 38 def clear @text = +"" invalidate_display_rows_cache end |
#display_rows(width) ⇒ Object
62 63 64 65 66 67 |
# File 'lib/kward/prompt_interface/transcript_buffer.rb', line 62 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
30 31 32 |
# File 'lib/kward/prompt_interface/transcript_buffer.rb', line 30 def empty? @text.empty? end |
#end_with?(*suffixes) ⇒ Boolean
34 35 36 |
# File 'lib/kward/prompt_interface/transcript_buffer.rb', line 34 def end_with?(*suffixes) @text.end_with?(*suffixes) end |
#include?(*arguments) ⇒ Boolean
26 27 28 |
# File 'lib/kward/prompt_interface/transcript_buffer.rb', line 26 def include?(*arguments) @text.include?(*arguments) end |
#initialize_copy(source) ⇒ Object
16 17 18 19 20 |
# File 'lib/kward/prompt_interface/transcript_buffer.rb', line 16 def initialize_copy(source) super @text = source.text.dup invalidate_display_rows_cache end |
#invalidate_display_rows_cache ⇒ Object
76 77 78 79 |
# File 'lib/kward/prompt_interface/transcript_buffer.rb', line 76 def invalidate_display_rows_cache @display_rows_cache_width = nil @display_rows_cache = nil end |
#text_display_rows(width) ⇒ Object
69 70 71 72 73 74 |
# File 'lib/kward/prompt_interface/transcript_buffer.rb', line 69 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
22 23 24 |
# File 'lib/kward/prompt_interface/transcript_buffer.rb', line 22 def to_s @text end |
#viewport_rows(row_count, width) ⇒ Object
54 55 56 57 58 59 60 |
# File 'lib/kward/prompt_interface/transcript_buffer.rb', line 54 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
50 51 52 |
# File 'lib/kward/prompt_interface/transcript_buffer.rb', line 50 def (row_count, width) (row_count, width).join("\n") end |