class Reline::KillRing::RingBuffer - Documentation for Ruby 3.4
Description: Documentation for the Reline::KillRing::RingBuffer class
Keywords: ruby,class,Reline::KillRing::RingBuffer

# class Reline::KillRing::RingBuffer

### Attributes

head [R]
size [R]

### Public Class Methods

new (max = 1024)
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)
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? ()
Source

    # File lib/reline/kill_ring.rb, line 56
    def empty?
      @size.zero?
    end