mirror of
https://github.com/ruby/ruby.git
synced 2025-08-27 06:56:13 +02:00
[ruby/reline] Remove unused things from reline/unicode.rb
(https://github.com/ruby/reline/pull/759)
* Remove garbage(nil) from Reline::Unicode.split_by_width result
* Remove unused width from Reline::Unicode vi_ ed_ em_ method return value
* Remove unused height from Unicode.split_by_width return value
* Rename split_by_width to split_line_by_width and add legacy split_by_width for IRB
f32446ebc4
This commit is contained in:
parent
bce1bd1dc1
commit
5eaa4c76c6
3 changed files with 171 additions and 95 deletions
|
@ -121,9 +121,14 @@ class Reline::Unicode
|
|||
end
|
||||
end
|
||||
|
||||
def self.split_by_width(str, max_width, encoding = str.encoding, offset: 0)
|
||||
# This method is used by IRB
|
||||
def self.split_by_width(str, max_width)
|
||||
lines = split_line_by_width(str, max_width)
|
||||
[lines, lines.size]
|
||||
end
|
||||
|
||||
def self.split_line_by_width(str, max_width, encoding = str.encoding, offset: 0)
|
||||
lines = [String.new(encoding: encoding)]
|
||||
height = 1
|
||||
width = offset
|
||||
rest = str.encode(Encoding::UTF_8)
|
||||
in_zero_width = false
|
||||
|
@ -151,9 +156,7 @@ class Reline::Unicode
|
|||
mbchar_width = get_mbchar_width(gc)
|
||||
if (width += mbchar_width) > max_width
|
||||
width = mbchar_width
|
||||
lines << nil
|
||||
lines << seq.dup
|
||||
height += 1
|
||||
end
|
||||
end
|
||||
lines.last << gc
|
||||
|
@ -161,11 +164,9 @@ class Reline::Unicode
|
|||
end
|
||||
# The cursor moves to next line in first
|
||||
if width == max_width
|
||||
lines << nil
|
||||
lines << String.new(encoding: encoding)
|
||||
height += 1
|
||||
end
|
||||
[lines, height]
|
||||
lines
|
||||
end
|
||||
|
||||
def self.strip_non_printing_start_end(prompt)
|
||||
|
@ -261,27 +262,23 @@ class Reline::Unicode
|
|||
end
|
||||
|
||||
def self.em_forward_word(line, byte_pointer)
|
||||
width = 0
|
||||
byte_size = 0
|
||||
while line.bytesize > (byte_pointer + byte_size)
|
||||
size = get_next_mbchar_size(line, byte_pointer + byte_size)
|
||||
mbchar = line.byteslice(byte_pointer + byte_size, size)
|
||||
break if mbchar.encode(Encoding::UTF_8) =~ /\p{Word}/
|
||||
width += get_mbchar_width(mbchar)
|
||||
byte_size += size
|
||||
end
|
||||
while line.bytesize > (byte_pointer + byte_size)
|
||||
size = get_next_mbchar_size(line, byte_pointer + byte_size)
|
||||
mbchar = line.byteslice(byte_pointer + byte_size, size)
|
||||
break if mbchar.encode(Encoding::UTF_8) =~ /\P{Word}/
|
||||
width += get_mbchar_width(mbchar)
|
||||
byte_size += size
|
||||
end
|
||||
[byte_size, width]
|
||||
byte_size
|
||||
end
|
||||
|
||||
def self.em_forward_word_with_capitalization(line, byte_pointer)
|
||||
width = 0
|
||||
byte_size = 0
|
||||
new_str = String.new
|
||||
while line.bytesize > (byte_pointer + byte_size)
|
||||
|
@ -289,7 +286,6 @@ class Reline::Unicode
|
|||
mbchar = line.byteslice(byte_pointer + byte_size, size)
|
||||
break if mbchar.encode(Encoding::UTF_8) =~ /\p{Word}/
|
||||
new_str += mbchar
|
||||
width += get_mbchar_width(mbchar)
|
||||
byte_size += size
|
||||
end
|
||||
first = true
|
||||
|
@ -303,50 +299,43 @@ class Reline::Unicode
|
|||
else
|
||||
new_str += mbchar.downcase
|
||||
end
|
||||
width += get_mbchar_width(mbchar)
|
||||
byte_size += size
|
||||
end
|
||||
[byte_size, width, new_str]
|
||||
[byte_size, new_str]
|
||||
end
|
||||
|
||||
def self.em_backward_word(line, byte_pointer)
|
||||
width = 0
|
||||
byte_size = 0
|
||||
while 0 < (byte_pointer - byte_size)
|
||||
size = get_prev_mbchar_size(line, byte_pointer - byte_size)
|
||||
mbchar = line.byteslice(byte_pointer - byte_size - size, size)
|
||||
break if mbchar.encode(Encoding::UTF_8) =~ /\p{Word}/
|
||||
width += get_mbchar_width(mbchar)
|
||||
byte_size += size
|
||||
end
|
||||
while 0 < (byte_pointer - byte_size)
|
||||
size = get_prev_mbchar_size(line, byte_pointer - byte_size)
|
||||
mbchar = line.byteslice(byte_pointer - byte_size - size, size)
|
||||
break if mbchar.encode(Encoding::UTF_8) =~ /\P{Word}/
|
||||
width += get_mbchar_width(mbchar)
|
||||
byte_size += size
|
||||
end
|
||||
[byte_size, width]
|
||||
byte_size
|
||||
end
|
||||
|
||||
def self.em_big_backward_word(line, byte_pointer)
|
||||
width = 0
|
||||
byte_size = 0
|
||||
while 0 < (byte_pointer - byte_size)
|
||||
size = get_prev_mbchar_size(line, byte_pointer - byte_size)
|
||||
mbchar = line.byteslice(byte_pointer - byte_size - size, size)
|
||||
break if mbchar =~ /\S/
|
||||
width += get_mbchar_width(mbchar)
|
||||
byte_size += size
|
||||
end
|
||||
while 0 < (byte_pointer - byte_size)
|
||||
size = get_prev_mbchar_size(line, byte_pointer - byte_size)
|
||||
mbchar = line.byteslice(byte_pointer - byte_size - size, size)
|
||||
break if mbchar =~ /\s/
|
||||
width += get_mbchar_width(mbchar)
|
||||
byte_size += size
|
||||
end
|
||||
[byte_size, width]
|
||||
byte_size
|
||||
end
|
||||
|
||||
def self.ed_transpose_words(line, byte_pointer)
|
||||
|
@ -451,73 +440,61 @@ class Reline::Unicode
|
|||
end
|
||||
|
||||
def self.vi_big_forward_word(line, byte_pointer)
|
||||
width = 0
|
||||
byte_size = 0
|
||||
while (line.bytesize - 1) > (byte_pointer + byte_size)
|
||||
size = get_next_mbchar_size(line, byte_pointer + byte_size)
|
||||
mbchar = line.byteslice(byte_pointer + byte_size, size)
|
||||
break if mbchar =~ /\s/
|
||||
width += get_mbchar_width(mbchar)
|
||||
byte_size += size
|
||||
end
|
||||
while (line.bytesize - 1) > (byte_pointer + byte_size)
|
||||
size = get_next_mbchar_size(line, byte_pointer + byte_size)
|
||||
mbchar = line.byteslice(byte_pointer + byte_size, size)
|
||||
break if mbchar =~ /\S/
|
||||
width += get_mbchar_width(mbchar)
|
||||
byte_size += size
|
||||
end
|
||||
[byte_size, width]
|
||||
byte_size
|
||||
end
|
||||
|
||||
def self.vi_big_forward_end_word(line, byte_pointer)
|
||||
if (line.bytesize - 1) > byte_pointer
|
||||
size = get_next_mbchar_size(line, byte_pointer)
|
||||
mbchar = line.byteslice(byte_pointer, size)
|
||||
width = get_mbchar_width(mbchar)
|
||||
byte_size = size
|
||||
else
|
||||
return [0, 0]
|
||||
return 0
|
||||
end
|
||||
while (line.bytesize - 1) > (byte_pointer + byte_size)
|
||||
size = get_next_mbchar_size(line, byte_pointer + byte_size)
|
||||
mbchar = line.byteslice(byte_pointer + byte_size, size)
|
||||
break if mbchar =~ /\S/
|
||||
width += get_mbchar_width(mbchar)
|
||||
byte_size += size
|
||||
end
|
||||
prev_width = width
|
||||
prev_byte_size = byte_size
|
||||
while line.bytesize > (byte_pointer + byte_size)
|
||||
size = get_next_mbchar_size(line, byte_pointer + byte_size)
|
||||
mbchar = line.byteslice(byte_pointer + byte_size, size)
|
||||
break if mbchar =~ /\s/
|
||||
prev_width = width
|
||||
prev_byte_size = byte_size
|
||||
width += get_mbchar_width(mbchar)
|
||||
byte_size += size
|
||||
end
|
||||
[prev_byte_size, prev_width]
|
||||
prev_byte_size
|
||||
end
|
||||
|
||||
def self.vi_big_backward_word(line, byte_pointer)
|
||||
width = 0
|
||||
byte_size = 0
|
||||
while 0 < (byte_pointer - byte_size)
|
||||
size = get_prev_mbchar_size(line, byte_pointer - byte_size)
|
||||
mbchar = line.byteslice(byte_pointer - byte_size - size, size)
|
||||
break if mbchar =~ /\S/
|
||||
width += get_mbchar_width(mbchar)
|
||||
byte_size += size
|
||||
end
|
||||
while 0 < (byte_pointer - byte_size)
|
||||
size = get_prev_mbchar_size(line, byte_pointer - byte_size)
|
||||
mbchar = line.byteslice(byte_pointer - byte_size - size, size)
|
||||
break if mbchar =~ /\s/
|
||||
width += get_mbchar_width(mbchar)
|
||||
byte_size += size
|
||||
end
|
||||
[byte_size, width]
|
||||
byte_size
|
||||
end
|
||||
|
||||
def self.vi_forward_word(line, byte_pointer, drop_terminate_spaces = false)
|
||||
|
@ -531,10 +508,9 @@ class Reline::Unicode
|
|||
else
|
||||
started_by = :non_word_printable
|
||||
end
|
||||
width = get_mbchar_width(mbchar)
|
||||
byte_size = size
|
||||
else
|
||||
return [0, 0]
|
||||
return 0
|
||||
end
|
||||
while line.bytesize > (byte_pointer + byte_size)
|
||||
size = get_next_mbchar_size(line, byte_pointer + byte_size)
|
||||
|
@ -547,18 +523,16 @@ class Reline::Unicode
|
|||
when :non_word_printable
|
||||
break if mbchar =~ /\w|\s/
|
||||
end
|
||||
width += get_mbchar_width(mbchar)
|
||||
byte_size += size
|
||||
end
|
||||
return [byte_size, width] if drop_terminate_spaces
|
||||
return byte_size if drop_terminate_spaces
|
||||
while line.bytesize > (byte_pointer + byte_size)
|
||||
size = get_next_mbchar_size(line, byte_pointer + byte_size)
|
||||
mbchar = line.byteslice(byte_pointer + byte_size, size)
|
||||
break if mbchar =~ /\S/
|
||||
width += get_mbchar_width(mbchar)
|
||||
byte_size += size
|
||||
end
|
||||
[byte_size, width]
|
||||
byte_size
|
||||
end
|
||||
|
||||
def self.vi_forward_end_word(line, byte_pointer)
|
||||
|
@ -572,10 +546,9 @@ class Reline::Unicode
|
|||
else
|
||||
started_by = :non_word_printable
|
||||
end
|
||||
width = get_mbchar_width(mbchar)
|
||||
byte_size = size
|
||||
else
|
||||
return [0, 0]
|
||||
return 0
|
||||
end
|
||||
if (line.bytesize - 1) > (byte_pointer + byte_size)
|
||||
size = get_next_mbchar_size(line, byte_pointer + byte_size)
|
||||
|
@ -587,13 +560,11 @@ class Reline::Unicode
|
|||
else
|
||||
second = :non_word_printable
|
||||
end
|
||||
second_width = get_mbchar_width(mbchar)
|
||||
second_byte_size = size
|
||||
else
|
||||
return [byte_size, width]
|
||||
return byte_size
|
||||
end
|
||||
if second == :space
|
||||
width += second_width
|
||||
byte_size += second_byte_size
|
||||
while (line.bytesize - 1) > (byte_pointer + byte_size)
|
||||
size = get_next_mbchar_size(line, byte_pointer + byte_size)
|
||||
|
@ -606,7 +577,6 @@ class Reline::Unicode
|
|||
end
|
||||
break
|
||||
end
|
||||
width += get_mbchar_width(mbchar)
|
||||
byte_size += size
|
||||
end
|
||||
else
|
||||
|
@ -614,12 +584,10 @@ class Reline::Unicode
|
|||
when [:word, :non_word_printable], [:non_word_printable, :word]
|
||||
started_by = second
|
||||
else
|
||||
width += second_width
|
||||
byte_size += second_byte_size
|
||||
started_by = second
|
||||
end
|
||||
end
|
||||
prev_width = width
|
||||
prev_byte_size = byte_size
|
||||
while line.bytesize > (byte_pointer + byte_size)
|
||||
size = get_next_mbchar_size(line, byte_pointer + byte_size)
|
||||
|
@ -630,16 +598,13 @@ class Reline::Unicode
|
|||
when :non_word_printable
|
||||
break if mbchar =~ /[\w\s]/
|
||||
end
|
||||
prev_width = width
|
||||
prev_byte_size = byte_size
|
||||
width += get_mbchar_width(mbchar)
|
||||
byte_size += size
|
||||
end
|
||||
[prev_byte_size, prev_width]
|
||||
prev_byte_size
|
||||
end
|
||||
|
||||
def self.vi_backward_word(line, byte_pointer)
|
||||
width = 0
|
||||
byte_size = 0
|
||||
while 0 < (byte_pointer - byte_size)
|
||||
size = get_prev_mbchar_size(line, byte_pointer - byte_size)
|
||||
|
@ -652,7 +617,6 @@ class Reline::Unicode
|
|||
end
|
||||
break
|
||||
end
|
||||
width += get_mbchar_width(mbchar)
|
||||
byte_size += size
|
||||
end
|
||||
while 0 < (byte_pointer - byte_size)
|
||||
|
@ -664,14 +628,12 @@ class Reline::Unicode
|
|||
when :non_word_printable
|
||||
break if mbchar =~ /[\w\s]/
|
||||
end
|
||||
width += get_mbchar_width(mbchar)
|
||||
byte_size += size
|
||||
end
|
||||
[byte_size, width]
|
||||
byte_size
|
||||
end
|
||||
|
||||
def self.vi_first_print(line)
|
||||
width = 0
|
||||
byte_size = 0
|
||||
while (line.bytesize - 1) > byte_size
|
||||
size = get_next_mbchar_size(line, byte_size)
|
||||
|
@ -679,9 +641,8 @@ class Reline::Unicode
|
|||
if mbchar =~ /\S/
|
||||
break
|
||||
end
|
||||
width += get_mbchar_width(mbchar)
|
||||
byte_size += size
|
||||
end
|
||||
[byte_size, width]
|
||||
byte_size
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue