jazz_fingers 4.0.1 → 5.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 8f7803378737e2a5abab5af11528a62698006071
4
- data.tar.gz: aab9be62d8ca3739ba4a5112843bd82e1bc4b227
2
+ SHA256:
3
+ metadata.gz: bf15e3fff4144b2f8497097e0ad14e631091f2baf18faab756d0a74764539884
4
+ data.tar.gz: 75d7edba78a71f7b13eb5222de79719e0b7aed023d344230fa51c9efe09e39f6
5
5
  SHA512:
6
- metadata.gz: f1df8c48619f2585ae452121fd087098faad067d201785f3459f52114460069291fb53d813f6d4b4432805c2441314f700584d2237be4a19ff602bbdc0dccd09
7
- data.tar.gz: 48c3fadbda08c48affaeb829e0076853ba45bfdac760665d286c8d62c48d964d2719eecceebc90d8e98132a4afa7cb9978bbfcb81d236ff407de72a11b41b6c3
6
+ metadata.gz: 71c22ebac22ce8c1d69a765a7680a3ed7cdb9429ea9e7f47c3291f2746879b5789400d71e09f808fe2d6ae5240f71367050593acd0a8ec48ce2b80a71b9767dd
7
+ data.tar.gz: 949cb360d56b3ef4b4c9cfbeecd67fb92fc1c5a9d7bee604be673cc1ffa03b5ce8b295c4131f834f99d68e2bbd6f3f557283a2b2f9c303ef8c8d43171f8e8366
@@ -0,0 +1 @@
1
+ .rubocop.yml
@@ -1,17 +1,5 @@
1
1
  Metrics/LineLength:
2
- Enabled: false
3
-
4
- Style/EachWithObject:
5
- Enabled: false
2
+ Max: 120
6
3
 
7
- Style/Encoding:
8
- EnforcedStyle: when_needed
9
-
10
- Style/FormatString:
4
+ Style/Documentation:
11
5
  Enabled: false
12
-
13
- Style/SignalException:
14
- EnforcedStyle: only_raise
15
-
16
- Style/StringLiterals:
17
- EnforcedStyle: double_quotes
@@ -1 +1 @@
1
- 2.2.0
1
+ 2.6.6
@@ -1,5 +1,17 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## 5.1.0.rc1 (2020-04-25)
4
+ * Change deprecated method on pry > 0.13.0
5
+ * Improve naming context
6
+
7
+ ## 5.0.1 (2019-06-02)
8
+ * Remove documentation for removed dependency
9
+ * Use non deprecated method of `pry` if existent
10
+
11
+ ## 5.0.0 (2018-05-02)
12
+ * Remove [pry-doc][pry-doc] dependency to reduce memory footprint
13
+ * Remove [hirb][hirb] dependency since its not being actively maintained
14
+
3
15
  ## 4.0.1 (2016-05-26)
4
16
  * Remove requires for `pry-remote`
5
17
 
data/Gemfile CHANGED
@@ -1,3 +1,3 @@
1
- source "https://rubygems.org"
1
+ source 'https://rubygems.org'
2
2
 
3
3
  gemspec
data/README.md CHANGED
@@ -10,11 +10,15 @@ hard-working fingers!
10
10
 
11
11
  * [**Pry**][pry] for a powerful shell alternative to IRB.
12
12
  * [**Awesome Print**][awesome_print] for stylish pretty print.
13
- * [**Hirb**][hirb] for tabular collection output.
14
- * [**Pry Doc**][pry-doc] to browse Ruby source, including C, directly from the
15
13
  console.
16
14
  * [**Pry Coolline**][pry-coolline] for syntax highlighting as you type.
17
15
 
16
+ ## Notes on Update to `5.0.0`
17
+ * [**Hirb**][hirb] was removed since it is not actively being maintained
18
+ * [**Pry-Doc**][pry-doc] was removed since it adds a lot of memory footprint which makes `JazzFingers` too heavy to use in production.
19
+ Add it to your `Gemfile` if you want it back
20
+ * `jazz_fingers/setup` is not needed since the setup is done automatically after the configuration block ends
21
+ * Call `JazzFingers.setup!` if you are using the default configurations
18
22
 
19
23
  ## Usage
20
24
 
@@ -28,8 +32,6 @@ end
28
32
 
29
33
  That's it. Run `pry` as usual.
