Sha256: a0e9e37ef8c165eab4ac47ee2c2ade2e56ef6eb21fb5c319bb5461a7bcdb23a2

Contents?: true

Size: 1.66 KB

Versions: 1

Compression:

Stored size: 1.66 KB

Contents

require 'icepick/version'
require 'icepick/config'
require 'icepick/prompt'

require 'pry'
require 'pry-doc'
require 'pry-stack_explorer'
require 'pry-debugger'
require 'awesome_print'
require 'readline'

module Icepick

  # AwesomePrint configuration options
  AWESOME_OPTS = {
    indent:     2,
    sort_keys:  true
  }

  # Public: Prohibit the instantiation of Icepick
  #
  # Raises NotImplementedError
  def initialize
    raise NotImplementedError
  end

  # Public: Setup and initialize Icepick
  #
  # options - Options to use in setup (defaults: {})
  #   * name: A name to use for the prompt
  #
  # Returns nothing
  def self.initialize!(name = nil)
    silence_warnings do
      # Set the prompt name, for the Railtie this is the application name
      Prompt.config.name = name if name

      # Use awesome_print for Pry output
      Pry.config.print = ->(output, value) do
        pretty = value.ai(AWESOME_OPTS)
        Pry::Helpers::BaseHelpers.stagger_output("=> #{pretty}", output)
      end

      # Use Icepick's Prompt for Pry
      Pry.config.prompt = [Prompt.main_prompt, Prompt.wait_prompt]

      # Debugger shortcuts
      if defined?(PryDebugger)
        Pry.commands.alias_command 'c', 'continue'
        Pry.commands.alias_command 's', 'step'
        Pry.commands.alias_command 'n', 'next'
        Pry.commands.alias_command 'f', 'finish'
      end
    end
  end

  private

  # Internal: Suppress warnings and errors
  #
  # Returns nothing
  def self.silence_warnings
    old_verbose, $VERBOSE = $VERBOSE, nil
    yield
  ensure
    $VERBOSE = old_verbose
  end
end

if defined?(Rails)
  require 'pry-rails'
  require 'icepick/railtie'
else
  Icepick.initialize!
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
icepick-0.2.0 lib/icepick.rb