summaryrefslogtreecommitdiff
path: root/lib/pry/command_state.rb
blob: fa98d51555942938910328808e75c37410760b5c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# frozen_string_literal: true

require 'ostruct'

class Pry
  # CommandState is a data structure to hold per-command state.
  #
  # Pry commands can store arbitrary state here. This state persists between
  # subsequent command invocations. All state saved here is unique to the
  # command.
  #
  # @since v0.13.0
  # @api private
  class CommandState
    def self.default
      @default ||= new
    end

    def initialize
      @command_state = {}
    end

    def state_for(command_name)
      @command_state[command_name] ||= OpenStruct.new
    end

    def reset(command_name)
      @command_state[command_name] = OpenStruct.new
    end
  end
end