30
34
 
31
- [Hirb][hirb] isn't enabled by default. To use, run `Hirb.enable` in the console.
32
-
33
35
  Ruby compiled against a proper readline library, ideally GNU readline, is
34
36
  recommended. Alternatively, [`gem install rb-readline`][rb-readline] for an
35
37
  acceptible backup. Using ruby compiled against a `libedit` wrapper (primarily OS
@@ -38,8 +40,7 @@ X) will work but is not recommended.
38
40
 
39
41
  ## Options
40
42
 
41
- Change the following options by creating an initializer
42
- Example `config/initializers/jazz_fingers.rb`:
43
+ Some configurations can be overwritten:
43
44
 
44
45
  ```ruby
45
46
  if defined?(JazzFingers)
@@ -49,8 +50,6 @@ if defined?(JazzFingers)
49
50
  config.coolline = false
50
51
  config.application_name = MyAwesomeProject
51
52
  end
52
-
53
- require 'jazz_fingers/setup'
54
53
  end
55
54
  ```
56
55
 
data/Rakefile CHANGED
@@ -1,3 +1,3 @@
1
1
  #!/usr/bin/env rake
2
2
 
3
- require "bundler/gem_tasks"
3
+ require 'bundler/gem_tasks'
@@ -1,30 +1,29 @@
1
- # -*- encoding: utf-8 -*-
2
-
3
- require File.expand_path("../lib/jazz_fingers/version", __FILE__)
1
+ require File.expand_path('lib/jazz_fingers/version', __dir__)
4
2
 
5
3
  Gem::Specification.new do |gem|
6
- gem.name = "jazz_fingers"
4
+ gem.name = 'jazz_fingers'
7
5
  gem.version = JazzFingers::VERSION
8
- gem.author = "Paulo Henrique Lopes Ribeiro"
9
- gem.email = "plribeiro3000@gmail.com"
10
- gem.license = "MIT"
11
- gem.homepage = "https://github.com/plribeiro3000/jazz_fingers"
12
- gem.summary = "Exercise those fingers. Pry-based enhancements for the default Ruby console."
13
- gem.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 awesome_print, and has some other goodies up its sleeves."
6
+ gem.author = 'Paulo Henrique Lopes Ribeiro'
7
+ gem.email = 'plribeiro3000@gmail.com'
8
+ gem.license = 'MIT'
9
+ gem.homepage = 'https://github.com/plribeiro3000/jazz_fingers'
10
+ gem.summary = 'Exercise those fingers. Pry-based enhancements for the default Ruby console.'
11
+ description =
12
+ 'Spending hours in the ruby console? Spruce it up and show off those hard-working hands! jazz_fingers'\
13
+ 'replaces IRB with Pry, improves output through awesome_print, and has some other goodies up its sleeves.'
14
+ gem.description = description
14
15
 
15
16
  gem.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
16
17
  gem.files = `git ls-files`.split("\n")
17
18
  gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
18
- gem.require_paths = ["lib"]
19
+ gem.require_paths = ['lib']
19
20
 
20
21
  # Dependencies
21
- gem.required_ruby_version = ">= 2.0"
22
- gem.add_runtime_dependency "pry", "~> 0.10"
23
- gem.add_runtime_dependency "pry-doc", "~> 0.6"
24
- gem.add_runtime_dependency "pry-byebug", "~> 3.4"
25
- gem.add_runtime_dependency "hirb", "~> 0.7"
26
- gem.add_runtime_dependency "pry-coolline", "~> 0.2"
27
- gem.add_runtime_dependency "awesome_print", "~> 1.6"
22
+ gem.required_ruby_version = '>= 2.0'
23
+ gem.add_runtime_dependency 'awesome_print', '~> 1.6'
24
+ gem.add_runtime_dependency 'pry', '~> 0.10'
25
+ gem.add_runtime_dependency 'pry-byebug', '~> 3.4'
26
+ gem.add_runtime_dependency 'pry-coolline', '~> 0.2'
28
27
 
29
- gem.add_development_dependency "rubocop"
28
+ gem.add_development_dependency 'rubocop'
30
29
  end
@@ -1,20 +1,25 @@
1
1
  ENV['HOME'] ||= '/dev/null'
2
2
 
