class Reline::KillRing::RingBuffer
Attributes
Public Class Methods
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
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