commit f8229ce1cbe19e494d3936c5f836b17e0478a1fa
parent e4b98c49131adebf6b2e51f5ce72679e19842a0b
Author: Vickenty Fesunov <kent@setattr.net>
Date: Wed, 24 Jun 2015 20:32:45 +0200
Make slice_by_display_length faster, part 2.
Don't call fix_encoding! on every character in the string.
Diffstat:
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/lib/sup/util.rb b/lib/sup/util.rb
@@ -252,7 +252,9 @@ class String
def slice_by_display_length len
each_char.each_with_object "" do |c, buffer|
- len -= c.display_length
+ width = Unicode.width(c, false)
+ width = 1 if width < 0
+ len -= width
return buffer if len < 0
buffer << c
end