module AmazingPrint

def self.version

def self.version
  '1.5.0'
end

def boolean(value)

https://github.com/bbatsov/ruby-style-guide#no-bang-bang
This is an alternative to the less readable !!(value)
Takes a value and returns true unless it is false or nil
def boolean(value)
  value ? true : false
end

def console?

def console?
  boolean(defined?(IRB) || defined?(Pry))
end

def diet_rb

def diet_rb
  IRB.formatter = Class.new(IRB::Formatter) do
    def inspect_object(object)
      object.ai
    end
  end.new
end

def force_colors!(colors: true)

---------------------------------------------------------------------------
might be dumb).
Class accessor to force colorized output (ex. forked subprocess where TERM
def force_colors!(colors: true)
  @force_colors = colors
end

def inspect_object(object)

def inspect_object(object)
  object.ai
end

def irb!

def irb!
  return unless defined?(IRB)
  IRB.version.include?('DietRB') ? diet_rb : usual_rb
end

def output_value(_omit = false) # rubocop:disable Style/OptionalBooleanParameter

rubocop:disable Style/OptionalBooleanParameter
def output_value(_omit = false) # rubocop:disable Style/OptionalBooleanParameter
  ap @context.last_value
rescue NoMethodError
  puts "(Object doesn't support #ai)"
end

def pry!

def pry!
  Pry.print = proc { |output, value| output.puts value.ai } if defined?(Pry)
end

def rails_console?

def rails_console?
  console? && boolean(defined?(Rails::Console) || ENV['RAILS_ENV'])
end

def reload!


Reload the cached custom configurations.
#
def reload!
  AmazingPrint::Inspector.reload_dotfile
end

def usual_rb

def usual_rb
  IRB::Irb.class_eval do
    def output_value(_omit = false) # rubocop:disable Style/OptionalBooleanParameter
      ap @context.last_value
    rescue NoMethodError
      puts "(Object doesn't support #ai)"
    end
  end
end