class FlexColumns::Util::StringUtils
Contains a single method for abbreviating strings.
Yes, this is very un-Ruby-like – to define a separate utility function, rather than just adding a method to String. However, this method is used in such limited context (generating exception messages) that polluting the namespace of one of the most important classes in Ruby is probably a pretty bad idea.
Constants
- ABBREVIATED_STRING_SEPARATOR
- MAX_LENGTH_FOR_ABBREVIATED_STRING
Public Class Methods
abbreviated_string(s)
click to toggle source
Returns a string of length no more than MAX_LENGTH_FOR_ABBREVIATED_STRING
, by eliding, if necessary, characters from the middle. This is used when throwing exceptions: flex_columns
can generate very long strings of JSON data, and having many kilobytes (or even megabytes) of JSON make its way into an exception message is probably a really bad idea.
# File lib/flex_columns/util/string_utils.rb, line 17 def abbreviated_string(s) if s && s.length > MAX_LENGTH_FOR_ABBREVIATED_STRING before_separator_length = ((MAX_LENGTH_FOR_ABBREVIATED_STRING - ABBREVIATED_STRING_SEPARATOR.length) / 2.0).floor out = s[0..(before_separator_length - 1)] + ABBREVIATED_STRING_SEPARATOR remaining = MAX_LENGTH_FOR_ABBREVIATED_STRING - out.length out << s[(-remaining + 1)..-1] out else s end end