класс Reline::KillRing
Константы
- RingPoint
Публичные методы класса
Исходный код
# File lib/reline/kill_ring.rb, line 61 def initialize(max = 1024) @ring = RingBuffer.new(max) @ring_pointer = nil @buffer = nil @state = State::FRESH end
Публичные методы экземпляра
Исходный код
# File lib/reline/kill_ring.rb, line 68
def append(string, before_p = false)
case @state
when State::FRESH, State::YANK
@ring << RingPoint.new(+string)
@state = State::CONTINUED
when State::CONTINUED, State::PROCESSED
if before_p
@ring.head.str.prepend(string)
else
@ring.head.str.concat(string)
end
@state = State::CONTINUED
end
end Исходный код
# File lib/reline/kill_ring.rb, line 116
def each
start = head = @ring.head
loop do
break if head.nil?
yield head.str
head = head.backward
break if head == start
end
end Исходный код
# File lib/reline/kill_ring.rb, line 83
def process
case @state
when State::FRESH
# nothing to do
when State::CONTINUED
@state = State::PROCESSED
when State::PROCESSED
@state = State::FRESH
when State::YANK
# nothing to do
end
end Исходный код
# File lib/reline/kill_ring.rb, line 96
def yank
unless @ring.empty?
@state = State::YANK
@ring_pointer = @ring.head
@ring_pointer.str
else
nil
end
end Исходный код
# File lib/reline/kill_ring.rb, line 106
def yank_pop
if @state == State::YANK
prev_yank = @ring_pointer.str
@ring_pointer = @ring_pointer.backward
[@ring_pointer.str, prev_yank]
else
nil
end
end
Ruby Core © 1993–2024 Yukihiro Matsumoto
Licensed under the Ruby License.
Ruby Standard Library © contributors
Licensed under their own licenses.