ruby_jard 0.1.0 → 0.3.0

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.
Files changed (102) hide show
  1. checksums.yaml +4 -4
  2. data/.github/FUNDING.yml +3 -0
  3. data/.github/ISSUE_TEMPLATE/bug_report.md +32 -0
  4. data/.github/ISSUE_TEMPLATE/feature_request.md +20 -0
  5. data/.github/workflows/documentation.yml +65 -0
  6. data/.github/workflows/rspec.yml +96 -0
  7. data/.gitignore +1 -0
  8. data/.rubocop.yml +90 -2
  9. data/CHANGELOG.md +112 -0
  10. data/Gemfile +14 -4
  11. data/README.md +95 -3
  12. data/benchmark/path_filter_bench.rb +58 -0
  13. data/bin/console +1 -2
  14. data/lib/ruby_jard.rb +68 -32
  15. data/lib/ruby_jard/box_drawer.rb +175 -0
  16. data/lib/ruby_jard/color_scheme.rb +28 -0
  17. data/lib/ruby_jard/color_schemes.rb +54 -0
  18. data/lib/ruby_jard/color_schemes/256_color_scheme.rb +50 -0
  19. data/lib/ruby_jard/color_schemes/256_light_color_scheme.rb +50 -0
  20. data/lib/ruby_jard/color_schemes/deep_space_color_scheme.rb +49 -0
  21. data/lib/ruby_jard/color_schemes/gruvbox_color_scheme.rb +48 -0
  22. data/lib/ruby_jard/color_schemes/one_half_dark_color_scheme.rb +47 -0
  23. data/lib/ruby_jard/color_schemes/one_half_light_color_scheme.rb +49 -0
  24. data/lib/ruby_jard/column.rb +26 -0
  25. data/lib/ruby_jard/commands/color_helpers.rb +32 -0
  26. data/lib/ruby_jard/commands/continue_command.rb +4 -9
  27. data/lib/ruby_jard/commands/down_command.rb +9 -8
  28. data/lib/ruby_jard/commands/exit_command.rb +27 -0
  29. data/lib/ruby_jard/commands/frame_command.rb +13 -11
  30. data/lib/ruby_jard/commands/jard/color_scheme_command.rb +74 -0
  31. data/lib/ruby_jard/commands/jard/filter_command.rb +136 -0
  32. data/lib/ruby_jard/commands/jard/hide_command.rb +40 -0
  33. data/lib/ruby_jard/commands/jard/output_command.rb +36 -0
  34. data/lib/ruby_jard/commands/jard/show_command.rb +41 -0
  35. data/lib/ruby_jard/commands/jard_command.rb +52 -0
  36. data/lib/ruby_jard/commands/list_command.rb +31 -0
  37. data/lib/ruby_jard/commands/next_command.rb +11 -8
  38. data/lib/ruby_jard/commands/step_command.rb +11 -8
  39. data/lib/ruby_jard/commands/step_out_command.rb +34 -0
  40. data/lib/ruby_jard/commands/up_command.rb +10 -8
  41. data/lib/ruby_jard/commands/validation_helpers.rb +50 -0
  42. data/lib/ruby_jard/config.rb +61 -0
  43. data/lib/ruby_jard/console.rb +158 -0
  44. data/lib/ruby_jard/control_flow.rb +73 -0
  45. data/lib/ruby_jard/decorators/array_decorator.rb +79 -0
  46. data/lib/ruby_jard/decorators/attributes_decorator.rb +172 -0
  47. data/lib/ruby_jard/decorators/color_decorator.rb +80 -0
  48. data/lib/ruby_jard/decorators/hash_decorator.rb +74 -0
  49. data/lib/ruby_jard/decorators/inspection_decorator.rb +109 -0
  50. data/lib/ruby_jard/decorators/loc_decorator.rb +108 -119
  51. data/lib/ruby_jard/decorators/object_decorator.rb +122 -0
  52. data/lib/ruby_jard/decorators/path_decorator.rb +56 -60
  53. data/lib/ruby_jard/decorators/rails_decorator.rb +194 -0
  54. data/lib/ruby_jard/decorators/source_decorator.rb +3 -1
  55. data/lib/ruby_jard/decorators/string_decorator.rb +41 -0
  56. data/lib/ruby_jard/decorators/struct_decorator.rb +79 -0
  57. data/lib/ruby_jard/frame.rb +68 -0
  58. data/lib/ruby_jard/key_binding.rb +14 -0
  59. data/lib/ruby_jard/key_bindings.rb +96 -0
  60. data/lib/ruby_jard/keys.rb +48 -0
  61. data/lib/ruby_jard/layout.rb +17 -88
  62. data/lib/ruby_jard/layout_calculator.rb +168 -0
  63. data/lib/ruby_jard/layout_picker.rb +34 -0
  64. data/lib/ruby_jard/layouts.rb +52 -0
  65. data/lib/ruby_jard/layouts/narrow_horizontal_layout.rb +32 -0
  66. data/lib/ruby_jard/layouts/narrow_vertical_layout.rb +32 -0
  67. data/lib/ruby_jard/layouts/tiny_layout.rb +29 -0
  68. data/lib/ruby_jard/layouts/wide_layout.rb +50 -0
  69. data/lib/ruby_jard/pager.rb +112 -0
  70. data/lib/ruby_jard/path_classifier.rb +133 -0
  71. data/lib/ruby_jard/path_filter.rb +125 -0
  72. data/lib/ruby_jard/reflection.rb +97 -0
  73. data/lib/ruby_jard/repl_processor.rb +151 -89
  74. data/lib/ruby_jard/repl_proxy.rb +337 -0
  75. data/lib/ruby_jard/row.rb +31 -0
  76. data/lib/ruby_jard/row_renderer.rb +119 -0
  77. data/lib/ruby_jard/screen.rb +14 -41
  78. data/lib/ruby_jard/screen_adjuster.rb +104 -0
  79. data/lib/ruby_jard/screen_drawer.rb +25 -0
  80. data/lib/ruby_jard/screen_manager.rb +167 -82
  81. data/lib/ruby_jard/screen_renderer.rb +152 -0
  82. data/lib/ruby_jard/screens.rb +31 -12
  83. data/lib/ruby_jard/screens/backtrace_screen.rb +118 -116
  84. data/lib/ruby_jard/screens/menu_screen.rb +73 -45
  85. data/lib/ruby_jard/screens/source_screen.rb +86 -106
  86. data/lib/ruby_jard/screens/threads_screen.rb +103 -78
  87. data/lib/ruby_jard/screens/variables_screen.rb +224 -142
  88. data/lib/ruby_jard/session.rb +151 -16
  89. data/lib/ruby_jard/span.rb +23 -0
  90. data/lib/ruby_jard/templates/layout_template.rb +35 -0
  91. data/lib/ruby_jard/templates/screen_template.rb +34 -0
  92. data/lib/ruby_jard/thread_info.rb +69 -0
  93. data/lib/ruby_jard/version.rb +1 -1
  94. data/ruby_jard.gemspec +7 -8
  95. metadata +84 -50
  96. data/.travis.yml +0 -6
  97. data/lib/ruby_jard/commands/finish_command.rb +0 -31
  98. data/lib/ruby_jard/decorators/text_decorator.rb +0 -61
  99. data/lib/ruby_jard/layout_template.rb +0 -101
  100. data/lib/ruby_jard/screens/breakpoints_screen.rb +0 -23
  101. data/lib/ruby_jard/screens/empty_screen.rb +0 -13
  102. data/lib/ruby_jard/screens/expressions_sreen.rb +0 -22
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RubyJard
4
+ ##
5
+ # Smallest unit of texts. A span includes content, margin, and styles of a particular
6
+ # text chunk. All decorators and presenters return single/a list of spans.
7
+ class Span
8
+ extend Forwardable
9
+
10
+ attr_accessor :content, :content_length, :styles
11
+
12
+ def initialize(content: '', content_length: nil, margin_left: 0, margin_right: 0, styles: [])
13
+ if !content.nil? && !content.empty?
14
+ content = ' ' * margin_left + content if margin_left > 0
15
+ content += ' ' * margin_right if margin_right > 0
16
+ end
17
+
18
+ @content = content.to_s
19
+ @content_length = content_length || @content.length
20
+ @styles = styles
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,35 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RubyJard
4
+ module Templates
5
+ ##
6
+ # Template of a layout. Templates are hierarchy. Each template includes the
7
+ # sizing configuration, including absolute values, min, max, or ratio
8
+ # relative to its parant.
9
+ class LayoutTemplate
10
+ attr_reader :height_ratio, :width_ratio,
11
+ :min_width, :min_height,
12
+ :height, :width,
13
+ :children,
14
+ :fill_width, :fill_height
15
+
16
+ def initialize(
17
+ height_ratio: nil, width_ratio: nil,
18
+ min_width: nil, min_height: nil,
19
+ height: nil, width: nil,
20
+ children: [],
21
+ fill_width: true, fill_height: true
22
+ )
23
+ @height_ratio = height_ratio
24
+ @width_ratio = width_ratio
25
+ @min_width = min_width
26
+ @min_height = min_height
27
+ @height = height
28
+ @width = width
29
+ @children = children
30
+ @fill_width = fill_width
31
+ @fill_height = fill_height
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RubyJard
4
+ module Templates
5
+ ##
6
+ # Template of a screen. A screen doesn't have children. Each screen includes screen name, sizes androw template for
7
+ # rendering.
8
+ class ScreenTemplate
9
+ attr_reader :screen, :row_template, :height_ratio, :width_ratio,
10
+ :min_width, :min_height,
11
+ :height, :width,
12
+ :adjust_mode
13
+
14
+ def initialize(
15
+ screen: nil,
16
+ row_template: nil,
17
+ height_ratio: nil, width_ratio: nil,
18
+ min_width: nil, min_height: nil,
19
+ height: nil, width: nil,
20
+ adjust_mode: nil
21
+ )
22
+ @screen = screen
23
+ @row_template = row_template
24
+ @height_ratio = height_ratio
25
+ @width_ratio = width_ratio
26
+ @min_width = min_width
27
+ @min_height = min_height
28
+ @height = height
29
+ @width = width
30
+ @adjust_mode = adjust_mode
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,69 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RubyJard
4
+ ##
5
+ # A wrapper for thread object to prevent direc access to thread data
6
+ class ThreadInfo
7
+ class << self
8
+ def labels
9
+ @labels ||= {}
10
+ end
11
+
12
+ def clear_labels
13
+ @labels = {}
14
+ @next_label = 0
15
+ end
16
+
17
+ def next_label
18
+ @next_label ||= 0
19
+ @next_label += 1
20
+ end
21
+
22
+ def generate_label_for(id)
23
+ return '' if id.nil?
24
+ return labels[id] if labels[id]
25
+
26
+ labels[id] = next_label.to_s
27
+ end
28
+ end
29
+
30
+ attr_reader :id, :label
31
+
32
+ def initialize(thread)
33
+ raise RubyJard::Error, 'Expected Thread object or nil' if !thread.is_a?(::Thread) && !thread.nil?
34
+
35
+ @thread = thread
36
+ @id = thread&.object_id
37
+ @label = self.class.generate_label_for(@id)
38
+ end
39
+
40
+ def name
41
+ @thread&.name
42
+ end
43
+
44
+ def status
45
+ s = @thread&.status
46
+ s == false ? 'exited' : s
47
+ end
48
+
49
+ def alive?
50
+ @thread&.alive? || false
51
+ end
52
+
53
+ def backtrace_locations
54
+ @thread&.backtrace_locations || []
55
+ end
56
+
57
+ # rubocop:disable Style/CaseLikeIf
58
+ def ==(other)
59
+ if other.is_a?(::Thread)
60
+ @thread == other
61
+ elsif other.is_a?(ThreadInfo)
62
+ @id == other.id
63
+ else
64
+ raise RubyJard::Error, 'Invalid comparation'
65
+ end
66
+ end
67
+ # rubocop:enable Style/CaseLikeIf
68
+ end
69
+ end
@@ -2,5 +2,5 @@
2
2
 