3
- require "hirb"
4
- require "pry"
5
- require "pry-byebug"
6
- require "pry-doc"
7
- require "readline"
8
- require "jazz_fingers/hirb_ext"
3
+ require 'pry'
4
+ require 'pry-byebug'
5
+ require 'readline'
6
+ require 'forwardable'
9
7
 
10
8
  module JazzFingers
11
- autoload :Configuration, "jazz_fingers/configuration"
12
- autoload :Input, "jazz_fingers/input"
13
- autoload :Print, "jazz_fingers/print"
14
- autoload :Prompt, "jazz_fingers/prompt"
15
- autoload :VERSION, "jazz_fingers/version"
9
+ autoload :AWESOME_PRINT, 'jazz_fingers/awesome_print'
10
+ autoload :CodeRay, 'jazz_fingers/coderay'
11
+ autoload :Commands, 'jazz_fingers/commands'
12
+ autoload :Configuration, 'jazz_fingers/configuration'
13
+ autoload :Input, 'jazz_fingers/input'
14
+ autoload :Print, 'jazz_fingers/print'
15
+ autoload :Prompt, 'jazz_fingers/prompt'
16
+ autoload :VERSION, 'jazz_fingers/version'
16
17
 
17
18
  class << self
19
+ extend Forwardable
20
+
21
+ def_delegators :config, :awesome_print?, :coolline?
22
+
18
23
  def print
19
24
  @print ||= Print.config
20
25
  end
@@ -35,10 +40,42 @@ module JazzFingers
35
40
 
36
41
  def configure
37
42
  yield @config ||= Configuration.new
43
+ setup!
38
44
  end
39
45
 
40
46
  def config
41
47
  @config ||= Configuration.new
42
48
  end
49
+
50
+ def setup!
51
+ Pry.prompt = prompt
52
+ Pry.input = input if JazzFingers.coolline?
53
+ Pry.config.should_load_plugins = false
54
+ Pry.commands.alias_command('c', 'continue')
55
+ Pry.commands.alias_command('s', 'step')
56
+ Pry.commands.alias_command('n', 'next')
57
+ Pry.editor = 'vi'
58
+ Pry.config.ls.separator = "\n"
59
+ Pry.config.ls.heading_color = :magenta
60
+ Pry.config.ls.public_method_color = :green
61
+ Pry.config.ls.protected_method_color = :yellow
62
+ Pry.config.ls.private_method_color = :bright_black
63
+
64
+ JazzFingers::Commands.constants(false).each do |constant|
65
+ command = JazzFingers::Commands.const_get(constant)
66
+ Pry.config.commands.import(command)
67
+ end
68
+
69
+ if JazzFingers.awesome_print?
70
+ require 'awesome_print'
71
+
72
+ AwesomePrint.defaults = JazzFingers::AWESOME_PRINT
73
+ Pry.print = print
74
+ end
75
+
76
+ JazzFingers::CodeRay.setup!
77
+
78
+ true
79
+ end
43
80
  end
44
81
  end
