class Reline::History - Documentation for Ruby 3.3

# class Reline::History

### Public Class Methods

new(config) click to toggle source

    # File lib/reline/history.rb, line 2
    def initialize(config)
      @config = config
    end

### Public Instance Methods

<<(val) click to toggle source
Calls superclass method `Array#<<`

    # File lib/reline/history.rb, line 52
    def <<(val)
      # If history_size is zero, all histories are dropped.
      return self if @config.history_size.zero?
      # If history_size is negative, history size is unlimited.
      if @config.history_size.positive?
        shift if size + 1 > @config.history_size
      end
      super(String.new(val, encoding: Reline.encoding_system_needs))
    end

[](index) click to toggle source
Calls superclass method `Array::[]`

    # File lib/reline/history.rb, line 15
    def [](index)
      index = check_index(index) unless index.is_a?(Range)
      super(index)
    end

[]=(index, val) click to toggle source
Calls superclass method `Array#[]=`

    # File lib/reline/history.rb, line 20
    def []=(index, val)
      index = check_index(index)
      super(index, String.new(val, encoding: Reline.encoding_system_needs))
    end

concat(*val) click to toggle source

    # File lib/reline/history.rb, line 25
    def concat(*val)
      val.each do |v|
        push(*v)
      end
    end

delete_at(index) click to toggle source
Calls superclass method `Array#delete_at`

    # File lib/reline/history.rb, line 10
    def delete_at(index)
      index = check_index(index)
      super(index)
    end

push(*val) click to toggle source
Calls superclass method `Array#push`

    # File lib/reline/history.rb, line 31
    def push(*val)
      # If history_size is zero, all histories are dropped.
      return self if @config.history_size.zero?
      # If history_size is negative, history size is unlimited.
      if @config.history_size.positive?
        diff = size + val.size - @config.history_size
        if diff > 0
          if diff <= size
            shift(diff)
          else
            diff -= size
            clear
            val.shift(diff)
          end
        end
      end
      super(*(val.map{ |v|
        String.new(v, encoding: Reline.encoding_system_needs)
      }))
    end

to_s() click to toggle source

    # File lib/reline/history.rb, line 6
    def to_s
      'HISTORY'
    end

### Private Instance Methods

check_index(index) click to toggle source

    # File lib/reline/history.rb, line 62
            def check_index(index)
      index += size if index < 0
      if index < -2147483648 or 2147483647 < index
        raise RangeError.new("integer #{index} too big to convert to 'int'")
      end
      # If history_size is negative, history size is unlimited.
      if @config.history_size.positive?
        if index < -@config.history_size or @config.history_size < index
          raise RangeError.new("index=<#{index}>")
        end
      end
      raise IndexError.new("index=<#{index}>") if index < 0 or size <= index
      index
    end