3
3
  # Semantic versionn
4
4
  module RubyJard
5
- VERSION = '0.1.0'
5
+ VERSION = '0.3.0'
6
6
  end
@@ -24,16 +24,15 @@ Gem::Specification.new do |spec|
24
24
  # Specify which files should be added to the gem when it is released.
25
25
  # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
26
26
  spec.files = Dir.chdir(File.expand_path(__dir__)) do
27
- `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
27
+ `git ls-files -z`.split("\x0").reject do |f|
28
+ f.match(%r{^(test|spec|features|docs|javascripts|images|stylesheets|website)/})
29
+ end
28
30
  end
29
31
  spec.bindir = 'bin'
30
- spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
32
+ spec.executables = []
31
33
  spec.require_paths = ['lib']
32
34
 
33
- spec.add_runtime_dependency 'tty-box', '>= 0.5.0'
34
- spec.add_runtime_dependency 'tty-cursor', '>= 0.7.1'
35
- spec.add_runtime_dependency 'tty-screen', '>= 0.8.0'
36
-
37
- spec.add_runtime_dependency 'byebug', '>= 11.1.0'
38
- spec.add_runtime_dependency 'pry', '>= 0.13.0'
35
+ spec.add_runtime_dependency 'byebug', '>= 9.1', '< 12.0'
36
+ spec.add_runtime_dependency 'pry', '~> 0.13.0'
37
+ spec.add_runtime_dependency 'tty-screen', '~> 0.8.1'
39
38
  end
metadata CHANGED
@@ -1,133 +1,167 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby_jard
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Minh Nguyen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-07-01 00:00:00.000000000 Z
11
+ date: 2020-09-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: tty-box
14
+ name: byebug
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 0.5.0
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - ">="
19
+ version: '9.1'
20
+ - - "<"
25
21
  - !ruby/object:Gem::Version
26
- version: 0.5.0
27
- - !ruby/object:Gem::Dependency
28
- name: tty-cursor
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ">="
32
- - !ruby/object:Gem::Version
33
- version: 0.7.1
22
+ version: '12.0'
34
23
  type: :runtime
35
24
  prerelease: false
36
25
  version_requirements: !ruby/object:Gem::Requirement
37
26
  requirements:
38
27
  - - ">="
39
28
  - !ruby/object:Gem::Version
40
- version: 0.7.1
41
- - !ruby/object:Gem::Dependency
42
- name: tty-screen
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - ">="
46
- - !ruby/object:Gem::Version
47
- version: 0.8.0
48
- type: :runtime
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - ">="
29
+ version: '9.1'
30
+ - - "<"
53
31
  - !ruby/object:Gem::Version
54
- version: 0.8.0
32
+ version: '12.0'
55
33
  - !ruby/object:Gem::Dependency
56
- name: byebug
34
+ name: pry
57
35
  requirement: !ruby/object:Gem::Requirement
58
36
  requirements:
59
- - - ">="
37
+ - - "~>"
60
38
  - !ruby/object:Gem::Version
61
- version: 11.1.0
39
+ version: 0.13.0
62
40
  type: :runtime
63
41
  prerelease: false
64
42
  version_requirements: !ruby/object:Gem::Requirement
65
43
  requirements:
66
- - - ">="
44
+ - - "~>"
67
45
  - !ruby/object:Gem::Version
68
- version: 11.1.0
46
+ version: 0.13.0
69
47
  - !ruby/object:Gem::Dependency
70
- name: pry
48
+ name: tty-screen
71
49
  requirement: !ruby/object:Gem::Requirement
72
50
  requirements:
73
- - - ">="
51
+ - - "~>"
74
52
  - !ruby/object:Gem::Version
75
- version: 0.13.0
53
+ version: 0.8.1
76
54
  type: :runtime
77
55
  prerelease: false
78
56
  version_requirements: !ruby/object:Gem::Requirement
79
57
  requirements:
80
- - - ">="
58
+ - - "~>"
81
59
  - !ruby/object:Gem::Version
82
- version: 0.13.0
60
+ version: 0.8.1
83
61
  description: |-
84
62
  Ruby Jard provides an unified experience debugging Ruby source code in different platforms and \
85
63
  editors.
86
64
  email:
87
65
  - nguyenquangminh0711@gmail.com
88
- executables:
89
- - console
66
+ executables: []
90
67
  extensions: []
91
68
  extra_rdoc_files: []
92
69
  files:
70
+ - ".github/FUNDING.yml"
71
+ - ".github/ISSUE_TEMPLATE/bug_report.md"
72
+ - ".github/ISSUE_TEMPLATE/feature_request.md"
73
+ - ".github/workflows/documentation.yml"
74
+ - ".github/workflows/rspec.yml"
93
75
  - ".gitignore"
94
76
  - ".rspec"
95
77
  - ".rubocop.yml"
96
- - ".travis.yml"
97
78
  - CHANGELOG.md
98
79
  - CODE_OF_CONDUCT.md
99
80
  - Gemfile
100
81
  - LICENSE.txt
101
82
  - README.md
102
83
  - Rakefile
84
+ - benchmark/path_filter_bench.rb
103
85
  - bin/console
104
86
  - lib/ruby_jard.rb
87
+ - lib/ruby_jard/box_drawer.rb
88
+ - lib/ruby_jard/color_scheme.rb
89
+ - lib/ruby_jard/color_schemes.rb
90
+ - lib/ruby_jard/color_schemes/256_color_scheme.rb
91
+ - lib/ruby_jard/color_schemes/256_light_color_scheme.rb
92
+ - lib/ruby_jard/color_schemes/deep_space_color_scheme.rb
93
+ - lib/ruby_jard/color_schemes/gruvbox_color_scheme.rb
94
+ - lib/ruby_jard/color_schemes/one_half_dark_color_scheme.rb
95
+ - lib/ruby_jard/color_schemes/one_half_light_color_scheme.rb
96
+ - lib/ruby_jard/column.rb
97
+ - lib/ruby_jard/commands/color_helpers.rb
105
98
  - lib/ruby_jard/commands/continue_command.rb
106
99
  - lib/ruby_jard/commands/down_command.rb
107
- - lib/ruby_jard/commands/finish_command.rb
100
+ - lib/ruby_jard/commands/exit_command.rb
108
101
  - lib/ruby_jard/commands/frame_command.rb
102
+ - lib/ruby_jard/commands/jard/color_scheme_command.rb
103
+ - lib/ruby_jard/commands/jard/filter_command.rb
104
+ - lib/ruby_jard/commands/jard/hide_command.rb
105
+ - lib/ruby_jard/commands/jard/output_command.rb
106
+ - lib/ruby_jard/commands/jard/show_command.rb
107
+ - lib/ruby_jard/commands/jard_command.rb
108
+ - lib/ruby_jard/commands/list_command.rb
109
109
  - lib/ruby_jard/commands/next_command.rb
110
110
  - lib/ruby_jard/commands/step_command.rb
111
+ - lib/ruby_jard/commands/step_out_command.rb
111
112
  - lib/ruby_jard/commands/up_command.rb
113
+ - lib/ruby_jard/commands/validation_helpers.rb
114
+ - lib/ruby_jard/config.rb
115
+ - lib/ruby_jard/console.rb
116
+ - lib/ruby_jard/control_flow.rb
117
+ - lib/ruby_jard/decorators/array_decorator.rb
118
+ - lib/ruby_jard/decorators/attributes_decorator.rb
119
+ - lib/ruby_jard/decorators/color_decorator.rb
120
+ - lib/ruby_jard/decorators/hash_decorator.rb
121
+ - lib/ruby_jard/decorators/inspection_decorator.rb
112
122
  - lib/ruby_jard/decorators/loc_decorator.rb
123
+ - lib/ruby_jard/decorators/object_decorator.rb
113
124
  - lib/ruby_jard/decorators/path_decorator.rb
125
+ - lib/ruby_jard/decorators/rails_decorator.rb
114
126
  - lib/ruby_jard/decorators/source_decorator.rb
115
- - lib/ruby_jard/decorators/text_decorator.rb
127
+ - lib/ruby_jard/decorators/string_decorator.rb
128
+ - lib/ruby_jard/decorators/struct_decorator.rb
129
+ - lib/ruby_jard/frame.rb
130
+ - lib/ruby_jard/key_binding.rb
131
+ - lib/ruby_jard/key_bindings.rb
132
+ - lib/ruby_jard/keys.rb
116
133
  - lib/ruby_jard/layout.rb
117
- - lib/ruby_jard/layout_template.rb
134
+ - lib/ruby_jard/layout_calculator.rb
135
+ - lib/ruby_jard/layout_picker.rb
136
+ - lib/ruby_jard/layouts.rb
137
+ - lib/ruby_jard/layouts/narrow_horizontal_layout.rb
138
+ - lib/ruby_jard/layouts/narrow_vertical_layout.rb
139
+ - lib/ruby_jard/layouts/tiny_layout.rb
140
+ - lib/ruby_jard/layouts/wide_layout.rb
141
+ - lib/ruby_jard/pager.rb
142
+ - lib/ruby_jard/path_classifier.rb
143
+ - lib/ruby_jard/path_filter.rb
144
+ - lib/ruby_jard/reflection.rb
118
145
  - lib/ruby_jard/repl_processor.rb
146
+ - lib/ruby_jard/repl_proxy.rb
147
+ - lib/ruby_jard/row.rb
148
+ - lib/ruby_jard/row_renderer.rb
119
149
  - lib/ruby_jard/screen.rb
150
+ - lib/ruby_jard/screen_adjuster.rb
151
+ - lib/ruby_jard/screen_drawer.rb
120
152
  - lib/ruby_jard/screen_manager.rb
153
+ - lib/ruby_jard/screen_renderer.rb
121
154
  - lib/ruby_jard/screens.rb
122
155
  - lib/ruby_jard/screens/backtrace_screen.rb
123
- - lib/ruby_jard/screens/breakpoints_screen.rb
124
- - lib/ruby_jard/screens/empty_screen.rb
125
- - lib/ruby_jard/screens/expressions_sreen.rb
126
156
  - lib/ruby_jard/screens/menu_screen.rb
127
157
  - lib/ruby_jard/screens/source_screen.rb
128
158
  - lib/ruby_jard/screens/threads_screen.rb
129
159
  - lib/ruby_jard/screens/variables_screen.rb
130
160
  - lib/ruby_jard/session.rb
161
+ - lib/ruby_jard/span.rb
162
+ - lib/ruby_jard/templates/layout_template.rb
163
+ - lib/ruby_jard/templates/screen_template.rb
164
+ - lib/ruby_jard/thread_info.rb
131
165
  - lib/ruby_jard/version.rb
132
166
  - ruby_jard.gemspec
133
167
  homepage: https://github.com/nguyenquangminh0711/ruby_jard
@@ -1,6 +0,0 @@
1
- ---
2
- language: ruby
3
- cache: bundler
4
- rvm:
5
- - 2.7.0
6
- before_install: gem install bundler -v 2.1.2
@@ -1,31 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module RubyJard
4
- module Commands
5
- # Command used to finish up the current frame.
6
- # Data attached in the throw:
7
- # * command: constant symbol (:finish)
8
- # * pry: current context pry instance
9
- class FinishCommand < Pry::ClassCommand
10
- group 'RubyJard'
11
- description 'Finish the execution of the current frame.'
12
-
13
- match 'finish'
14
-
15
- banner <<-BANNER
16
- Usage: finish
17
-
18
- Finish the execution of the current frame.
19
-
20
- Examples:
21
- finish
22
- BANNER
23
-
24
- def process
25
- throw :control_flow, command: :finish, pry: pry_instance
26
- end
27
- end
28
- end
29
- end
30
-
31
- Pry::Commands.add_command(RubyJard::Commands::FinishCommand)