Class: LogBuffer

Inherits:
Object
  • Object
show all
Defined in:
lib/debugtrace/log_buffer.rb

Overview

Buffers logs.

Defined Under Namespace

Classes: LevelAndLog

Instance Method Summary collapse

Constructor Details

#initialize(maximum_data_output_width) ⇒ LogBuffer

Initializes this object.



22
23
24
25
26
27
28
29
30
31
32
# File 'lib/debugtrace/log_buffer.rb', line 22

def initialize(maximum_data_output_width)
  @maximum_data_output_width = Common.check_type('maximum_data_output_width', maximum_data_output_width, Integer)
  @nest_level = 0
  @append_nest_level = 0

  # tuples of data indentation level && log string
  @lines = []

  # buffer for a line of logs
  @last_line = ''
end

Instance Method Details

#append(value, nest_level = 0, no_break = false) ⇒ Object

Appends a string representation of the value.

Parameters:

  • value (Object)

    : The value to append

  • nest_level (int, optional) (defaults to: 0)

    : The nest level of the value. Defaults to 0

  • no_break (bool, optional) (defaults to: false)

    : If true, does not break even if the maximum width is exceeded. Defaults to false

Returns:

  • LogBuffer: This object



57
58
59
60
61
62
63
64
65
66
67
# File 'lib/debugtrace/log_buffer.rb', line 57

def append(value, nest_level = 0, no_break = false)
  Common.check_type('nest_level', nest_level, Integer)
  Common.check_type('no_break', no_break, TrueClass)
  unless value.nil?
    string = value.to_s
    line_feed if !no_break && length > 0 && length + string.length > @maximum_data_output_width
    @append_nest_level = nest_level
    @last_line += string
  end
  self
end

#append_buffer(separator, buff) ⇒ Object

Appends lines of another LogBuffer.

Parameters:

  • separator (String)

    : The separator string to append if not ”

  • buff (LogBuffer)

    : Another LogBuffer



82
83
84
85
86
87
88
89
90
91
92
93
# File 'lib/debugtrace/log_buffer.rb', line 82

def append_buffer(separator, buff)
  Common.check_type('separator', separator, String)
  Common.check_type('buff', buff, LogBuffer)
  append(separator, 0, true) if separator != ''
  index = 0
  for line in buff.lines
    line_feed if index > 0
    append(line.log, line.nest_level, index == 0 && separator != '')
    index += 1
  end
  self
end

#down_nestObject

Downs the data nest level.



47
48
49
# File 'lib/debugtrace/log_buffer.rb', line 47

def down_nest
  @nest_level -= 1
end

#lengthObject

The length of the last line.



96
97
98
# File 'lib/debugtrace/log_buffer.rb', line 96

def length
  @last_line.length
end

#line_feedObject

Breaks the current line.



35
36
37
38
39
# File 'lib/debugtrace/log_buffer.rb', line 35

def line_feed
  @lines << LevelAndLog.new(@nest_level + @append_nest_level, @last_line.rstrip)
  @append_nest_level = 0
  @last_line = ''
end

#linesObject

A list of tuple of data indentation level && log string.



106
107
108
109
110
# File 'lib/debugtrace/log_buffer.rb', line 106

def lines
  lines = @lines.dup
  lines << LevelAndLog.new(@nest_level, @last_line) if length > 0
  lines
end

#multi_lines?Boolean

true if multiple line, false otherwise.

Returns:

  • (Boolean)


101
102
103
# File 'lib/debugtrace/log_buffer.rb', line 101

def multi_lines?
  @lines.length > 1 || @lines.length == 1 && length > 0
end

#no_break_append(value) ⇒ Object

Appends a string representation of the value. Does not break even if the maximum width is exceeded.

Parameters:

  • value (Object)

    : The value to append

Returns:

  • LogBuffer: This object



73
74
75
# File 'lib/debugtrace/log_buffer.rb', line 73

def no_break_append(value)
  append(value, 0, true)
end

#up_nestObject

Ups the data nest level.



42
43
44
# File 'lib/debugtrace/log_buffer.rb', line 42

def up_nest
  @nest_level += 1
end