Sha256: b8623b6b3c2a90f1d81266abfb9c473bee557b5ac5ec6e18d25242b9f3d46ce9

Contents?: true

Size: 1.02 KB

Versions: 11

Compression:

Stored size: 1.02 KB

Contents

module Redcar
  class Command
    # A class that holds a Redcar command history. The maximum length
    # defaults to 500.
    class History < Array
      def initialize
        @max       = 500
      end
    
      # Add a command to the command history if CommandHistory.recording is
      # true.
      def record(command)
        if command.class.record?
          self << command
        end
        prune
      end
    
      # Adds a command to the command history if CommandHistory.recording is
      # true. If the last command is of the same class, it is replaced.
      def record_and_replace(command)
        if command.class.record?
          if last.class == command.class
            self[-1] = command
          else
            self << command
          end
        end
        prune
      end
    
      # Set the maximum length of the history
      def max=(max)
        @max = max
      end
      
      private
      
      def prune #:nodoc:
        (length - @max).times { delete_at(0) }
      end
    end
  end
end




Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
redcar-0.3.6 plugins/application/lib/application/command/history.rb
redcar-0.3.5 plugins/application/lib/application/command/history.rb
redcar-0.3.4.3 plugins/application/lib/application/command/history.rb
redcar-0.3.4.2 plugins/application/lib/application/command/history.rb
redcar-0.3.4.1 plugins/application/lib/application/command/history.rb
redcar-0.3.4 plugins/application/lib/application/command/history.rb
redcar-0.3.3 plugins/application/lib/application/command/history.rb
redcar-0.3.2dev plugins/application/lib/application/command/history.rb
redcar-0.3.1dev plugins/application/lib/application/command/history.rb
redcar-0.3.0dev plugins/application/lib/application/command/history.rb
redcar-0.2.9dev plugins/application/lib/application/command/history.rb