Full Code of plribeiro3000/jazz_fingers for AI

master 2d2d4c5a17b4 cached
28 files
27.8 KB
9.3k tokens
62 symbols
1 requests
Download .txt
Repository: plribeiro3000/jazz_fingers
Branch: master
Commit: 2d2d4c5a17b4
Files: 28
Total size: 27.8 KB

Directory structure:
gitextract_v7gj4cha/

├── .gitignore
├── .rubocop.yml
├── .ruby-gemset
├── .ruby-version
├── CHANGELOG.md
├── CONTRIBUTING.md
├── CONTRIBUTORS.md
├── Gemfile
├── LICENSE.md
├── README.md
├── Rakefile
├── jazz_fingers.gemspec
└── lib/
    ├── jazz_fingers/
    │   ├── amazing_print.rb
    │   ├── coderay/
    │   │   ├── escaped_colors.rb
    │   │   └── unescaped_colors.rb
    │   ├── coderay.rb
    │   ├── commands/
    │   │   ├── caller_method.rb
    │   │   ├── copy.rb
    │   │   └── sql.rb
    │   ├── commands.rb
    │   ├── configuration.rb
    │   ├── input.rb
    │   ├── print.rb
    │   ├── prompt/
    │   │   ├── pry_version_012_and_prior.rb
    │   │   └── pry_version_013_and_later.rb
    │   ├── prompt.rb
    │   └── version.rb
    └── jazz_fingers.rb

================================================
FILE CONTENTS
================================================

================================================
FILE: .gitignore
================================================
*.gem
*.rbc
.bundle
.config
.yardoc
Gemfile.lock
InstalledFiles
_yardoc
coverage
doc/
lib/bundler/man
pkg
rdoc
spec/reports
test/tmp
test/version_tmp
tmp


================================================
FILE: .rubocop.yml
================================================
Metrics/LineLength:
  Max: 120

Style/Documentation:
  Enabled: false


================================================
FILE: .ruby-gemset
================================================
jazz_fingers

================================================
FILE: .ruby-version
================================================
3.4.1


================================================
FILE: CHANGELOG.md
================================================
# CHANGELOG

## 7.1.0 (2026-03-25)

### Fixed
* Pager on Ruby 4.0

## 7.0.0 (2026-03-24)
* Replace `readline` with `reline` for Ruby 4.0 compatibility
* Remove `pry-byebug` runtime dependency and debugger aliases
* Simplify `colored_prompt` and `prompt_separator` defaults

## 6.3.0 (2025-10-01)
* Upgrade [amazing-print][amazing-print] to 1.8
* Upgrade [pry][pry] to 0.15
* Upgrade [pry-byebug][pry-byebug] to 3.11

## 6.2.0 (2021-04-19)
* Upgrade [pry-byebug][pry-byebug] to 3.9

## 6.1.0 (2021-04-19)
* Update [amazing_print][amazing_print] to v1.3.0

## 6.0.0.pre.rc1 (2020-10-22)
* Switched [awesome_print][awesome_print] with [amazing_print][amazing_print]

## 5.2.0 (2020-07-22)
* Fixed application name

## 5.2.1 (2020-07-16)
* Fix Rails deprecation

## 5.2.0 (2020-05-09)
* Added Pry custom commands
* Customize AwesomePrint configuration
* Customize CodeRay colors

## 5.1.0.rc1 (2020-04-25)
* Change deprecated method on pry > 0.13.0
* Improve naming context

## 5.0.1 (2019-06-02)
* Remove documentation for removed dependency
* Use non deprecated method of `pry` if existent

## 5.0.0 (2018-05-02)
* Remove [pry-doc][pry-doc] dependency to reduce memory footprint
* Remove [hirb][hirb] dependency since its not being actively maintained

## 4.0.1 (2016-05-26)
* Remove requires for `pry-remote`

## 4.0.0 (2016-05-26)
* Remove [pry-remote][pry-remote] dependency

## 3.0.2 (2016-03-07)
* Downgrade [pry-byebug][pry-byebug] to fix issues with [pry-remote][pry-remote]

## 3.0.1 (2016-02-28)
* Separate prompt and print output with a new line

## 3.0.0 (2015-09-22)

* Remove [pry-git] dependency
* Switch to HTTPS in Gemfile

## 2.0.2 (2015-09-06)

* Fix YARD issue when ENV['HOME'] is empty

## 2.0.1 (2015-06-29)

* Fix application name when outside Rails

## 2.0.1.rc1 (2015-05-27)

* Fix load of [pry][pry] plugins
* Fix application name when inside Rails
* Add feature to set a custom Name

## 2.0.0 (2015-05-31)

* Add alias to the most used commands
* Update [pry-byebug][pry-byebug] to ~> v3.1
* Improve abstraction by creating models to handle specific responsibilities
* Add configuration to enable/disable [pry-coolline][pry-coolline]
* Add configuration to enable/disable [awesome_print][awesome_print]
* Remove [pry-rails][pry-rails] dependency
* Remove [railties][railties] dependency

## 1.0.0 (2015-02-05)
* Downgrade [pry-byebug][pry-byebug] to v1.3.3

## 0.5.5 (2015-02-03)

* Update [pry-byebug][pry-byebug] to v2.0.0
* Update [awesome_print][awesome_print] to v1.6.1

## 0.5.4 (2014-11-06)

* Remove [pry-stack_explorer][pry-stack_explorer]

## 0.5.3 (2014-11-04)

* Using [pry-byebug][pry-byebug] to use ruby >= 2.0.0.
* Switched [coolline][coolline] with [pry-coolline][pry-coolline]
* Upgrade [pry][pry] to 0.10, [pry-doc][pry-doc] to 0.6
* Rename to `JazzFingers` to allow releasing.

## 0.5.2 (2013-10-24)

