Class: E2B::Models::TemplateLogEntry

Inherits:
Object
  • Object
show all
Defined in:
lib/e2b/models/template_log_entry.rb

Direct Known Subclasses

TemplateLogEntryEnd, TemplateLogEntryStart

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(timestamp:, level:, message:) ⇒ TemplateLogEntry

Returns a new instance of TemplateLogEntry.



18
19
20
21
22
# File 'lib/e2b/models/template_log_entry.rb', line 18

def initialize(timestamp:, level:, message:)
  @timestamp = timestamp
  @level = level
  @message = self.class.strip_ansi_escape_codes(message.to_s)
end

Instance Attribute Details

#levelObject (readonly)

Returns the value of attribute level.



8
9
10
# File 'lib/e2b/models/template_log_entry.rb', line 8

def level
  @level
end

#messageObject (readonly)

Returns the value of attribute message.



8
9
10
# File 'lib/e2b/models/template_log_entry.rb', line 8

def message
  @message
end

#timestampObject (readonly)

Returns the value of attribute timestamp.



8
9
10
# File 'lib/e2b/models/template_log_entry.rb', line 8

def timestamp
  @timestamp
end

Class Method Details

.from_hash(data) ⇒ Object



10
11
12
13
14
15
16
# File 'lib/e2b/models/template_log_entry.rb', line 10

def self.from_hash(data)
  new(
    timestamp: parse_time(data["timestamp"] || data[:timestamp]),
    level: data["level"] || data[:level],
    message: data["message"] || data[:message]
  )
end

.parse_time(value) ⇒ Object



28
29
30
31
32
33
34
35
# File 'lib/e2b/models/template_log_entry.rb', line 28

def self.parse_time(value)
  return nil if value.nil?
  return value if value.is_a?(Time)

  Time.parse(value.to_s)
rescue ArgumentError, TypeError
  nil
end

.strip_ansi_escape_codes(message) ⇒ Object



37
38
39
# File 'lib/e2b/models/template_log_entry.rb', line 37

def self.strip_ansi_escape_codes(message)
  message.gsub(/\e\[[0-9;?]*[ -\/]*[@-~]/, "")
end

Instance Method Details

#to_sObject



24
25
26
# File 'lib/e2b/models/template_log_entry.rb', line 24

def to_s
  "[#{@timestamp&.iso8601}] [#{@level}] #{@message}"
end