aboutsummaryrefslogtreecommitdiffstats
path: root/lib/rubygems/text.rb
diff options
context:
space:
mode:
authorhsbt <hsbt@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2017-08-28 08:31:28 +0000
committerhsbt <hsbt@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2017-08-28 08:31:28 +0000
commitc5da5b1ea27ec693dd09e9d586e913da1d5ba4b6 (patch)
tree8624c192a757d272b5ebae46dd9691b7994da0c5 /lib/rubygems/text.rb
parent1a1930180c66b291c89d486b984f8bf5237d6918 (diff)
downloadruby-c5da5b1ea27ec693dd09e9d586e913da1d5ba4b6.tar.gz
Merge rubygems-2.6.13.
see details for this update: http://blog.rubygems.org/2017/08/27/2.6.13-released.html git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59672 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/rubygems/text.rb')
-rw-r--r--lib/rubygems/text.rb15
1 files changed, 14 insertions, 1 deletions
diff --git a/lib/rubygems/text.rb b/lib/rubygems/text.rb
index 732f1b99f2..b944b62c27 100644
--- a/lib/rubygems/text.rb
+++ b/lib/rubygems/text.rb
@@ -7,12 +7,25 @@ require 'rubygems'
module Gem::Text
##
+ # Remove any non-printable characters and make the text suitable for
+ # printing.
+ def clean_text(text)
+ text.gsub(/[\000-\b\v-\f\016-\037\177]/, ".".freeze)
+ end
+
+ def truncate_text(text, description, max_length = 100_000)
+ raise ArgumentError, "max_length must be positive" unless max_length > 0
+ return text if text.size <= max_length
+ "Truncating #{description} to #{max_length.to_s.reverse.gsub(/...(?=.)/,'\&,').reverse} characters:\n" + text[0, max_length]
+ end
+
+ ##
# Wraps +text+ to +wrap+ characters and optionally indents by +indent+
# characters
def format_text(text, wrap, indent=0)
result = []
- work = text.dup
+ work = clean_text(text)
while work.length > wrap do
if work =~ /^(.{0,#{wrap}})[ \n]/ then