* Upgrade [pry-rails][pry-rails] to the latest 0.3.2,
  [awesome_print][awesome_print] to 1.2 and loosen it's dependency, and removed
  [coderay][coderay] as an explicit dependency since [pry][pry] already includes
  it.

## 0.5.1 (2013-06-28)

* Upgrade [pry-rails][pry-rails] to the latest 0.3.1, [pry-doc][pry-doc] 0.4.6,
  [coolline][coolline] 0.4.2.


## 0.5.0 (2013-03-13)

* Rails 4, Ruby 2.0.0 compatibility.
* Upgrade [pry][pry] to the latest 0.9.12,
  [pry-stack_explorer][pry-stack_explorer] 0.4.9, [pry-remote][pry-remote]
  0.1.7, [pry-debugger][pry-debugger] 0.2.2, [hirb][hirb] 0.7.1,
  [coderay][coderay] 1.0.9.


## 0.4.0 (2012-12-27)

* Add [pry-rails][pry-rails] 0.2.2 for maintained console hooks and new
  `show-routes`, `show-models`, and `show-middleware` commands.
* Add `JazzHands.colored_prompt` and `JazzHands.prompt_separator` options.
  Detect readline library to turn off incompatible colored prompt or Unicode
  prompt separator where appropriate. Fixes #1 and #2.
* Upgrade [pry][pry] to the latest 0.9.10, [pry-doc][pry-doc] 0.4.4,
  [pry-stack_explorer][pry-stack_explorer] 0.4.7, [pry-remote][pry-remote]
  0.1.6, [pry-debugger][pry-debugger] 0.2.1, [hirb][hirb] 0.7.0,
  [Coolline][coolline] 0.4.0, [coderay][coderay] 1.0.8,
  [awesome_print][awesome_print] 1.1.0. Fixes #4.

## 0.3.1 (2012-06-11)

* Upgrade [pry-debugger][pry-debugger] to 0.2.0.

## 0.3.0 (2012-06-07)

* Replace [pry-nav][pry-nav] with [pry-debugger][pry-debugger] for improved
  performance and no segfaults. `JazzHands.enable_pry_nav` removed.
* Upgrade [pry][pry] to the latest 0.9.9, [pry-doc][pry-doc] 0.4.2,
  [pry-git][pry-git] 0.2.3, [pry-stack_explorer][pry-stack_explorer] 0.4.2,
  [pry-remote][pry-remote] 0.1.4, [coderay][coderay] 1.0.6.

## 0.2.0 (2012-03-19)

* Add [pry-stack_explorer][pry-stack_explorer] 0.4.1.
* Upgrade [pry-remote][pry-remote] to 0.1.1 and [pry-nav][pry-nav] to 0.2.0.
* Upgrade recommended gem minor versions: [pry][pry] 0.9.8.4, [pry-doc][pry-doc]
  0.4.1, [hirb][hirb] 0.6.2, and [coderay][coderay] 1.0.5.

## 0.1.2 (2012-01-23)

* Improved Rails 3.2 compatibility. Console methods like `app`, `new_session`,
  `reload!`, `helper`, and `controller` work as expected.

## 0.1.1 (2012-01-20)

* Rails 3.2 compatibility

## 0.1.0 (2012-01-04)

* For performance, enable [pry-nav][pry-nav] only on MRI 1.9.3 by default. To
  use on MRI 1.9.2, add `JazzHands.enable_pry_nav` to a Rails initializer.
* Due to buggy behavior, syntax highlighting as you type via
  [Coolline][coolline] and [Coderay][coderay] is disabled by default. Enable
  with `JazzHands.enable_syntax_highlighting_as_you_type` in a Rails
  initializer. MRI 1.9.3 only.
* Fix [Hirb][hirb] support.
* Upgrade [awesome_print][awesome_print] to 1.0.2.

## 0.0.6 (2011-12-03)

* Add line numbers to the prompt for easy reference when using `_in_` and
  `_out`.
* Upgrade [pry-nav][pry-nav] to 0.0.4.


## 0.0.5 (2011-12-01)

* Add [Hirb][hirb] support. Enable with `Hirb.enable` in the console.
* Upgrade [pry-nav][pry-nav] to 0.0.3.


## 0.0.4 (2011-11-30)

* Add explicit requires for pry plugin gems.


## 0.0.3 (2011-11-30)

* Add [pry-nav][pry-nav].
* Upgrade [awesome_print][awesome_print] to 1.0.1.


## 0.0.2 (2011-11-25)

* Add [pry-doc][pry-doc].


## 0.0.1 (2011-11-25)

* First release. Combine [pry][pry], [awesome_print][awesome_print],
  [coolline][coolline] + [coderay][coderay], [pry-remote][pry-remote],
  [pry-git][pry-git]. Bit of glue to replace IRB with pry in Rails console,
  pretty colors.


[pry]:                http://pry.github.com
[awesome_print]:      https://github.com/michaeldv/awesome_print
[amazing_print]:      https://github.com/amazing-print/amazing_print
[pry-doc]:            https://github.com/pry/pry-doc
[pry-git]:            https://github.com/pry/pry-git
[pry-nav]:            https://github.com/nixme/pry-nav
[pry-remote]:         https://github.com/Mon-Ouie/pry-remote
[coolline]:           https://github.com/Mon-Ouie/coolline
[pry-coolline]:        https://github.com/pry/pry-coolline
[coderay]:            https://github.com/rubychan/coderay
[hirb]:               https://github.com/cldwalker/hirb
[pry-stack_explorer]: https://github.com/pry/pry-stack_explorer
[pry-debugger]:       https://github.com/nixme/pry-debugger
[pry-rails]:          https://github.com/rweng/pry-rails
[pry-byebug]:         https://github.com/deivid-rodriguez/pry-byebug
[railties]:           https://github.com/rails/rails


