Class: LLM::EventStream::Parser

Inherits:
Object
  • Object
show all
Defined in:
lib/llm/eventstream/parser.rb

Constant Summary collapse

COMPACT_THRESHOLD =
4096

Instance Method Summary collapse

Constructor Details

#initializeLLM::EventStream::Parser



11
12
13
14
15
16
# File 'lib/llm/eventstream/parser.rb', line 11

def initialize
  @buffer = +""
  @events = Hash.new { |h, k| h[k] = [] }
  @cursor = 0
  @visitors = []
end

Instance Method Details

#<<(event) ⇒ void

This method returns an undefined value.

Append an event to the internal buffer



38
39
40
41
# File 'lib/llm/eventstream/parser.rb', line 38

def <<(event)
  @buffer << event
  each_line { parse!(_1) }
end

#bodyString

Returns the internal buffer

Returns:

  • (String)


46
47
48
49
# File 'lib/llm/eventstream/parser.rb', line 46

def body
  return @buffer.dup if @cursor.zero?
  @buffer.byteslice(@cursor, @buffer.bytesize - @cursor) || +""
end

#freevoid

This method returns an undefined value.

Free the internal buffer



54
55
56
57
# File 'lib/llm/eventstream/parser.rb', line 54

def free
  @buffer.clear
  @cursor = 0
end

#on(evtname, &block) ⇒ void

This method returns an undefined value.

Subscribe to an event

Parameters:

  • evtname (Symbol)
  • block (Proc)


31
32
33
# File 'lib/llm/eventstream/parser.rb', line 31

def on(evtname, &block)
  @events[evtname.to_s] << block
end

#register(visitor) ⇒ void

This method returns an undefined value.

Register a visitor

Parameters:

  • visitor (#on_data)


22
23
24
# File 'lib/llm/eventstream/parser.rb', line 22

def register(visitor)
  @visitors << visitor
end