class Reline::KillRing::RingBuffer
Attributes
head[R]
size[R]
Public Class Methods
new(max = 1024)
click to toggle source
# File lib/reline/kill_ring.rb, line 25 def initialize(max = 1024) @max = max @size = 0 @head = nil # reading head of ring-shaped tape end
Public Instance Methods
<<(point)
click to toggle source
# File lib/reline/kill_ring.rb, line 31 def <<(point) if @size.zero? @head = point @head.backward = @head @head.forward = @head @size = 1 elsif @size >= @max tail = @head.forward new_tail = tail.forward @head.forward = point point.backward = @head new_tail.backward = point point.forward = new_tail @head = point else tail = @head.forward @head.forward = point point.backward = @head tail.backward = point point.forward = tail @head = point @size += 1 end end
empty?()
click to toggle source
# File lib/reline/kill_ring.rb, line 56 def empty? @size.zero? end