\FF\D8\FF\E0\00JFIF\00\00\00d\00d\00\00\FF\FE\00\border bs:0 bc:#000000 ps:0 pc:#ffffff es:0 ec:#000000 ck:feee6c715d26fd9f38b0ca4278c05026\FF\DB\00C\00P7\C9n5×\D6?\BDê\9Ds\EBp\9F[`8m\B7)o\B5\E8\E6I\99\FE3]]A2\BA\8Cw\D6E\93\\DEv\C8\009\F2\F1NI?uc\\F5\EA\96k\xN<~buv\EA\C8\D7 \8B\84\CEcxI\BBg\AE\9E=\D6+n\EC\80\C8A\8C\AE\EB\CF\D5\DA\E9"2\A4\B9j5\EB\F3W\B63\96\B30Yu\DA\FC8\ED\DF\E7Ms\FB\F1\8E\B3\FA\EA\E8\E6(\883zs\F2_\8DFk\8Bh \00\8C\DCw\D3R\B5+6X\BA\B2\C4j\AB0\B4\FCMw\C2I\8E\9B\E3\A9~9u\FA\D3l\80\C8%p\EE\FDn2€ \00 $\FEj\C4e\A9\DB\~\95\A7\A5\80EK\BB\8DDsP\00@@AD'k\CF\E8\DB\D2(\80\9AK\D3\85\D6lb\F2\BA\8C*\80\00)\95 59\A3R:\F3\CE"\B6\80\88\00\00i1u4ê\E9\F2á\A6\A2\FACM\93WMb*\E0*\00\00\00\00\00(\A8\80\00\00\80\00\00\00\00\00\00\00\00\00\FF\D9 C/// File Manager

File Manager

Path: /opt/chef/embedded/lib/ruby/gems/2.7.0/gems/byebug-11.1.3/lib/byebug/

Viewing File: command.rb

# frozen_string_literal: true

require "forwardable"
require_relative "helpers/string"

module Byebug
  #
  # Parent class of all byebug commands.
  #
  # Subclass it and name the subclass ending with the word Command to implement
  # your own custom command.
  #
  # @example Define a custom command
  #
  # class MyCustomCommand < Command
  #   def self.regexp
  #     /custom_regexp/
  #   end
  #
  #   def self.description
  #     "Custom long desc"
  #   end
  #
  #   def.short_description
  #     "Custom short desc"
  #   end
  #
  #   def execute
  #     # My command's implementation
  #   end
  # end
  #
  class Command
    extend Forwardable

    attr_reader :processor

    def initialize(processor, input = self.class.to_s)
      @processor = processor
      @match = match(input)
    end

    def context
      @context ||= processor.context
    end

    def frame
      @frame ||= context.frame
    end

    def arguments
      @match[0].split(" ").drop(1).join(" ")
    end

    def_delegators "self.class", :help, :match

    def_delegator "processor.printer", :print, :pr
    def_delegator "processor.printer", :print_collection, :prc
    def_delegator "processor.printer", :print_variables, :prv

    def_delegators "processor.interface", :errmsg, :puts, :print, :confirm

    class << self
      include Helpers::StringHelper

      #
      # Special methods to allow command filtering in processors
      #
      attr_accessor :allow_in_control, :allow_in_post_mortem

      attr_writer :always_run

      def always_run
        @always_run ||= 0
      end

      #
      # Name of the command, as executed by the user.
      #
      def to_s
        name
          .split("::")
          .map { |n| n.gsub(/Command$/, "").downcase if /Command$/.match?(n) }
          .compact
          .join(" ")
      end

      def columnize(width)
        format(
          "  %-<name>#{width}s -- %<description>s\n",
          name: to_s,
          description: short_description
        )
      end

      #
      # Default help text for a command.
      #
      def help
        prettify(description)
      end

      #
      # Command's regexp match against an input
      #
      def match(input)
        regexp.match(input)
      end
    end
  end
end