@@ -0,0 +1,26 @@
1
+ module JazzFingers
2
+ AWESOME_PRINT = {
3
+ indent: 2,
4
+ sort_keys: true,
5
+ color: {
6
+ args: :greenish,
7
+ array: :pale,
8
+ bigdecimal: :blue,
9
+ class: :yellow,
10
+ date: :greenish,
11
+ falseclass: :red,
12
+ fixnum: :blue,
13
+ float: :blue,
14
+ hash: :pale,
15
+ keyword: :cyan,
16
+ method: :purpleish,
17
+ nilclass: :red,
18
+ string: :yellowish,
19
+ struct: :pale,
20
+ symbol: :cyanish,
21
+ time: :greenish,
22
+ trueclass: :green,
23
+ variable: :cyanish
24
+ }
25
+ }
26
+ end
@@ -0,0 +1,20 @@
1
+ module JazzFingers
2
+ module CodeRay
3
+ autoload :ESCAPED_COLORS, 'jazz_fingers/coderay/escaped_colors'
4
+ autoload :UNESCAPED_COLORS, 'jazz_fingers/coderay/unescaped_colors'
5
+
6
+ def self.setup!
7
+ ::CodeRay.scan("example", :ruby).term
8
+
9
+ if ::CodeRay::VERSION >= '1.1.0'
10
+ ESCAPED_COLORS.each do |key, value|
11
+ ::CodeRay::Encoders::Terminal::TOKEN_COLORS[key] = value
12
+ end
13
+ else
14
+ UNESCAPED_COLORS.each do |key, value|
15
+ ::CodeRay::Encoders::Terminal::TOKEN_COLORS[key] = value
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,74 @@
1
+ module JazzFingers
2
+ module CodeRay
3
+ ESCAPED_COLORS = {
4
+ attribute_name: "\e[33m",
5
+ attribute_value: "\e[31m",
6
+ binary: "\e[1;35m",
7
+ char: {
8
+ self: "\e[36m",
9
+ delimiter: "\e[34m"
10
+ },
11
+ class: "\e[1;35m",
12
+ class_variable: "\e[36m",
13
+ color: "\e[32m",
14
+ comment: "\e[37m",
15
+ complex: "\e[34m",
16
+ constant: "\e[34m\e[4m",
17
+ decoration: "\e[35m",
18
+ definition: "\e[1;32m",
19
+ directive: "\e[32m\e[4m",
20
+ doc: "\e[46m",
21
+ doctype: "\e[1;30m",
22
+ doc_string: "\e[31m\e[4m",
23
+ entity: "\e[33m",
24
+ error: "\e[1;33m\e[41m",
25
+ exception: "\e[1;31m",
26
+ float: "\e[1;35m",
27
+ function: "\e[1;34m",
28
+ global_variable: "\e[42m",
29
+ hex: "\e[1;36m",
30
+ include: "\e[33m",
31
+ integer: "\e[1;34m",
32
+ key: "\e[35m",
33
+ label: "\e[1;15m",
34
+ local_variable: "\e[33m",
35
+ octal: "\e[1;35m",
36
+ operator_name: "\e[1;29m",
37
+ predefined_constant: "\e[1;36m",
38
+ predefined_type: "\e[1;30m",
39
+ predefined: "\e[4m\e[1;34m",
40
+ preprocessor: "\e[36m",
41
+ pseudo_class: "\e[34m",
42
+ regexp: {
43
+ self: "\e[31m",
44
+ content: "\e[31m",
45
+ delimiter: "\e[1;29m",
46
+ modifier: "\e[35m",
47
+ function: "\e[1;29m"
48
+ },
49
+ reserved: "\e[1;31m",
50
+ shell: {
51
+ self: "\e[42m",
52
+ content: "\e[1;29m",
53
+ delimiter: "\e[37m",
54
+ },
55
+ string: {
56
+ self: "\e[36m",
57
+ modifier: "\e[1;32m",
58
+ escape: "\e[1;36m",
59
+ delimiter: "\e[1;32m",
60
+ },
61
+ symbol: "\e[1;31m",
62
+ tag: "\e[34m",
63
+ type: "\e[1;34m",
64
+ value: "\e[36m",
65
+ variable: "\e[34m",
66
+
67
+ insert: "\e[42m",
68
+ delete: "\e[41m",
69
+ change: "\e[44m",
70
+ head: "\e[45m"
71
+ }.freeze
72
+ end
73
+ end
74
+
@@ -0,0 +1,74 @@
1
+ module JazzFingers
2
+ module CodeRay
3
+ UNESCAPED_COLORS = {
4
+ attribute_name: '33',
5
+ attribute_value: '31',
6
+ binary: '1;35',
7
+ char: {
8
+ self: '36',
9
+ delimiter: '34'
10
+ },
11
+ class: '1;35',
12
+ class_variable: '36',
13
+ color: '32',
14
+ comment: '37',
15
+ complex: '34',
16
+ constant: ['34', '4'],
17
+ decoration: '35',
18
+ definition: '1;32',
19
+ directive: ['32', '4'],
20
+ doc: '46',
21
+ doctype: '1;30',
22
+ doc_string: ['31', '4'],
23
+ entity: '33',
24
+ error: ['1;33', '41'],
25
+ exception: '1;31',
26
+ float: '1;35',
27
+ function: '1;34',
28
+ global_variable: '42',
29
+ hex: '1;36',
30
+ include: '33',
31
+ integer: '1;34',
32
+ key: '35',
33
+ label: '1;15',
34
+ local_variable: '33',
35
+ octal: '1;35',
36
+ operator_name: '1;29',
37
+ predefined_constant: '1;36',
38
+ predefined_type: '1;30',
39
+ predefined: ['4', '1;34'],
40
+ preprocessor: '36',
41
+ pseudo_class: '34',
42
+ regexp: {
43
+ self: '31',
44
+ content: '31',
45
+ delimiter: '1;29',
46
+ modifier: '35',
47
+ function: '1;29'
48
+ },
49
+ reserved: '1;31',
50
+ shell: {
51
+ self: '42',
52
+ content: '1;29',
53
+ delimiter: '37',
54
+ },
55
+ string: {
56
+ self: '36',
57
+ modifier: '1;32',
58
+ escape: '1;36',
59
+ delimiter: '1;32',
60
+ },
61
+ symbol: '1;31',
62
+ tag: '34',
63
+ type: '1;34',
64
+ value: '36',
65
+ variable: '34',
66
+
67
+ insert: '42',
68
+ delete: '41',
69
+ change: '44',
70
+ head: '45'
71
+ }.freeze
72
+ end
73
+ end
74
+
@@ -0,0 +1,7 @@
1
+ module JazzFingers
2
+ module Commands
3
+ autoload :CALLER_METHOD, 'jazz_fingers/commands/caller_method'
4
+ autoload :COPY, 'jazz_fingers/commands/copy'
5
+ autoload :SQL, 'jazz_fingers/commands/sql'
6
+ end
7
+ end
@@ -0,0 +1,16 @@
1
+ module JazzFingers
2
+ module Commands
3
+ CALLER_METHOD = Pry::CommandSet.new do
4
+ command "caller_method" do |depth|
5
+ depth = depth.to_i || 1
6
+ if /^(.+?):(\d+)(?::in `(.*)')?/ =~ caller(depth+1).first
7
+ file = Regexp.last_match[1]
8
+ line = Regexp.last_match[2].to_i
9
+ method = Regexp.last_match[3]
10
+ output.puts [file, line, method]
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
16
+
@@ -0,0 +1,10 @@
1
+ module JazzFingers
2
+ module Commands
3
+ COPY = Pry::CommandSet.new do
4
+ command "copy", "Copy argument to the clip-board" do |str|
5
+ IO.popen('pbcopy', 'w') { |f| f << str.to_s }
6
+ end
7
+ end
8
+ end
9
+ end
10
+
@@ -0,0 +1,14 @@
1
+ module JazzFingers
2
+ module Commands
3
+ SQL = Pry::CommandSet.new do
4
+ command "sql", "Send sql over AR." do |query|
5
+ if defined?(Rails)
6
+ pp ActiveRecord::Base.connection.select_all(query)
7
+ else
8
+ pp "Rails not defined"
9
+ end
10
+ end
11
+ end
12
+ end
13
+ end
14
+
@@ -1,7 +1,7 @@
1
1
  module JazzFingers
2
2
  class Configuration
3
3
  attr_writer :colored_prompt, :prompt_separator, :coolline, :awesome_print,
4
- :application_name
4
+ :application_name
5
5
 
6
6
  # Color the prompt?
7
7
  #
@@ -23,7 +23,7 @@ module JazzFingers
23
23
  # Default: right angle quote, or '>' when using rb-readline which doesn't
24
24
  # handle mixed encodings well.
25
25
  def prompt_separator
26
- @prompt_separator ||= defined?(RbReadline) ? ">" : "\u00BB"
26
+ @prompt_separator ||= defined?(RbReadline) ? '>' : "\u00BB"
27
27
  end
28
28
 
29
29
  def coolline?
@@ -39,23 +39,29 @@ module JazzFingers
39
39
  end
40
40
 
41
41
  def application_name
42
- return "(#{underscore(@application_name)})" unless @application_name.nil?
42
+ return underscore(@application_name) unless @application_name.nil?
43
43
 
44
44
  if defined?(Rails)
45
- return "(#{Rails.application.class.parent_name.underscore})"
46
- else
47
- return "(jazz_fingers)"
45
+ application_class = Rails.application.class
46
+
47
+ if application_class.respond_to?(:module_parent_name)
48
+ application_class.module_parent_name.underscore
49
+ else
50
+ application_class.parent_name.underscore
51
+ end
48
52
  end
53
+
54
+ "jazz_fingers"
49
55
  end
50
56
 
51
57
  private
52
58
 
53
59
  def underscore(camel_cased_word)
54
- camel_cased_word.to_s.gsub(/::/, '/').
55
- gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').
56
- gsub(/([a-z\d])([A-Z])/,'\1_\2').
57
- tr("-", "_").
58
- downcase
60
+ camel_cased_word.to_s.gsub(/::/, '/')
61
+ .gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2')
62
+ .gsub(/([a-z\d])([A-Z])/, '\1_\2')
63
+ .tr('-', '_')
64
+ .downcase
59
65
  end
60
66
  end
61
67
  end
@@ -1,5 +1,5 @@
1
- require "pry-coolline"
2
- require "coderay"
1
+ require 'pry-coolline'
2
+ require 'coderay'
3
3
 
4
4
  module JazzFingers
5
5
  class Input
@@ -1,12 +1,11 @@
1
- require "awesome_print"
1
+ require 'awesome_print'
2
2
 
3
3
  module JazzFingers
4
4
  class Print
5
5
  class << self
6
6
  def config
7
7
  lambda do |_output, value, pry_object|
8
- return if Hirb::View.view_or_page_output(value)
9
- pretty = value.ai(indent: 2)
8
+ pretty = value.ai
10
9
  pry_object.pager.page("=> #{pretty}\n")
11
10
  end
12
11
  end
@@ -1,5 +1,18 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module JazzFingers
2
4
  class Prompt
5
+ OBJECT_INSTANCE = /#<(.+)>/
6
+
7
+ autoload :PryVersion013AndLater, 'jazz_fingers/prompt/pry_version_013_and_later'
8
+ autoload :PryVersion012AndPrior, 'jazz_fingers/prompt/pry_version_012_and_prior'
9
+
10
+ if Pry::VERSION >= "0.13.0"
11
+ include PryVersion013AndLater
12
+ else
13
+ include PryVersion012AndPrior
14
+ end
15
+
3
16
  def initialize(options = {})
4
17
  @colored = options.fetch(:colored)
5
18
  @separator = options.fetch(:separator)
@@ -28,44 +41,75 @@ module JazzFingers
28
41
  "\001\e[1m\002#{text}\001\e[0m\002"
29
42
  end
30
43
 
31
- def separator
44
+ def main_separator
32
45
  red_text(@separator)
33
46
  end
34
47
 
35
- def name
36
- blue_text(@application_name)
48
+ def wait_separator
49
+ "*"
37
50
  end
38
51
 
39
- def line_number(pry)
40
- "[#{bold_text(pry.input_array.size)}]"
41
- end
52
+ # Return the current Pry context
53
+ #
54
+ # When the Pry context is `"main"` or `"nil"`, use the application name from
55
+ # the JazzFingers config. Examples: "(my_rails_app_name)", "(jazz_fingers)".
56
+ #
57
+ # When in the context of an object instance, use the abbreviated object
58
+ # path. Example: "(#<Pry::Prompt>)", "(#<RSpec::...::ClassName>)"
59
+ #
60
+ # Fall back to the raw context provided by Pry.view_clip.
61
+ # Example: "(Pry::Prompt)"
62
+ def context(module_name = "main")
63
+ name =
64
+ case module_name
65
+ when "main", "nil"
66
+ @application_name
67
+ when OBJECT_INSTANCE
68
+ abbreviated_context(module_name)
69
+ else
70
+ module_name
71
+ end
42
72
 
43
- def text(object, level)
44
- level = 0 if level < 0
45
- text = Pry.view_clip(object)
73
+ blue_text("(#{name})")
74
+ end
46
75
 
47
- if text == "main"
48
- ""
76
+ def line_number(pry)
77
+ if pry.respond_to? :input_ring
78
+ bold_text(pry.input_ring.size)
49
79
  else
50
- "(#{'../' * level}#{text})"
80
+ bold_text(pry.input_array.size)
51
81
  end
52
82
  end
53
83
 
54
- def main_prompt
55
- lambda do |_object, _level, pry|
56
- "#{RUBY_VERSION} #{name}#{line_number(pry)} #{separator} "
57
- end
58
- end
84
+ # Abbreviate the object path in the given `object_label` string so the
85
+ # prompt doesn't overflow. Display only the root and leaf namespaces.
86
+ #
87
+ # Examples:
88
+ # In: #<Class1::Class2::Class3::Class4::Class5>
89
+ # Out: #<Class1::...::Class5>
90
+ #
91
+ # In: #<Class1::Class2>
92
+ # Out: #<Class1::Class2>
93
+ #
94
+ # In: #<NoPathJustASingleLongClassName>
95
+ # Out: #<NoPathJustASingleLongClassName>
96
+ def abbreviated_context(object_label)
97
+ object_path = object_label[OBJECT_INSTANCE, 1]
98
+ object_path_components = object_path.split("::")
99
+ return object_label if object_path_components.length <= 2
59
100
 
60
- def block_prompt
61
- lambda do |_object, level, pry|
62
- spaces = " " * level
63
- "#{RUBY_VERSION} #{name}#{line_number(pry)} * #{spaces}"
64
- end
101
+ root, *_, leaf = object_path_components
102
+ "#<#{root}::...::#{leaf}>"
65
103
  end
66
104
 
67
- def config
68
- [main_prompt, block_prompt]
105
+ def template(module_name, pry, separator)
106
+ format(
107
+ "%<ruby>s %<context>s[%<line>s] %<separator>s ",
108
+ ruby: RUBY_VERSION,
109
+ context: context(module_name),
110
+ line: line_number(pry),
111
+ separator: separator
112
+ )
69
113
  end
70
114
  end
71
115
  end
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ module JazzFingers
4
+ class Prompt
5
+ # For Pry < 0.13.
6
+ module PryVersion012AndPrior
7
+ def config
8
+ [main_prompt, wait_prompt]
9
+ end
10
+
11
+ def main_prompt
12
+ lambda do |context, _nesting, pry|
13
+ template(Pry.view_clip(context), pry, main_separator)
14
+ end
15
+ end
16
+
17
+ def wait_prompt
18
+ lambda do |context, _nesting, pry|
19
+ template(Pry.view_clip(context), pry, wait_separator)
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ module JazzFingers
4
+ class Prompt
5
+ # For Pry >= 0.13.
6
+ module PryVersion013AndLater
7
+ # Add the JazzFingers prompt to the Pry::Prompt hash to enable changing it
8
+ # with `change-prompt`.
9
+ #
10
+ # Return the Pry::Prompt object.
11
+ def config
12
+ return Pry::Prompt[:jazz_fingers] if Pry::Prompt[:jazz_fingers]
13
+
14
+ Pry::Prompt.add(
15
+ :jazz_fingers,
16
+ "A spruced-up prompt provided by jazz_fingers.",
17
+ [main_separator, wait_separator]
18
+ ) do |context, _nesting, pry, separator|
19
+ template(Pry.view_clip(context), pry, separator)
20
+ end
21
+
22
+ Pry::Prompt[:jazz_fingers]
23
+ end
24
+ end
25
+ end
26
+ end
@@ -1,3 +1,3 @@
1
1
  module JazzFingers
2
- VERSION = "4.0.1"
2
+ VERSION = '5.2.1'.freeze
3
3
  end
metadata CHANGED
@@ -1,43 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jazz_fingers
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.0.1
4
+ version: 5.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Paulo Henrique Lopes Ribeiro
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-05-26 00:00:00.000000000 Z
11
+ date: 2020-07-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: pry
14
+ name: awesome_print
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0.10'
19
+ version: '1.6'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '0.10'
26
+ version: '1.6'
27
27
  - !ruby/object:Gem::Dependency
28
- name: pry-doc
28
+ name: pry
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '0.6'
33
+ version: '0.10'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '0.6'
40
+ version: '0.10'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: pry-byebug
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -52,20 +52,6 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '3.4'
55
- - !ruby/object:Gem::Dependency
56
- name: hirb
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - "~>"
60
- - !ruby/object:Gem::Version
61
- version: '0.7'
62
- type: :runtime
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - "~>"
67
- - !ruby/object:Gem::Version
68
- version: '0.7'
69
55
  - !ruby/object:Gem::Dependency
70
56
  name: pry-coolline
71
57
  requirement: !ruby/object:Gem::Requirement
@@ -80,20 +66,6 @@ dependencies:
80
66
  - - "~>"
81
67
  - !ruby/object:Gem::Version
82
68
  version: '0.2'
83
- - !ruby/object:Gem::Dependency
84
- name: awesome_print
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - "~>"
88
- - !ruby/object:Gem::Version
89
- version: '1.6'
90
- type: :runtime
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - "~>"
95
- - !ruby/object:Gem::Version
96
- version: '1.6'
97
69
  - !ruby/object:Gem::Dependency
98
70
  name: rubocop
99
71
  requirement: !ruby/object:Gem::Requirement
@@ -109,7 +81,7 @@ dependencies:
109
81
  - !ruby/object:Gem::Version
110
82
  version: '0'
111
83
  description: Spending hours in the ruby console? Spruce it up and show off those hard-working
112
- hands! jazz_fingers replaces IRB with Pry, improves output through awesome_print,
84
+ hands! jazz_fingersreplaces IRB with Pry, improves output through awesome_print,
113
85
  and has some other goodies up its sleeves.
114
86
  email: plribeiro3000@gmail.com
115
87
  executables: []
@@ -130,18 +102,26 @@ files:
130
102
  - Rakefile
131
103
  - jazz_fingers.gemspec
132
104
  - lib/jazz_fingers.rb
105
+ - lib/jazz_fingers/awesome_print.rb
106
+ - lib/jazz_fingers/coderay.rb
107
+ - lib/jazz_fingers/coderay/escaped_colors.rb
108
+ - lib/jazz_fingers/coderay/unescaped_colors.rb
109
+ - lib/jazz_fingers/commands.rb
110
+ - lib/jazz_fingers/commands/caller_method.rb
111
+ - lib/jazz_fingers/commands/copy.rb
112
+ - lib/jazz_fingers/commands/sql.rb
133
113
  - lib/jazz_fingers/configuration.rb
134
- - lib/jazz_fingers/hirb_ext.rb
135
114
  - lib/jazz_fingers/input.rb
136
115
  - lib/jazz_fingers/print.rb
137
116
  - lib/jazz_fingers/prompt.rb
138
- - lib/jazz_fingers/setup.rb
117
+ - lib/jazz_fingers/prompt/pry_version_012_and_prior.rb
118
+ - lib/jazz_fingers/prompt/pry_version_013_and_later.rb
139
119
  - lib/jazz_fingers/version.rb
140
120
  homepage: https://github.com/plribeiro3000/jazz_fingers
141
121
  licenses:
142
122
  - MIT
143
123
  metadata: {}
144
- post_install_message:
124
+ post_install_message:
145
125
  rdoc_options: []
146
126
  require_paths:
147
127
  - lib
@@ -156,10 +136,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
156
136
  - !ruby/object:Gem::Version
157
137
  version: '0'
158
138
  requirements: []
159
- rubyforge_project:
160
- rubygems_version: 2.4.6
161
- signing_key:
139
+ rubygems_version: 3.1.3
140
+ signing_key:
162
141
  specification_version: 4
163
142
  summary: Exercise those fingers. Pry-based enhancements for the default Ruby console.
164
143
  test_files: []
165
- has_rdoc:
data/.hound.yml DELETED
@@ -1,17 +0,0 @@
1
- Metrics/LineLength:
2
- Enabled: false
3
-
4
- Style/EachWithObject:
5
- Enabled: false
6
-
7
- Style/Encoding:
8
- EnforcedStyle: when_needed
9
-
10
- Style/FormatString:
11
- Enabled: false
12
-
13
- Style/SignalException:
14
- EnforcedStyle: only_raise
15
-
16
- Style/StringLiterals:
17
- EnforcedStyle: double_quotes
@@ -1,15 +0,0 @@
1
- class << Hirb::View
2
- alias_method :enable_output_method_existing, :enable_output_method
3
- alias_method :disable_output_method_existing, :disable_output_method
4
-
5
- def enable_output_method
6
- @output_method = true
7
- JazzFingers.config.awesome_print = true
8
- enable_output_method_existing
9
- end
10
-
11
- def disable_output_method
12
- JazzFingers.config.awesome_print = false
13
- disable_output_method_existing
14
- end
15
- end
@@ -1,10 +0,0 @@
1
- # JazzFingers dance
2
- Pry.print = JazzFingers.print if JazzFingers.config.awesome_print?
3
- Pry.prompt = JazzFingers.prompt
4
- Pry.input = JazzFingers.input if JazzFingers.config.coolline?
5
- Pry.config.should_load_plugins = false
6
-
7
- # Command Shortcuts
8
- Pry.commands.alias_command("c", "continue")
9
- Pry.commands.alias_command("s", "step")
10
- Pry.commands.alias_command("n", "next")