module StringUtility def ellipsize( string, minimum_length = Constants::MAX_NAME_TRUNCATION, edge_length = Constants::MAX_EDGE_LENGTH ) length = string.length return string if length < minimum_length || length <= edge_length * 2 edge = '.' * edge_length mid_length = length - edge_length * 2 string.gsub(/(#{edge}).{#{mid_length},}(#{edge})/, '\1...\2') end end