================================================
FILE: CONTRIBUTING.md
================================================
## Getting Involved

New contributors are always welcome, when it doubt please ask questions. We strive to be an open and welcoming community. Please be nice to one another.

### Coding

* Pick a task:
  * Offer feedback on open [pull requests](https://github.com/plribeiro3000/jazz_fingers/pulls).
  * Review open [issues](https://github.com/plribeiro3000/jazz_fingers/issues) for things to help on.
  * [Create an issue](https://github.com/plribeiro3000/jazz_fingers/issues/new) to start a discussion on additions or features.
* Fork the project, add your changes and tests to cover them in a topic branch.
* Commit your changes and rebase against `plribeiro3000/jazz_fingers` to ensure everything is up to date.
* [Submit a pull request](https://github.com/plribeiro3000/jazz_fingers/compare/)

### Non-Coding

* Offer feedback on open [issues](https://github.com/plribeiro3000/jazz_fingers/issues).
* Organize or volunteer at events.

================================================
FILE: CONTRIBUTORS.md
================================================
# Original Author
* Gopal Patel <nixme@stillhope.com>

# Contributors
* Andrew Volozhanin <linuxheadrus@gmail.com>
* Anthony Sellitti <anthony.github@asellitt.com>
* Casey Lang <hello@casey-lang.com>
* Fernando Paredes <nano@fdp.io>
* Micah Gates <github@mgates.com>
* Paulo Henrique Lopes Ribeiro <plribeiro3000@gmail.com>


================================================
FILE: Gemfile
================================================
source 'https://rubygems.org'

gemspec


================================================
FILE: LICENSE.md
================================================
The MIT License (MIT)

Copyright (c) 2014-2015 [CONTRIBUTORS.md](https://github.com/plribeiro3000/jazz_fingers/blob/master/CONTRIBUTORS.md)

Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

================================================
FILE: README.md
================================================
Jazz Fingers
============

This repo is a fork, with updates and bug fixes based on [`jazz_hands`](https://github.com/nixme/jazz_hands).

Spending hours in the pry console? Spruce it up and show off those
hard-working fingers!

**jazz_fingers** is an opinionated set of console-related gems and a bit of glue:

* [**Pry**][pry] for a powerful shell alternative to IRB.
* [**Amazing Print**][amazing_print] for stylish pretty print.
  console.
* [**Pry Coolline**][pry-coolline] for syntax highlighting as you type.

## Notes on Update to `5.0.0`
* [**Hirb**][hirb] was removed since it is not actively being maintained
* [**Pry-Doc**][pry-doc] was removed since it adds a lot of memory footprint which makes `JazzFingers` too heavy to use in production.
Add it to your `Gemfile` if you want it back
* `jazz_fingers/setup` is not needed since the setup is done automatically after the configuration block ends
* Call `JazzFingers.setup!` if you are using the default configurations

## Usage

Ruby 2.0.0+. Add to your project Gemfile:

```ruby
group :development, :test do
  gem 'jazz_fingers'
end
```

That's it. Run `pry` as usual.

Ruby compiled against a proper readline library, ideally GNU readline, is
recommended. Alternatively, [`gem install rb-readline`][rb-readline] for an
acceptible backup. Using ruby compiled against a `libedit` wrapper (primarily OS
X) will work but is not recommended.


## Options

Some configurations can be overwritten:

```ruby
if defined?(JazzFingers)
  JazzFingers.configure do |config|
    config.colored_prompt = false
    config.amazing_print = false
    config.coolline = false
    config.application_name = MyAwesomeProject
  end
end
```

### `colored_prompt`

Color the console prompt? Defaults to `true` when the current ruby is compiled
against GNU readline or `rb-readline`, which don't have issues counting
characters in colored prompts. `false` for libedit.

Note: `Pry.color = false` trumps this setting and disables all console coloring.

### `prompt_separator`

Separator string between the application name and line input. Defaults to `»`
for GNU readline or libedit. Defaults to `>` for `rb-readline` which fails on
mixed encodings.


[pry]:                http://pry.github.com
[amazing_print]:      https://github.com/amazing-print/amazing_print
[hirb]:               https://github.com/cldwalker/hirb
[pry-doc]:            https://github.com/pry/pry-doc
[pry-coolline]:       https://github.com/pry/pry-coolline
[coderay]:            https://github.com/rubychan/coderay
[rb-readline]:        https://github.com/luislavena/rb-readline
[pullrequests]:       https://github.com/plribeiro3000/jazz_fingers/pulls
[issues]:             https://github.com/plribeiro3000/jazz_fingers/issues
[changelog]:          https://github.com/plribeiro3000/jazz_fingers/blob/master/CHANGELOG.md


================================================
FILE: Rakefile
================================================
#!/usr/bin/env rake

require 'bundler/gem_tasks'


================================================
FILE: jazz_fingers.gemspec
================================================
require File.expand_path('lib/jazz_fingers/version', __dir__)

Gem::Specification.new do |gem|
  gem.name          = 'jazz_fingers'
  gem.version       = JazzFingers::VERSION
  gem.author        = 'Paulo Henrique Lopes Ribeiro'
  gem.email         = 'plribeiro3000@gmail.com'
  gem.license       = 'MIT'
  gem.homepage      = 'https://github.com/plribeiro3000/jazz_fingers'
  gem.summary       = 'Exercise those fingers. Pry-based enhancements for the default Ruby console.'
  description =
    'Spending hours in the ruby console? Spruce it up and show off those hard-working hands! jazz_fingers'\
    'replaces IRB with Pry, improves output through amazing_print, and has some other goodies up its sleeves.'
  gem.description   = description

  gem.executables   = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
  gem.files         = `git ls-files`.split("\n")
  gem.test_files    = `git ls-files -- {test,spec,features}/*`.split("\n")
  gem.require_paths = ['lib']

  # Dependencies
  gem.required_ruby_version = '>= 2.0'
  gem.add_runtime_dependency 'amazing_print', '~> 1.8'
  gem.add_runtime_dependency 'pry', '~> 0.15'
  gem.add_runtime_dependency 'pry-coolline', '~> 0.2'

  gem.add_development_dependency 'rubocop'
end


================================================
FILE: lib/jazz_fingers/amazing_print.rb
================================================
module JazzFingers
  AMAZING_PRINT = {
    indent: 2,
    sort_keys: true,
    color: {
      args: :greenish,
      array: :whiteish,
      bigdecimal: :blue,
      class: :yellow,
      date: :greenish,
      falseclass: :red,
      fixnum: :blue,
      float: :blue,
      hash: :whiteish,
      keyword: :cyan,
      method: :purpleish,
      nilclass: :red,
      string: :yellowish,
      struct: :whiteish,
      symbol: :cyanish,
      time: :greenish,
      trueclass: :green,
      variable: :cyanish
    }
  }
end


================================================
FILE: lib/jazz_fingers/coderay/escaped_colors.rb
================================================
module JazzFingers
  module CodeRay
    ESCAPED_COLORS = {
      attribute_name: "\e[33m",
      attribute_value: "\e[31m",
      binary: "\e[1;35m",
      char: {
        self: "\e[36m",
        delimiter: "\e[34m"
      },
      class: "\e[1;35m",
      class_variable: "\e[36m",
      color: "\e[32m",
      comment: "\e[37m",
      complex: "\e[34m",
      constant: "\e[34m\e[4m",
      decoration: "\e[35m",
      definition: "\e[1;32m",
      directive: "\e[32m\e[4m",
      doc: "\e[46m",
      doctype: "\e[1;30m",
      doc_string: "\e[31m\e[4m",
      entity: "\e[33m",
      error: "\e[1;33m\e[41m",
      exception: "\e[1;31m",
      float: "\e[1;35m",
      function: "\e[1;34m",
      global_variable: "\e[42m",
      hex: "\e[1;36m",
      include: "\e[33m",
      integer: "\e[1;34m",
      key: "\e[35m",
      label: "\e[1;15m",
      local_variable: "\e[33m",
      octal: "\e[1;35m",
      operator_name: "\e[1;29m",
      predefined_constant: "\e[1;36m",
      predefined_type: "\e[1;30m",
      predefined: "\e[4m\e[1;34m",
      preprocessor: "\e[36m",
      pseudo_class: "\e[34m",
      regexp: {
        self: "\e[31m",
        content: "\e[31m",
        delimiter: "\e[1;29m",
        modifier: "\e[35m",
        function: "\e[1;29m"
      },
      reserved: "\e[1;31m",
      shell: {
        self: "\e[42m",
        content: "\e[1;29m",
        delimiter: "\e[37m",
      },
      string: {
        self: "\e[36m",
        modifier: "\e[1;32m",
        escape: "\e[1;36m",
        delimiter: "\e[1;32m",
      },
      symbol: "\e[1;31m",
      tag: "\e[34m",
      type: "\e[1;34m",
      value: "\e[36m",
      variable: "\e[34m",

      insert: "\e[42m",
      delete: "\e[41m",
      change: "\e[44m",
      head: "\e[45m"
    }.freeze
  end
end



================================================
FILE: lib/jazz_fingers/coderay/unescaped_colors.rb
================================================
module JazzFingers
  module CodeRay
    UNESCAPED_COLORS = {
      attribute_name: '33',
      attribute_value: '31',
      binary: '1;35',
      char: {
        self: '36',
        delimiter: '34'
      },
      class: '1;35',
      class_variable: '36',
      color: '32',
      comment: '37',
      complex: '34',
      constant: ['34', '4'],
      decoration: '35',
      definition: '1;32',
      directive: ['32', '4'],
      doc: '46',
      doctype: '1;30',
      doc_string: ['31', '4'],
      entity: '33',
      error: ['1;33', '41'],
      exception: '1;31',
      float: '1;35',
      function: '1;34',
      global_variable: '42',
      hex: '1;36',
      include: '33',
      integer: '1;34',
      key: '35',
      label: '1;15',
      local_variable: '33',
      octal: '1;35',
      operator_name: '1;29',
      predefined_constant: '1;36',
      predefined_type: '1;30',
      predefined: ['4', '1;34'],
      preprocessor: '36',
      pseudo_class: '34',
      regexp: {
        self: '31',
        content: '31',
        delimiter: '1;29',
        modifier: '35',
        function: '1;29'
      },
      reserved: '1;31',
      shell: {
        self: '42',
        content: '1;29',
        delimiter: '37',
      },
      string: {
        self: '36',
        modifier: '1;32',
        escape: '1;36',
        delimiter: '1;32',
      },
      symbol: '1;31',
      tag: '34',
      type: '1;34',
      value: '36',
      variable: '34',

      insert: '42',
      delete: '41',
      change: '44',
      head: '45'
    }.freeze
  end
end



================================================
FILE: lib/jazz_fingers/coderay.rb
================================================
module JazzFingers
  module CodeRay
    autoload :ESCAPED_COLORS, 'jazz_fingers/coderay/escaped_colors'
    autoload :UNESCAPED_COLORS, 'jazz_fingers/coderay/unescaped_colors'

    def self.setup!
      ::CodeRay.scan("example", :ruby).term

      if ::CodeRay::VERSION >= '1.1.0'
        ESCAPED_COLORS.each do |key, value|
          ::CodeRay::Encoders::Terminal::TOKEN_COLORS[key] = value
        end
      else
        UNESCAPED_COLORS.each do |key, value|
          ::CodeRay::Encoders::Terminal::TOKEN_COLORS[key] = value
        end
      end
    end
  end
end


================================================
FILE: lib/jazz_fingers/commands/caller_method.rb
================================================
module JazzFingers
  module Commands
    CALLER_METHOD = Pry::CommandSet.new do
      command "caller_method" do |depth|
        depth = depth.to_i || 1
        if /^(.+?):(\d+)(?::in `(.*)')?/ =~ caller(depth+1).first
          file   = Regexp.last_match[1]
          line   = Regexp.last_match[2].to_i
          method = Regexp.last_match[3]
          output.puts [file, line, method]
        end
      end
    end
  end
end



================================================
FILE: lib/jazz_fingers/commands/copy.rb
================================================
module JazzFingers
  module Commands
    COPY = Pry::CommandSet.new do
      command "copy", "Copy argument to the clip-board" do |str|
        IO.popen('pbcopy', 'w') { |f| f << str.to_s }
      end
    end
  end
end



================================================
FILE: lib/jazz_fingers/commands/sql.rb
================================================
module JazzFingers
  module Commands
    SQL = Pry::CommandSet.new do
      command "sql", "Send sql over AR." do |query|
        if defined?(Rails)
          pp ActiveRecord::Base.connection.select_all(query)
        else
          pp "Rails not defined"
        end
      end
    end
  end
end



================================================
FILE: lib/jazz_fingers/commands.rb
================================================
module JazzFingers
  module Commands
    autoload :CALLER_METHOD, 'jazz_fingers/commands/caller_method'
    autoload :COPY, 'jazz_fingers/commands/copy'
    autoload :SQL, 'jazz_fingers/commands/sql'
  end
end


================================================
FILE: lib/jazz_fingers/configuration.rb
================================================
module JazzFingers
  class Configuration
    attr_writer :colored_prompt, :prompt_separator, :coolline, :amazing_print,
                :application_name

    # Color the prompt?
    #
    # A different setting than Pry.color since some may like colored output, but a
    # plain prompt.
    #
    # Default: true, delegating to Pry.color.
    def colored_prompt
      if @colored_prompt.nil?
        Pry.color
      else
        @colored_prompt
      end
    end

    # Separator between application name and input in the prompt.
    #
    # Default: right angle quote (»).
    def prompt_separator
      @prompt_separator ||= "\u00BB"
    end

    def coolline?
      return false if @coolline.nil?

      @coolline
    end

    def amazing_print?
      return true if @amazing_print.nil?

      @amazing_print
    end

    def application_name
      return underscore(@application_name) unless @application_name.nil?

      if defined?(Rails)
        application_class = Rails.application.class

        if application_class.respond_to?(:module_parent_name)
          return application_class.module_parent_name.underscore
        else
          return application_class.parent_name.underscore
        end
      end

      "jazz_fingers"
    end

    private

    def underscore(camel_cased_word)
      camel_cased_word.to_s.gsub(/::/, '/')
                      .gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2')
                      .gsub(/([a-z\d])([A-Z])/, '\1_\2')
                      .tr('-', '_')
                      .downcase
    end
  end
end


================================================
FILE: lib/jazz_fingers/input.rb
================================================
require 'pry-coolline'
require 'coderay'

module JazzFingers
  class Input
    class << self
      def config
        {
          cool: cool_input
        }
      end

      def cool_input
        Coolline.new do |c|
          c.transform_proc = proc do
            CodeRay.scan(c.line, :ruby).term
          end

          c.completion_proc = proc do
            word = c.completed_word
            Object.constants.map(&:to_s).select { |w| w.start_with?(word) }
          end
        end
      end
    end
  end
end


================================================
FILE: lib/jazz_fingers/print.rb
================================================
require 'amazing_print'

module JazzFingers
  class Print
    class << self
      def config
        lambda do |_output, value, pry_object|
          pretty = value.ai
          pry_object.pager.page("=> #{pretty}\n")
        end
      end
    end
  end
end


================================================
FILE: lib/jazz_fingers/prompt/pry_version_012_and_prior.rb
================================================
# frozen_string_literal: true

module JazzFingers
  class Prompt
    # For Pry < 0.13.
    module PryVersion012AndPrior
      def config
        [main_prompt, wait_prompt]
      end

      def main_prompt
        lambda do |context, _nesting, pry|
          template(Pry.view_clip(context), pry, main_separator)
        end
      end

      def wait_prompt
        lambda do |context, _nesting, pry|
          template(Pry.view_clip(context), pry, wait_separator)
        end
      end
    end
  end
end


================================================
FILE: lib/jazz_fingers/prompt/pry_version_013_and_later.rb
================================================
# frozen_string_literal: true

module JazzFingers
  class Prompt
    # For Pry >= 0.13.
    module PryVersion013AndLater
      # Add the JazzFingers prompt to the Pry::Prompt hash to enable changing it
      # with `change-prompt`.
      #
      # Return the Pry::Prompt object.
      def config
        return Pry::Prompt[:jazz_fingers] if Pry::Prompt[:jazz_fingers]

        Pry::Prompt.add(
          :jazz_fingers,
          "A spruced-up prompt provided by jazz_fingers.",
          [main_separator, wait_separator]
        ) do |context, _nesting, pry, separator|
          template(Pry.view_clip(context), pry, separator)
        end

        Pry::Prompt[:jazz_fingers]
      end
    end
  end
end


================================================
FILE: lib/jazz_fingers/prompt.rb
================================================
# frozen_string_literal: true

module JazzFingers
  class Prompt
    OBJECT_INSTANCE = /#<(.+)>/

    autoload :PryVersion013AndLater, 'jazz_fingers/prompt/pry_version_013_and_later'
    autoload :PryVersion012AndPrior, 'jazz_fingers/prompt/pry_version_012_and_prior'

    if Pry::VERSION >= "0.13.0"
      include PryVersion013AndLater
    else
      include PryVersion012AndPrior
    end

    def initialize(options = {})
      @colored = options.fetch(:colored)
      @separator = options.fetch(:separator)
      @application_name = options.fetch(:application_name)
    end

    def colored?
      @colored
    end

    def red_text(text)
      return text.to_s unless colored?

      "\001\e[0;31m\002#{text}\001\e[0m\002"
    end

    def blue_text(text)
      return text.to_s unless colored?

      "\001\e[0;34m\002#{text}\001\e[0m\002"
    end

    def bold_text(text)
      return text.to_s unless colored?

      "\001\e[1m\002#{text}\001\e[0m\002"
    end

    def main_separator
      red_text(@separator)
    end

    def wait_separator
      "*"
    end

    # Return the current Pry context
    #
    # When the Pry context is `"main"` or `"nil"`, use the application name from
    # the JazzFingers config. Examples: "(my_rails_app_name)", "(jazz_fingers)".
    #
    # When in the context of an object instance, use the abbreviated object
    # path. Example: "(#<Pry::Prompt>)", "(#<RSpec::...::ClassName>)"
    #
    # Fall back to the raw context provided by Pry.view_clip.
    # Example: "(Pry::Prompt)"
    def context(module_name = "main")
      name =
        case module_name
        when "main", "nil"
          @application_name
        when OBJECT_INSTANCE
          abbreviated_context(module_name)
        else
          module_name
        end

      blue_text("(#{name})")
    end

    def line_number(pry)
      if pry.respond_to? :input_ring
        bold_text(pry.input_ring.size)
      else
        bold_text(pry.input_array.size)
      end
    end

    # Abbreviate the object path in the given `object_label` string so the
    # prompt doesn't overflow. Display only the root and leaf namespaces.
    #
    # Examples:
    #   In:  #<Class1::Class2::Class3::Class4::Class5>
    #   Out: #<Class1::...::Class5>
    #
    #   In:  #<Class1::Class2>
    #   Out: #<Class1::Class2>
    #
    #   In:  #<NoPathJustASingleLongClassName>
    #   Out: #<NoPathJustASingleLongClassName>
    def abbreviated_context(object_label)
      object_path = object_label[OBJECT_INSTANCE, 1]
      object_path_components = object_path.split("::")
      return object_label if object_path_components.length <= 2

      root, *_, leaf = object_path_components
      "#<#{root}::...::#{leaf}>"
    end

    def template(module_name, pry, separator)
      format(
        "%<ruby>s %<context>s[%<line>s] %<separator>s ",
        ruby: RUBY_VERSION,
        context: context(module_name),
        line: line_number(pry),
        separator: separator
      )
    end
  end
end


================================================
FILE: lib/jazz_fingers/version.rb
================================================
module JazzFingers
  VERSION = '7.1.0'.freeze
end


================================================
FILE: lib/jazz_fingers.rb
================================================
ENV['HOME'] ||= '/dev/null'

require 'pry'
require 'forwardable'

# Pry's SimplePager hardcodes the Readline constant. Ruby 4.0 removed
# the readline stdlib, so we mirror Pry's own load_readline fallback
# and shim the constant when only Reline is available.
begin
  require 'readline'
rescue LoadError
  require 'reline'
  Readline = Reline unless defined?(Readline)
end

module JazzFingers
  autoload :AMAZING_PRINT, 'jazz_fingers/amazing_print'
  autoload :CodeRay, 'jazz_fingers/coderay'
  autoload :Commands, 'jazz_fingers/commands'
  autoload :Configuration, 'jazz_fingers/configuration'
  autoload :Input, 'jazz_fingers/input'
  autoload :Print, 'jazz_fingers/print'
  autoload :Prompt, 'jazz_fingers/prompt'
  autoload :VERSION, 'jazz_fingers/version'

  class << self
    extend Forwardable

    def_delegators :config, :amazing_print?, :coolline?

    def print
      @print ||= Print.config
    end

    def prompt
      @prompt ||=
        Prompt.new(
          colored: config.colored_prompt,
          separator: config.prompt_separator,
          application_name: config.application_name
        )
      @prompt.config
    end

    def input
      @input ||= Input.config
    end

    def configure
      yield @config ||= Configuration.new
      setup!
    end

    def config
      @config ||= Configuration.new
    end

    def setup!
      Pry.prompt = prompt
      Pry.input = input if JazzFingers.coolline?
      Pry.config.should_load_plugins = false
      Pry.editor = 'vi'
      Pry.config.ls.separator = "\n"
      Pry.config.ls.heading_color = :magenta
      Pry.config.ls.public_method_color = :green
      Pry.config.ls.protected_method_color = :yellow
      Pry.config.ls.private_method_color = :bright_black

      JazzFingers::Commands.constants(false).each do |constant|
        command = JazzFingers::Commands.const_get(constant)
        Pry.config.commands.import(command)
      end

      if JazzFingers.amazing_print?
        require 'amazing_print'

        AmazingPrint.defaults = JazzFingers::AMAZING_PRINT
        Pry.print = print
      end

      JazzFingers::CodeRay.setup!

      true
    end
  end
end
Download .txt
gitextract_v7gj4cha/

├── .gitignore
├── .rubocop.yml
├── .ruby-gemset
├── .ruby-version
├── CHANGELOG.md
├── CONTRIBUTING.md
├── CONTRIBUTORS.md
├── Gemfile
├── LICENSE.md
├── README.md
├── Rakefile
├── jazz_fingers.gemspec
└── lib/
    ├── jazz_fingers/
    │   ├── amazing_print.rb
    │   ├── coderay/
    │   │   ├── escaped_colors.rb
    │   │   └── unescaped_colors.rb
    │   ├── coderay.rb
    │   ├── commands/
    │   │   ├── caller_method.rb
    │   │   ├── copy.rb
    │   │   └── sql.rb
    │   ├── commands.rb
    │   ├── configuration.rb
    │   ├── input.rb
    │   ├── print.rb
    │   ├── prompt/
    │   │   ├── pry_version_012_and_prior.rb
    │   │   └── pry_version_013_and_later.rb
    │   ├── prompt.rb
    │   └── version.rb
    └── jazz_fingers.rb
Download .txt
SYMBOL INDEX (62 symbols across 16 files)

FILE: lib/jazz_fingers.rb
  type JazzFingers (line 16) | module JazzFingers
    function print (line 31) | def print
    function prompt (line 35) | def prompt
    function input (line 45) | def input
    function configure (line 49) | def configure
    function config (line 54) | def config
    function setup! (line 58) | def setup!

FILE: lib/jazz_fingers/amazing_print.rb
  type JazzFingers (line 1) | module JazzFingers

FILE: lib/jazz_fingers/coderay.rb
  type JazzFingers (line 1) | module JazzFingers
    type CodeRay (line 2) | module CodeRay
      function setup! (line 6) | def self.setup!

FILE: lib/jazz_fingers/coderay/escaped_colors.rb
  type JazzFingers (line 1) | module JazzFingers
    type CodeRay (line 2) | module CodeRay

FILE: lib/jazz_fingers/coderay/unescaped_colors.rb
  type JazzFingers (line 1) | module JazzFingers
    type CodeRay (line 2) | module CodeRay

FILE: lib/jazz_fingers/commands.rb
  type JazzFingers (line 1) | module JazzFingers
    type Commands (line 2) | module Commands

FILE: lib/jazz_fingers/commands/caller_method.rb
  type JazzFingers (line 1) | module JazzFingers
    type Commands (line 2) | module Commands

FILE: lib/jazz_fingers/commands/copy.rb
  type JazzFingers (line 1) | module JazzFingers
    type Commands (line 2) | module Commands

FILE: lib/jazz_fingers/commands/sql.rb
  type JazzFingers (line 1) | module JazzFingers
    type Commands (line 2) | module Commands

FILE: lib/jazz_fingers/configuration.rb
  type JazzFingers (line 1) | module JazzFingers
    class Configuration (line 2) | class Configuration
      method colored_prompt (line 12) | def colored_prompt
      method prompt_separator (line 23) | def prompt_separator
      method coolline? (line 27) | def coolline?
      method amazing_print? (line 33) | def amazing_print?
      method application_name (line 39) | def application_name
      method underscore (line 57) | def underscore(camel_cased_word)

FILE: lib/jazz_fingers/input.rb
  type JazzFingers (line 4) | module JazzFingers
    class Input (line 5) | class Input
      method config (line 7) | def config
      method cool_input (line 13) | def cool_input

FILE: lib/jazz_fingers/print.rb
  type JazzFingers (line 3) | module JazzFingers
    class Print (line 4) | class Print
      method config (line 6) | def config

FILE: lib/jazz_fingers/prompt.rb
  type JazzFingers (line 3) | module JazzFingers
    class Prompt (line 4) | class Prompt
      method initialize (line 16) | def initialize(options = {})
      method colored? (line 22) | def colored?
      method red_text (line 26) | def red_text(text)
      method blue_text (line 32) | def blue_text(text)
      method bold_text (line 38) | def bold_text(text)
      method main_separator (line 44) | def main_separator
      method wait_separator (line 48) | def wait_separator
      method context (line 62) | def context(module_name = "main")
      method line_number (line 76) | def line_number(pry)
      method abbreviated_context (line 96) | def abbreviated_context(object_label)
      method template (line 105) | def template(module_name, pry, separator)

FILE: lib/jazz_fingers/prompt/pry_version_012_and_prior.rb
  type JazzFingers (line 3) | module JazzFingers
    class Prompt (line 4) | class Prompt
      type PryVersion012AndPrior (line 6) | module PryVersion012AndPrior
        function config (line 7) | def config
        function main_prompt (line 11) | def main_prompt
        function wait_prompt (line 17) | def wait_prompt

FILE: lib/jazz_fingers/prompt/pry_version_013_and_later.rb
  type JazzFingers (line 3) | module JazzFingers
    class Prompt (line 4) | class Prompt
      type PryVersion013AndLater (line 6) | module PryVersion013AndLater
        function config (line 11) | def config

FILE: lib/jazz_fingers/version.rb
  type JazzFingers (line 1) | module JazzFingers
Condensed preview — 28 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (31K chars).
[
  {
    "path": ".gitignore",
    "chars": 154,
    "preview": "*.gem\n*.rbc\n.bundle\n.config\n.yardoc\nGemfile.lock\nInstalledFiles\n_yardoc\ncoverage\ndoc/\nlib/bundler/man\npkg\nrdoc\nspec/repo"
  },
  {
    "path": ".rubocop.yml",
    "chars": 70,
    "preview": "Metrics/LineLength:\n  Max: 120\n\nStyle/Documentation:\n  Enabled: false\n"
  },
  {
    "path": ".ruby-gemset",
    "chars": 12,
    "preview": "jazz_fingers"
  },
  {
    "path": ".ruby-version",
    "chars": 6,
    "preview": "3.4.1\n"
  },
  {
    "path": "CHANGELOG.md",
    "chars": 7299,
    "preview": "# CHANGELOG\n\n## 7.1.0 (2026-03-25)\n\n### Fixed\n* Pager on Ruby 4.0\n\n## 7.0.0 (2026-03-24)\n* Replace `readline` with `reli"
  },
  {
    "path": "CONTRIBUTING.md",
    "chars": 937,
    "preview": "## Getting Involved\n\nNew contributors are always welcome, when it doubt please ask questions. We strive to be an open an"
  },
  {
    "path": "CONTRIBUTORS.md",
    "chars": 324,
    "preview": "# Original Author\n* Gopal Patel <nixme@stillhope.com>\n\n# Contributors\n* Andrew Volozhanin <linuxheadrus@gmail.com>\n* Ant"
  },
  {
    "path": "Gemfile",
    "chars": 39,
    "preview": "source 'https://rubygems.org'\n\ngemspec\n"
  },
  {
    "path": "LICENSE.md",
    "chars": 1163,
    "preview": "The MIT License (MIT)\n\nCopyright (c) 2014-2015 [CONTRIBUTORS.md](https://github.com/plribeiro3000/jazz_fingers/blob/mast"
  },
  {
    "path": "README.md",
    "chars": 2834,
    "preview": "Jazz Fingers\n============\n\nThis repo is a fork, with updates and bug fixes based on [`jazz_hands`](https://github.com/ni"
  },
  {
    "path": "Rakefile",
    "chars": 49,
    "preview": "#!/usr/bin/env rake\n\nrequire 'bundler/gem_tasks'\n"
  },
  {
    "path": "jazz_fingers.gemspec",
    "chars": 1246,
    "preview": "require File.expand_path('lib/jazz_fingers/version', __dir__)\n\nGem::Specification.new do |gem|\n  gem.name          = 'ja"
  },
  {
    "path": "lib/jazz_fingers/amazing_print.rb",
    "chars": 525,
    "preview": "module JazzFingers\n  AMAZING_PRINT = {\n    indent: 2,\n    sort_keys: true,\n    color: {\n      args: :greenish,\n      arr"
  },
  {
    "path": "lib/jazz_fingers/coderay/escaped_colors.rb",
    "chars": 1781,
    "preview": "module JazzFingers\n  module CodeRay\n    ESCAPED_COLORS = {\n      attribute_name: \"\\e[33m\",\n      attribute_value: \"\\e[31"
  },
  {
    "path": "lib/jazz_fingers/coderay/unescaped_colors.rb",
    "chars": 1561,
    "preview": "module JazzFingers\n  module CodeRay\n    UNESCAPED_COLORS = {\n      attribute_name: '33',\n      attribute_value: '31',\n  "
  },
  {
    "path": "lib/jazz_fingers/coderay.rb",
    "chars": 568,
    "preview": "module JazzFingers\n  module CodeRay\n    autoload :ESCAPED_COLORS, 'jazz_fingers/coderay/escaped_colors'\n    autoload :UN"
  },
  {
    "path": "lib/jazz_fingers/commands/caller_method.rb",
    "chars": 428,
    "preview": "module JazzFingers\n  module Commands\n    CALLER_METHOD = Pry::CommandSet.new do\n      command \"caller_method\" do |depth|"
  },
  {
    "path": "lib/jazz_fingers/commands/copy.rb",
    "chars": 219,
    "preview": "module JazzFingers\n  module Commands\n    COPY = Pry::CommandSet.new do\n      command \"copy\", \"Copy argument to the clip-"
  },
  {
    "path": "lib/jazz_fingers/commands/sql.rb",
    "chars": 297,
    "preview": "module JazzFingers\n  module Commands\n    SQL = Pry::CommandSet.new do\n      command \"sql\", \"Send sql over AR.\" do |query"
  },
  {
    "path": "lib/jazz_fingers/commands.rb",
    "chars": 210,
    "preview": "module JazzFingers\n  module Commands\n    autoload :CALLER_METHOD, 'jazz_fingers/commands/caller_method'\n    autoload :CO"
  },
  {
    "path": "lib/jazz_fingers/configuration.rb",
    "chars": 1548,
    "preview": "module JazzFingers\n  class Configuration\n    attr_writer :colored_prompt, :prompt_separator, :coolline, :amazing_print,\n"
  },
  {
    "path": "lib/jazz_fingers/input.rb",
    "chars": 518,
    "preview": "require 'pry-coolline'\nrequire 'coderay'\n\nmodule JazzFingers\n  class Input\n    class << self\n      def config\n        {\n"
  },
  {
    "path": "lib/jazz_fingers/print.rb",
    "chars": 258,
    "preview": "require 'amazing_print'\n\nmodule JazzFingers\n  class Print\n    class << self\n      def config\n        lambda do |_output,"
  },
  {
    "path": "lib/jazz_fingers/prompt/pry_version_012_and_prior.rb",
    "chars": 504,
    "preview": "# frozen_string_literal: true\n\nmodule JazzFingers\n  class Prompt\n    # For Pry < 0.13.\n    module PryVersion012AndPrior\n"
  },
  {
    "path": "lib/jazz_fingers/prompt/pry_version_013_and_later.rb",
    "chars": 705,
    "preview": "# frozen_string_literal: true\n\nmodule JazzFingers\n  class Prompt\n    # For Pry >= 0.13.\n    module PryVersion013AndLater"
  },
  {
    "path": "lib/jazz_fingers/prompt.rb",
    "chars": 2990,
    "preview": "# frozen_string_literal: true\n\nmodule JazzFingers\n  class Prompt\n    OBJECT_INSTANCE = /#<(.+)>/\n\n    autoload :PryVersi"
  },
  {
    "path": "lib/jazz_fingers/version.rb",
    "chars": 50,
    "preview": "module JazzFingers\n  VERSION = '7.1.0'.freeze\nend\n"
  },
  {
    "path": "lib/jazz_fingers.rb",
    "chars": 2149,
    "preview": "ENV['HOME'] ||= '/dev/null'\n\nrequire 'pry'\nrequire 'forwardable'\n\n# Pry's SimplePager hardcodes the Readline constant. R"
  }
]

About this extraction

This page contains the full source code of the plribeiro3000/jazz_fingers GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 28 files (27.8 KB), approximately 9.3k tokens, and a symbol index with 62 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!