Class: DebugIsTruncated

Inherits:
Logger
  • Object
show all
Defined in:
src/ruby/pb/test/server.rb

Overview

DebugIsTruncated extends the default Logger to truncate debug messages

Instance Method Summary collapse

Instance Method Details

#debug(s) ⇒ Object



44
45
46
# File 'src/ruby/pb/test/server.rb', line 44

def debug(s)
  super(truncate(s, 1024))
end

#truncate(s, truncate_at, options = {}) ⇒ Object

Truncates a given text after a given length if text is longer than length:

'Once upon a time in a world far far away'.truncate(27)
# => "Once upon a time in a wo..."

Pass a string or regexp :separator to truncate text at a natural break:

'Once upon a time in a world far far away'.truncate(27, separator: ' ')
# => "Once upon a time in a..."

'Once upon a time in a world far far away'.truncate(27, separator: /\s/)
# => "Once upon a time in a..."

The last characters will be replaced with the :omission string (defaults to “…”) for a total length not exceeding length:

'And they found that many people were sleeping better.'.truncate(25, omission: '... (continued)')
# => "And they f... (continued)"


66
67
68
69
70
71
72
73
74
75
76
77
# File 'src/ruby/pb/test/server.rb', line 66

def truncate(s, truncate_at, options = {})
  return s unless s.length > truncate_at
  omission = options[:omission] || '...'
  with_extra_room = truncate_at - omission.length
  stop = \
    if options[:separator]
      rindex(options[:separator], with_extra_room) || with_extra_room
    else
      with_extra_room
    end
  "#{s[0, stop]}#{omission}"
end