ruby_jard 0.2.2 → 0.2.3
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 +4 -4
- data/.github/ISSUE_TEMPLATE/bug_report.md +32 -0
- data/.github/ISSUE_TEMPLATE/feature_request.md +20 -0
- data/.github/workflows/ruby.yml +85 -0
- data/.gitignore +1 -0
- data/.rubocop.yml +70 -1
- data/CHANGELOG.md +31 -0
- data/Gemfile +6 -3
- data/README.md +122 -8
- data/bin/console +1 -2
- data/docs/color_schemes/256-light.png +0 -0
- data/docs/color_schemes/gruvbox.png +0 -0
- data/docs/color_schemes/one-half-dark.png +0 -0
- data/docs/color_schemes/one-half-light.png +0 -0
- data/lib/ruby_jard.rb +5 -5
- data/lib/ruby_jard/box_drawer.rb +4 -1
- data/lib/ruby_jard/color_schemes.rb +31 -15
- data/lib/ruby_jard/color_schemes/256_color_scheme.rb +37 -37
- data/lib/ruby_jard/color_schemes/256_light_color_scheme.rb +62 -0
- data/lib/ruby_jard/color_schemes/deep_space_color_scheme.rb +36 -36
- data/lib/ruby_jard/color_schemes/gruvbox_color_scheme.rb +62 -0
- data/lib/ruby_jard/color_schemes/one_half_dark_color_scheme.rb +61 -0
- data/lib/ruby_jard/color_schemes/one_half_light_color_scheme.rb +62 -0
- data/lib/ruby_jard/column.rb +3 -1
- data/lib/ruby_jard/commands/continue_command.rb +2 -3
- data/lib/ruby_jard/commands/down_command.rb +9 -5
- data/lib/ruby_jard/commands/exit_command.rb +27 -0
- data/lib/ruby_jard/commands/frame_command.rb +11 -10
- data/lib/ruby_jard/commands/jard/color_scheme_command.rb +52 -0
- data/lib/ruby_jard/commands/jard/hide_command.rb +40 -0
- data/lib/ruby_jard/commands/jard/output_command.rb +28 -0
- data/lib/ruby_jard/commands/jard/show_command.rb +41 -0
- data/lib/ruby_jard/commands/jard_command.rb +50 -0
- data/lib/ruby_jard/commands/list_command.rb +5 -4
- data/lib/ruby_jard/commands/next_command.rb +10 -5
- data/lib/ruby_jard/commands/step_command.rb +10 -5
- data/lib/ruby_jard/commands/step_out_command.rb +10 -5
- data/lib/ruby_jard/commands/up_command.rb +10 -5
- data/lib/ruby_jard/commands/validation_helpers.rb +50 -0
- data/lib/ruby_jard/config.rb +7 -3
- data/lib/ruby_jard/console.rb +10 -22
- data/lib/ruby_jard/control_flow.rb +3 -3
- data/lib/ruby_jard/decorators/color_decorator.rb +11 -5
- data/lib/ruby_jard/decorators/loc_decorator.rb +1 -1
- data/lib/ruby_jard/decorators/path_decorator.rb +20 -7
- data/lib/ruby_jard/decorators/source_decorator.rb +2 -0
- data/lib/ruby_jard/frame.rb +55 -0
- data/lib/ruby_jard/keys.rb +0 -3
- data/lib/ruby_jard/layout.rb +9 -2
- data/lib/ruby_jard/layout_calculator.rb +29 -12
- data/lib/ruby_jard/layout_picker.rb +34 -0
- data/lib/ruby_jard/layouts.rb +52 -0
- data/lib/ruby_jard/layouts/narrow_horizontal_layout.rb +28 -0
- data/lib/ruby_jard/layouts/narrow_vertical_layout.rb +32 -0
- data/lib/ruby_jard/layouts/tiny_layout.rb +25 -0
- data/lib/ruby_jard/layouts/wide_layout.rb +13 -15
- data/lib/ruby_jard/pager.rb +96 -0
- data/lib/ruby_jard/repl_processor.rb +61 -31
- data/lib/ruby_jard/repl_proxy.rb +193 -89
- data/lib/ruby_jard/row.rb +16 -1
- data/lib/ruby_jard/row_renderer.rb +51 -42
- data/lib/ruby_jard/screen.rb +2 -12
- data/lib/ruby_jard/screen_adjuster.rb +104 -0
- data/lib/ruby_jard/screen_drawer.rb +3 -0
- data/lib/ruby_jard/screen_manager.rb +32 -54
- data/lib/ruby_jard/screen_renderer.rb +30 -16
- data/lib/ruby_jard/screens.rb +31 -12
- data/lib/ruby_jard/screens/backtrace_screen.rb +23 -26
- data/lib/ruby_jard/screens/menu_screen.rb +53 -22
- data/lib/ruby_jard/screens/source_screen.rb +65 -37
- data/lib/ruby_jard/screens/threads_screen.rb +14 -14
- data/lib/ruby_jard/screens/variables_screen.rb +59 -34
- data/lib/ruby_jard/session.rb +19 -10
- data/lib/ruby_jard/span.rb +3 -0
- data/lib/ruby_jard/templates/layout_template.rb +1 -1
- data/lib/ruby_jard/templates/screen_template.rb +3 -4
- data/lib/ruby_jard/version.rb +1 -1
- data/ruby_jard.gemspec +1 -1
- metadata +38 -9
- data/lib/ruby_jard/commands/color_scheme_command.rb +0 -42
- data/lib/ruby_jard/layouts/narrow_layout.rb +0 -41
- data/lib/ruby_jard/screens/empty_screen.rb +0 -13
@@ -1,7 +1,9 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module RubyJard
|
4
|
-
|
4
|
+
class Screens
|
5
|
+
##
|
6
|
+
# Display the relevant variables and constants of current context, scopes
|
5
7
|
class VariablesScreen < RubyJard::Screen
|
6
8
|
TYPE_SYMBOLS = {
|
7
9
|
# Intertal classes for those values may differ between Ruby versions
|
@@ -24,12 +26,21 @@ module RubyJard
|
|
24
26
|
DEFAULT_TYPE_SYMBOL = :var
|
25
27
|
|
26
28
|
KINDS = [
|
27
|
-
KIND_LOC
|
28
|
-
KIND_INS
|
29
|
-
KIND_CON
|
29
|
+
KIND_LOC = :local_variable,
|
30
|
+
KIND_INS = :instance_variable,
|
31
|
+
KIND_CON = :constant,
|
32
|
+
KIND_SELF = :self
|
30
33
|
].freeze
|
31
34
|
|
35
|
+
KIND_STYLES = {
|
36
|
+
KIND_LOC => :local_variable,
|
37
|
+
KIND_INS => :instance_variable,
|
38
|
+
KIND_CON => :constant,
|
39
|
+
KIND_SELF => :constant
|
40
|
+
}.freeze
|
41
|
+
|
32
42
|
KIND_PRIORITIES = {
|
43
|
+
KIND_SELF => 0,
|
33
44
|
KIND_LOC => 1,
|
34
45
|
KIND_INS => 2,
|
35
46
|
KIND_CON => 3
|
@@ -47,7 +58,11 @@ module RubyJard
|
|
47
58
|
end
|
48
59
|
|
49
60
|
def build
|
50
|
-
variables =
|
61
|
+
variables =
|
62
|
+
self_variable +
|
63
|
+
fetch_local_variables +
|
64
|
+
fetch_instance_variables +
|
65
|
+
fetch_constants
|
51
66
|
variables = sort_variables(variables)
|
52
67
|
@rows = variables.map do |variable|
|
53
68
|
RubyJard::Row.new(
|
@@ -90,7 +105,7 @@ module RubyJard
|
|
90
105
|
RubyJard::Span.new(
|
91
106
|
margin_right: 1,
|
92
107
|
content: variable[1].to_s,
|
93
|
-
styles: variable[0].to_sym
|
108
|
+
styles: KIND_STYLES[variable[0].to_sym]
|
94
109
|
)
|
95
110
|
end
|
96
111
|
|
@@ -112,8 +127,15 @@ module RubyJard
|
|
112
127
|
end
|
113
128
|
|
114
129
|
def span_inspection(variable)
|
130
|
+
inspection =
|
131
|
+
case variable[0]
|
132
|
+
when KIND_SELF
|
133
|
+
variable[2].to_s
|
134
|
+
else
|
135
|
+
variable[2].inspect
|
136
|
+
end
|
115
137
|
# Hard limit: screen area
|
116
|
-
inspection =
|
138
|
+
inspection = inspection[0..@layout.height * @layout.width]
|
117
139
|
# TODO: This is just a workable. Should write a decorator to inspect objects accurately
|
118
140
|
["\n", "\r", "\r\n"].each do |esc|
|
119
141
|
inspection.gsub!(esc, esc.inspect)
|
@@ -122,46 +144,35 @@ module RubyJard
|
|
122
144
|
content: inspection,
|
123
145
|
styles: :variable_inspection
|
124
146
|
)
|
147
|
+
rescue StandardError
|
148
|
+
RubyJard::Span.new(
|
149
|
+
content: '<Fail to inspect>',
|
150
|
+
styles: :variable_inspection
|
151
|
+
)
|
125
152
|
end
|
126
153
|
|
127
154
|
private
|
128
155
|
|
129
|
-
def current_binding
|
130
|
-
RubyJard.current_session.frame._binding
|
131
|
-
end
|
132
|
-
|
133
|
-
def current_frame
|
134
|
-
RubyJard.current_session.frame
|
135
|
-
end
|
136
|
-
|
137
|
-
def current_frame_scope
|
138
|
-
RubyJard.current_session.backtrace[RubyJard.current_session.frame.pos][1]
|
139
|
-
end
|
140
|
-
|
141
|
-
def current_frame_scope_class
|
142
|
-
RubyJard.current_session.backtrace[RubyJard.current_session.frame.pos][2]
|
143
|
-
end
|
144
|
-
|
145
156
|
def fetch_local_variables
|
146
|
-
variables =
|
157
|
+
variables = @session.current_frame.frame_binding.local_variables
|
147
158
|
# Exclude Pry's sticky locals
|
148
159
|
pry_sticky_locals =
|
149
160
|
if variables.include?(:pry_instance)
|
150
|
-
|
161
|
+
@session.current_frame.frame_binding.local_variable_get(:pry_instance).sticky_locals.keys
|
151
162
|
else
|
152
163
|
[]
|
153
164
|
end
|
154
165
|
variables -= pry_sticky_locals
|
155
166
|
variables.map do |variable|
|
156
|
-
[KIND_LOC, variable,
|
167
|
+
[KIND_LOC, variable, @session.current_frame.frame_binding.local_variable_get(variable)]
|
157
168
|
rescue NameError
|
158
169
|
nil
|
159
170
|
end.compact
|
160
171
|
end
|
161
172
|
|
162
173
|
def fetch_instance_variables
|
163
|
-
|
164
|
-
[KIND_INS, variable,
|
174
|
+
@session.current_frame.frame_self.instance_variables.map do |variable|
|
175
|
+
[KIND_INS, variable, @session.current_frame.frame_self.instance_variable_get(variable)]
|
165
176
|
rescue NameError
|
166
177
|
nil
|
167
178
|
end.compact
|
@@ -170,13 +181,14 @@ module RubyJard
|
|
170
181
|
def fetch_constants
|
171
182
|
# Filter out truly constants (CONSTANT convention) only
|
172
183
|
constant_source =
|
173
|
-
if
|
174
|
-
|
184
|
+
if @session.current_frame.frame_class&.singleton_class?
|
185
|
+
@session.current_frame.frame_self
|
175
186
|
else
|
176
|
-
|
187
|
+
@session.current_frame.frame_class
|
177
188
|
end
|
178
189
|
|
179
190
|
return [] unless constant_source.respond_to?(:constants)
|
191
|
+
return [] if toplevel_binding?
|
180
192
|
|
181
193
|
constants = constant_source.constants.select { |v| v.to_s.upcase == v.to_s }
|
182
194
|
constants.map do |variable|
|
@@ -188,6 +200,18 @@ module RubyJard
|
|
188
200
|
end.compact
|
189
201
|
end
|
190
202
|
|
203
|
+
def toplevel_binding?
|
204
|
+
@session.current_frame.frame_self == TOPLEVEL_BINDING.receiver
|
205
|
+
rescue StandardError
|
206
|
+
false
|
207
|
+
end
|
208
|
+
|
209
|
+
def self_variable
|
210
|
+
[[KIND_SELF, :self, @session.current_frame.frame_self]]
|
211
|
+
rescue StandardError
|
212
|
+
[]
|
213
|
+
end
|
214
|
+
|
191
215
|
def sort_variables(variables)
|
192
216
|
# Sort by kind
|
193
217
|
# Sort by "internal" character so that internal variable is pushed down
|
@@ -219,8 +243,8 @@ module RubyJard
|
|
219
243
|
def inline_tokens
|
220
244
|
return @inline_tokens if defined?(@inline_tokens)
|
221
245
|
|
222
|
-
current_file =
|
223
|
-
current_line =
|
246
|
+
current_file = @session.current_frame.frame_file
|
247
|
+
current_line = @session.current_frame.frame_line
|
224
248
|
source_decorator = RubyJard::Decorators::SourceDecorator.new(current_file, current_line, 1)
|
225
249
|
_spans, tokens = loc_decorator.decorate(
|
226
250
|
source_decorator.codes[current_line - source_decorator.window_start],
|
@@ -237,6 +261,7 @@ module RubyJard
|
|
237
261
|
|
238
262
|
@inline_tokens
|
239
263
|
end
|
264
|
+
|
240
265
|
def loc_decorator
|
241
266
|
@loc_decorator ||= RubyJard::Decorators::LocDecorator.new
|
242
267
|
end
|
@@ -244,4 +269,4 @@ module RubyJard
|
|
244
269
|
end
|
245
270
|
end
|
246
271
|
|
247
|
-
RubyJard::Screens.add_screen(
|
272
|
+
RubyJard::Screens.add_screen('variables', RubyJard::Screens::VariablesScreen)
|
data/lib/ruby_jard/session.rb
CHANGED
@@ -11,17 +11,16 @@ module RubyJard
|
|
11
11
|
# other processes. Therefore, an internal, jard-specific data mapping should
|
12
12
|
# be built.
|
13
13
|
class Session
|
14
|
-
|
14
|
+
attr_accessor :threads, :current_frame, :current_backtrace
|
15
15
|
|
16
16
|
def initialize(options = {})
|
17
17
|
@options = options
|
18
|
-
|
19
|
-
@backtrace = []
|
20
|
-
@frame = nil
|
21
|
-
@contexts = []
|
22
|
-
|
23
18
|
@started = false
|
24
19
|
@session_lock = Mutex.new
|
20
|
+
|
21
|
+
@current_frame = nil
|
22
|
+
@current_backtrace = []
|
23
|
+
@threads = []
|
25
24
|
end
|
26
25
|
|
27
26
|
def start
|
@@ -54,13 +53,23 @@ module RubyJard
|
|
54
53
|
start unless started?
|
55
54
|
|
56
55
|
Byebug.attach
|
57
|
-
Byebug.current_context.step_out(
|
56
|
+
Byebug.current_context.step_out(3, true)
|
58
57
|
end
|
59
58
|
|
60
59
|
def update
|
61
|
-
|
62
|
-
@
|
63
|
-
@
|
60
|
+
current_context = Byebug.current_context
|
61
|
+
@current_frame = RubyJard::Frame.new(current_context, current_context.frame.pos)
|
62
|
+
@current_backtrace = current_context.backtrace.map.with_index do |_frame, index|
|
63
|
+
RubyJard::Frame.new(current_context, index)
|
64
|
+
end
|
65
|
+
@threads =
|
66
|
+
Byebug
|
67
|
+
.contexts
|
68
|
+
.reject(&:ignored?)
|
69
|
+
.reject { |c| c.thread.name.to_s =~ /<<Jard:.*>>/ }
|
70
|
+
.map do |context|
|
71
|
+
RubyJard::Frame.new(context, 0)
|
72
|
+
end
|
64
73
|
end
|
65
74
|
|
66
75
|
def lock
|
data/lib/ruby_jard/span.rb
CHANGED
@@ -9,7 +9,7 @@ module RubyJard
|
|
9
9
|
attr_reader :screen, :row_template, :height_ratio, :width_ratio,
|
10
10
|
:min_width, :min_height,
|
11
11
|
:height, :width,
|
12
|
-
:
|
12
|
+
:adjust_mode
|
13
13
|
|
14
14
|
def initialize(
|
15
15
|
screen: nil,
|
@@ -17,7 +17,7 @@ module RubyJard
|
|
17
17
|
height_ratio: nil, width_ratio: nil,
|
18
18
|
min_width: nil, min_height: nil,
|
19
19
|
height: nil, width: nil,
|
20
|
-
|
20
|
+
adjust_mode: nil
|
21
21
|
)
|
22
22
|
@screen = screen
|
23
23
|
@row_template = row_template
|
@@ -27,8 +27,7 @@ module RubyJard
|
|
27
27
|
@min_height = min_height
|
28
28
|
@height = height
|
29
29
|
@width = width
|
30
|
-
@
|
31
|
-
@fill_height = fill_height
|
30
|
+
@adjust_mode = adjust_mode
|
32
31
|
end
|
33
32
|
end
|
34
33
|
end
|
data/lib/ruby_jard/version.rb
CHANGED
data/ruby_jard.gemspec
CHANGED
@@ -30,7 +30,7 @@ Gem::Specification.new do |spec|
|
|
30
30
|
spec.executables = []
|
31
31
|
spec.require_paths = ['lib']
|
32
32
|
|
33
|
-
spec.add_runtime_dependency 'byebug', '
|
33
|
+
spec.add_runtime_dependency 'byebug', '>= 9.1', '< 12.0'
|
34
34
|
spec.add_runtime_dependency 'pry', '~> 0.13.0'
|
35
35
|
spec.add_runtime_dependency 'tty-screen', '~> 0.8.1'
|
36
36
|
end
|
metadata
CHANGED
@@ -1,29 +1,35 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby_jard
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.3
|
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-08-
|
11
|
+
date: 2020-08-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: byebug
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '9.1'
|
20
|
+
- - "<"
|
18
21
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
22
|
+
version: '12.0'
|
20
23
|
type: :runtime
|
21
24
|
prerelease: false
|
22
25
|
version_requirements: !ruby/object:Gem::Requirement
|
23
26
|
requirements:
|
24
|
-
- - "
|
27
|
+
- - ">="
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '9.1'
|
30
|
+
- - "<"
|
25
31
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
32
|
+
version: '12.0'
|
27
33
|
- !ruby/object:Gem::Dependency
|
28
34
|
name: pry
|
29
35
|
requirement: !ruby/object:Gem::Requirement
|
@@ -61,6 +67,9 @@ executables: []
|
|
61
67
|
extensions: []
|
62
68
|
extra_rdoc_files: []
|
63
69
|
files:
|
70
|
+
- ".github/ISSUE_TEMPLATE/bug_report.md"
|
71
|
+
- ".github/ISSUE_TEMPLATE/feature_request.md"
|
72
|
+
- ".github/workflows/ruby.yml"
|
64
73
|
- ".gitignore"
|
65
74
|
- ".rspec"
|
66
75
|
- ".rubocop.yml"
|
@@ -75,8 +84,12 @@ files:
|
|
75
84
|
- _config.yml
|
76
85
|
- bin/console
|
77
86
|
- docs/_config.yml
|
87
|
+
- docs/color_schemes/256-light.png
|
78
88
|
- docs/color_schemes/256.png
|
79
89
|
- docs/color_schemes/deep-space.png
|
90
|
+
- docs/color_schemes/gruvbox.png
|
91
|
+
- docs/color_schemes/one-half-dark.png
|
92
|
+
- docs/color_schemes/one-half-light.png
|
80
93
|
- docs/demo.png
|
81
94
|
- docs/guide-ui.png
|
82
95
|
- docs/index.md
|
@@ -102,17 +115,27 @@ files:
|
|
102
115
|
- lib/ruby_jard/color_scheme.rb
|
103
116
|
- lib/ruby_jard/color_schemes.rb
|
104
117
|
- lib/ruby_jard/color_schemes/256_color_scheme.rb
|
118
|
+
- lib/ruby_jard/color_schemes/256_light_color_scheme.rb
|
105
119
|
- lib/ruby_jard/color_schemes/deep_space_color_scheme.rb
|
120
|
+
- lib/ruby_jard/color_schemes/gruvbox_color_scheme.rb
|
121
|
+
- lib/ruby_jard/color_schemes/one_half_dark_color_scheme.rb
|
122
|
+
- lib/ruby_jard/color_schemes/one_half_light_color_scheme.rb
|
106
123
|
- lib/ruby_jard/column.rb
|
107
|
-
- lib/ruby_jard/commands/color_scheme_command.rb
|
108
124
|
- lib/ruby_jard/commands/continue_command.rb
|
109
125
|
- lib/ruby_jard/commands/down_command.rb
|
126
|
+
- lib/ruby_jard/commands/exit_command.rb
|
110
127
|
- lib/ruby_jard/commands/frame_command.rb
|
128
|
+
- lib/ruby_jard/commands/jard/color_scheme_command.rb
|
129
|
+
- lib/ruby_jard/commands/jard/hide_command.rb
|
130
|
+
- lib/ruby_jard/commands/jard/output_command.rb
|
131
|
+
- lib/ruby_jard/commands/jard/show_command.rb
|
132
|
+
- lib/ruby_jard/commands/jard_command.rb
|
111
133
|
- lib/ruby_jard/commands/list_command.rb
|
112
134
|
- lib/ruby_jard/commands/next_command.rb
|
113
135
|
- lib/ruby_jard/commands/step_command.rb
|
114
136
|
- lib/ruby_jard/commands/step_out_command.rb
|
115
137
|
- lib/ruby_jard/commands/up_command.rb
|
138
|
+
- lib/ruby_jard/commands/validation_helpers.rb
|
116
139
|
- lib/ruby_jard/config.rb
|
117
140
|
- lib/ruby_jard/console.rb
|
118
141
|
- lib/ruby_jard/control_flow.rb
|
@@ -121,24 +144,30 @@ files:
|
|
121
144
|
- lib/ruby_jard/decorators/loc_decorator.rb
|
122
145
|
- lib/ruby_jard/decorators/path_decorator.rb
|
123
146
|
- lib/ruby_jard/decorators/source_decorator.rb
|
147
|
+
- lib/ruby_jard/frame.rb
|
124
148
|
- lib/ruby_jard/key_binding.rb
|
125
149
|
- lib/ruby_jard/key_bindings.rb
|
126
150
|
- lib/ruby_jard/keys.rb
|
127
151
|
- lib/ruby_jard/layout.rb
|
128
152
|
- lib/ruby_jard/layout_calculator.rb
|
129
|
-
- lib/ruby_jard/
|
153
|
+
- lib/ruby_jard/layout_picker.rb
|
154
|
+
- lib/ruby_jard/layouts.rb
|
155
|
+
- lib/ruby_jard/layouts/narrow_horizontal_layout.rb
|
156
|
+
- lib/ruby_jard/layouts/narrow_vertical_layout.rb
|
157
|
+
- lib/ruby_jard/layouts/tiny_layout.rb
|
130
158
|
- lib/ruby_jard/layouts/wide_layout.rb
|
159
|
+
- lib/ruby_jard/pager.rb
|
131
160
|
- lib/ruby_jard/repl_processor.rb
|
132
161
|
- lib/ruby_jard/repl_proxy.rb
|
133
162
|
- lib/ruby_jard/row.rb
|
134
163
|
- lib/ruby_jard/row_renderer.rb
|
135
164
|
- lib/ruby_jard/screen.rb
|
165
|
+
- lib/ruby_jard/screen_adjuster.rb
|
136
166
|
- lib/ruby_jard/screen_drawer.rb
|
137
167
|
- lib/ruby_jard/screen_manager.rb
|
138
168
|
- lib/ruby_jard/screen_renderer.rb
|
139
169
|
- lib/ruby_jard/screens.rb
|
140
170
|
- lib/ruby_jard/screens/backtrace_screen.rb
|
141
|
-
- lib/ruby_jard/screens/empty_screen.rb
|
142
171
|
- lib/ruby_jard/screens/menu_screen.rb
|
143
172
|
- lib/ruby_jard/screens/source_screen.rb
|
144
173
|
- lib/ruby_jard/screens/threads_screen.rb
|
@@ -1,42 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module RubyJard
|
4
|
-
module Commands
|
5
|
-
# Command used to explore stacktrace.
|
6
|
-
class ColorSchemeCommand < Pry::ClassCommand
|
7
|
-
group 'RubyJard'
|
8
|
-
description 'Control the color scheme used in Jard'
|
9
|
-
|
10
|
-
match 'color-scheme'
|
11
|
-
|
12
|
-
banner <<-BANNER
|
13
|
-
Usage: color-scheme -l
|
14
|
-
color-scheme [scheme-name]
|
15
|
-
BANNER
|
16
|
-
|
17
|
-
def options(opt)
|
18
|
-
opt.on :l, :list, "List all available color schemes"
|
19
|
-
end
|
20
|
-
|
21
|
-
def process
|
22
|
-
if opts[:l]
|
23
|
-
if args.length != 0
|
24
|
-
raise Pry::CommandError, "Color scheme list command shouldn't have any argument."
|
25
|
-
end
|
26
|
-
pry_instance.pager.page RubyJard::ColorSchemes.names.join("\n")
|
27
|
-
else
|
28
|
-
color_scheme = args.first.to_s.strip
|
29
|
-
if color_scheme.empty?
|
30
|
-
raise Pry::CommandError, "You must provide a color scheme name."
|
31
|
-
end
|
32
|
-
if RubyJard::ColorSchemes[color_scheme].nil?
|
33
|
-
raise Pry::CommandError, "Color scheme `#{color_scheme}` not found. Please use `color-scheme -l` to list all color schemes."
|
34
|
-
end
|
35
|
-
RubyJard::ControlFlow.dispatch(:color_scheme, color_scheme: color_scheme)
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
Pry::Commands.add_command(RubyJard::Commands::ColorSchemeCommand)
|