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.



30
31
32
33
34
35
36
37
38
39
40
# File 'lib/debugtrace/log_buffer.rb', line 30

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) ⇒ LogBuffer

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:



66
67
68
69
70
71
72
73
74
75
76
# File 'lib/debugtrace/log_buffer.rb', line 66

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
  return self
end

#append_buffer(separator, buff) ⇒ LogBuffer

Appends lines of another LogBuffer.

Parameters:

  • separator (String)

    the separator string to append if not ”

  • buff (LogBuffer)

    another LogBuffer

Returns:



92
93
94
95
96
97
98
99
100
101
102
103
# File 'lib/debugtrace/log_buffer.rb', line 92

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
  return self
end

#down_nestObject

Downs the data nest level.



55
56
57
# File 'lib/debugtrace/log_buffer.rb', line 55

def down_nest
  @nest_level -= 1
end

#lengthObject

The length of the last line.



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

def length
  return @last_line.length
end

#line_feedObject

Breaks the current line.



43
44
45
46
47
# File 'lib/debugtrace/log_buffer.rb', line 43

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

#linesArray<LevelAndLog>

Returns the LevelAndLog objects.

Returns:



120
121
122
123
124
# File 'lib/debugtrace/log_buffer.rb', line 120

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

#multi_lines?FalseClass, TrueClass

Returns true if multiple line, false otherwise.

Returns:

  • (FalseClass, TrueClass)

    true if multiple line, false otherwise.



113
114
115
# File 'lib/debugtrace/log_buffer.rb', line 113

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

#no_break_append(value) ⇒ LogBuffer

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:



83
84
85
# File 'lib/debugtrace/log_buffer.rb', line 83

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

#up_nestObject

Ups the data nest level.



50
51
52
# File 'lib/debugtrace/log_buffer.rb', line 50

def up_nest
  @nest_level += 1
end