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.
- checksums.yaml +4 -4
- data/.github/FUNDING.yml +3 -0
- data/.github/ISSUE_TEMPLATE/bug_report.md +32 -0
- data/.github/ISSUE_TEMPLATE/feature_request.md +20 -0
- data/.github/workflows/documentation.yml +65 -0
- data/.github/workflows/rspec.yml +96 -0
- data/.gitignore +1 -0
- data/.rubocop.yml +90 -2
- data/CHANGELOG.md +112 -0
- data/Gemfile +14 -4
- data/README.md +95 -3
- data/benchmark/path_filter_bench.rb +58 -0
- data/bin/console +1 -2
- data/lib/ruby_jard.rb +68 -32
- data/lib/ruby_jard/box_drawer.rb +175 -0
- data/lib/ruby_jard/color_scheme.rb +28 -0
- data/lib/ruby_jard/color_schemes.rb +54 -0
- data/lib/ruby_jard/color_schemes/256_color_scheme.rb +50 -0
- data/lib/ruby_jard/color_schemes/256_light_color_scheme.rb +50 -0
- data/lib/ruby_jard/color_schemes/deep_space_color_scheme.rb +49 -0
- data/lib/ruby_jard/color_schemes/gruvbox_color_scheme.rb +48 -0
- data/lib/ruby_jard/color_schemes/one_half_dark_color_scheme.rb +47 -0
- data/lib/ruby_jard/color_schemes/one_half_light_color_scheme.rb +49 -0
- data/lib/ruby_jard/column.rb +26 -0
- data/lib/ruby_jard/commands/color_helpers.rb +32 -0
- data/lib/ruby_jard/commands/continue_command.rb +4 -9
- data/lib/ruby_jard/commands/down_command.rb +9 -8
- data/lib/ruby_jard/commands/exit_command.rb +27 -0
- data/lib/ruby_jard/commands/frame_command.rb +13 -11
- data/lib/ruby_jard/commands/jard/color_scheme_command.rb +74 -0
- data/lib/ruby_jard/commands/jard/filter_command.rb +136 -0
- data/lib/ruby_jard/commands/jard/hide_command.rb +40 -0
- data/lib/ruby_jard/commands/jard/output_command.rb +36 -0
- data/lib/ruby_jard/commands/jard/show_command.rb +41 -0
- data/lib/ruby_jard/commands/jard_command.rb +52 -0
- data/lib/ruby_jard/commands/list_command.rb +31 -0
- data/lib/ruby_jard/commands/next_command.rb +11 -8
- data/lib/ruby_jard/commands/step_command.rb +11 -8
- data/lib/ruby_jard/commands/step_out_command.rb +34 -0
- data/lib/ruby_jard/commands/up_command.rb +10 -8
- data/lib/ruby_jard/commands/validation_helpers.rb +50 -0
- data/lib/ruby_jard/config.rb +61 -0
- data/lib/ruby_jard/console.rb +158 -0
- data/lib/ruby_jard/control_flow.rb +73 -0
- data/lib/ruby_jard/decorators/array_decorator.rb +79 -0
- data/lib/ruby_jard/decorators/attributes_decorator.rb +172 -0
- data/lib/ruby_jard/decorators/color_decorator.rb +80 -0
- data/lib/ruby_jard/decorators/hash_decorator.rb +74 -0
- data/lib/ruby_jard/decorators/inspection_decorator.rb +109 -0
- data/lib/ruby_jard/decorators/loc_decorator.rb +108 -119
- data/lib/ruby_jard/decorators/object_decorator.rb +122 -0
- data/lib/ruby_jard/decorators/path_decorator.rb +56 -60
- data/lib/ruby_jard/decorators/rails_decorator.rb +194 -0
- data/lib/ruby_jard/decorators/source_decorator.rb +3 -1
- data/lib/ruby_jard/decorators/string_decorator.rb +41 -0
- data/lib/ruby_jard/decorators/struct_decorator.rb +79 -0
- data/lib/ruby_jard/frame.rb +68 -0
- data/lib/ruby_jard/key_binding.rb +14 -0
- data/lib/ruby_jard/key_bindings.rb +96 -0
- data/lib/ruby_jard/keys.rb +48 -0
- data/lib/ruby_jard/layout.rb +17 -88
- data/lib/ruby_jard/layout_calculator.rb +168 -0
- 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 +32 -0
- data/lib/ruby_jard/layouts/narrow_vertical_layout.rb +32 -0
- data/lib/ruby_jard/layouts/tiny_layout.rb +29 -0
- data/lib/ruby_jard/layouts/wide_layout.rb +50 -0
- data/lib/ruby_jard/pager.rb +112 -0
- data/lib/ruby_jard/path_classifier.rb +133 -0
- data/lib/ruby_jard/path_filter.rb +125 -0
- data/lib/ruby_jard/reflection.rb +97 -0
- data/lib/ruby_jard/repl_processor.rb +151 -89
- data/lib/ruby_jard/repl_proxy.rb +337 -0
- data/lib/ruby_jard/row.rb +31 -0
- data/lib/ruby_jard/row_renderer.rb +119 -0
- data/lib/ruby_jard/screen.rb +14 -41
- data/lib/ruby_jard/screen_adjuster.rb +104 -0
- data/lib/ruby_jard/screen_drawer.rb +25 -0
- data/lib/ruby_jard/screen_manager.rb +167 -82
- data/lib/ruby_jard/screen_renderer.rb +152 -0
- data/lib/ruby_jard/screens.rb +31 -12
- data/lib/ruby_jard/screens/backtrace_screen.rb +118 -116
- data/lib/ruby_jard/screens/menu_screen.rb +73 -45
- data/lib/ruby_jard/screens/source_screen.rb +86 -106
- data/lib/ruby_jard/screens/threads_screen.rb +103 -78
- data/lib/ruby_jard/screens/variables_screen.rb +224 -142
- data/lib/ruby_jard/session.rb +151 -16
- data/lib/ruby_jard/span.rb +23 -0
- data/lib/ruby_jard/templates/layout_template.rb +35 -0
- data/lib/ruby_jard/templates/screen_template.rb +34 -0
- data/lib/ruby_jard/thread_info.rb +69 -0
- data/lib/ruby_jard/version.rb +1 -1
- data/ruby_jard.gemspec +7 -8
- metadata +84 -50
- data/.travis.yml +0 -6
- data/lib/ruby_jard/commands/finish_command.rb +0 -31
- data/lib/ruby_jard/decorators/text_decorator.rb +0 -61
- data/lib/ruby_jard/layout_template.rb +0 -101
- data/lib/ruby_jard/screens/breakpoints_screen.rb +0 -23
- data/lib/ruby_jard/screens/empty_screen.rb +0 -13
- data/lib/ruby_jard/screens/expressions_sreen.rb +0 -22
@@ -0,0 +1,28 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module RubyJard
|
4
|
+
##
|
5
|
+
# Abstract class of all color scheme.
|
6
|
+
class ColorScheme
|
7
|
+
def initialize(styles: self.class.const_get(:STYLES))
|
8
|
+
@styles = {}
|
9
|
+
styles.each do |element, element_styles|
|
10
|
+
update(element, element_styles)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
##
|
15
|
+
# Fetch the styles for a particular element defined in the scheme.
|
16
|
+
# This method returns an array of two or more elements:
|
17
|
+
# - First element is foreground color
|
18
|
+
# - Second element is background color
|
19
|
+
# - The rest is decorating items, such as underline, italic
|
20
|
+
def styles_for(element)
|
21
|
+
@styles[element].dup
|
22
|
+
end
|
23
|
+
|
24
|
+
def update(element, styles)
|
25
|
+
@styles[element] = styles
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'ruby_jard/color_scheme'
|
4
|
+
|
5
|
+
module RubyJard
|
6
|
+
##
|
7
|
+
# Color scheme registry.
|
8
|
+
class ColorSchemes
|
9
|
+
class << self
|
10
|
+
extend Forwardable
|
11
|
+
def_delegators :instance, :add_color_scheme, :[], :get, :names, :each, :length
|
12
|
+
|
13
|
+
def instance
|
14
|
+
@instance ||= new
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def initialize
|
19
|
+
@color_scheme_registry = {}
|
20
|
+
end
|
21
|
+
|
22
|
+
def add_color_scheme(name, color_scheme_class)
|
23
|
+
unless color_scheme_class < RubyJard::ColorScheme
|
24
|
+
raise RubyJard::Error, "#{color_scheme_class} must implement, and inherit from #{RubyJard::ColorScheme}"
|
25
|
+
end
|
26
|
+
|
27
|
+
@color_scheme_registry[name] = color_scheme_class
|
28
|
+
end
|
29
|
+
|
30
|
+
def [](name)
|
31
|
+
@color_scheme_registry[name.to_s.strip]
|
32
|
+
end
|
33
|
+
alias_method :get, :[]
|
34
|
+
|
35
|
+
def names
|
36
|
+
@color_scheme_registry.keys.sort.dup
|
37
|
+
end
|
38
|
+
|
39
|
+
def length
|
40
|
+
@color_scheme_registry.length
|
41
|
+
end
|
42
|
+
|
43
|
+
def each(&block)
|
44
|
+
@color_scheme_registry.each(&block)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
require 'ruby_jard/color_schemes/deep_space_color_scheme'
|
50
|
+
require 'ruby_jard/color_schemes/256_color_scheme'
|
51
|
+
require 'ruby_jard/color_schemes/256_light_color_scheme'
|
52
|
+
require 'ruby_jard/color_schemes/gruvbox_color_scheme'
|
53
|
+
require 'ruby_jard/color_schemes/one_half_dark_color_scheme'
|
54
|
+
require 'ruby_jard/color_schemes/one_half_light_color_scheme'
|
@@ -0,0 +1,50 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module RubyJard
|
4
|
+
class ColorSchemes
|
5
|
+
class X256ColorScheme < ColorScheme
|
6
|
+
# Basic 256 colors that nearly all terminal supports. Just for backward-compatibility
|
7
|
+
# https://en.wikipedia.org/wiki/ANSI_escape_code
|
8
|
+
GRAY1 = '234'
|
9
|
+
GRAY2 = '237'
|
10
|
+
GRAY3 = '239'
|
11
|
+
GRAY4 = '245'
|
12
|
+
GRAY5 = '249'
|
13
|
+
WHITE = '15'
|
14
|
+
RED = '167'
|
15
|
+
GREEN = '42'
|
16
|
+
YELLOW = '184'
|
17
|
+
BLUE = '75'
|
18
|
+
PURPLE = '177'
|
19
|
+
CYAN = '50'
|
20
|
+
ORANGE = '208'
|
21
|
+
PINK = '206'
|
22
|
+
|
23
|
+
BACKGROUND = nil
|
24
|
+
STYLES = {
|
25
|
+
background: [WHITE, BACKGROUND],
|
26
|
+
border: [GRAY2, BACKGROUND],
|
27
|
+
title: [GRAY1, BLUE],
|
28
|
+
title_secondary: [WHITE, GRAY3],
|
29
|
+
title_background: [GRAY2, GRAY2],
|
30
|
+
text_primary: [GRAY5, BACKGROUND],
|
31
|
+
text_dim: [GRAY4, BACKGROUND],
|
32
|
+
text_highlighted: [BLUE, BACKGROUND],
|
33
|
+
text_special: [ORANGE, BACKGROUND],
|
34
|
+
text_selected: [GREEN, BACKGROUND],
|
35
|
+
keyword: [BLUE, BACKGROUND],
|
36
|
+
method: [YELLOW, BACKGROUND],
|
37
|
+
comment: [GRAY4, BACKGROUND],
|
38
|
+
literal: [RED, BACKGROUND],
|
39
|
+
string: [GREEN, BACKGROUND],
|
40
|
+
local_variable: [PURPLE, BACKGROUND],
|
41
|
+
instance_variable: [PURPLE, BACKGROUND],
|
42
|
+
constant: [BLUE, BACKGROUND],
|
43
|
+
normal_token: [GRAY5, BACKGROUND],
|
44
|
+
object: [CYAN, BACKGROUND]
|
45
|
+
}.freeze
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
RubyJard::ColorSchemes.add_color_scheme('256', RubyJard::ColorSchemes::X256ColorScheme)
|
@@ -0,0 +1,50 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module RubyJard
|
4
|
+
class ColorSchemes
|
5
|
+
class X256LightColorScheme < ColorScheme
|
6
|
+
# Shameless copy from https://github.com/sonph/onehalf/blob/master/vim/colors/onehalflight.vim
|
7
|
+
GRAY1 = '237'
|
8
|
+
GRAY2 = '252'
|
9
|
+
GRAY3 = '247'
|
10
|
+
GRAY4 = '247'
|
11
|
+
GRAY5 = '237'
|
12
|
+
|
13
|
+
WHITE = '231'
|
14
|
+
RED = '167'
|
15
|
+
GREEN = '22'
|
16
|
+
YELLOW = '136'
|
17
|
+
BLUE = '31'
|
18
|
+
PURPLE = '127'
|
19
|
+
CYAN = '31'
|
20
|
+
|
21
|
+
BACKGROUND = WHITE
|
22
|
+
STYLES = {
|
23
|
+
background: [GRAY5, BACKGROUND],
|
24
|
+
border: [GRAY3, BACKGROUND],
|
25
|
+
title: [WHITE, GREEN],
|
26
|
+
title_secondary: [GRAY5, GRAY2],
|
27
|
+
title_background: [GRAY3, BACKGROUND],
|
28
|
+
source_line_mark: [YELLOW, BACKGROUND],
|
29
|
+
source_lineno: [GRAY4, BACKGROUND],
|
30
|
+
text_primary: [GRAY5, BACKGROUND],
|
31
|
+
text_dim: [GRAY5, BACKGROUND],
|
32
|
+
text_highlighted: [BLUE, BACKGROUND],
|
33
|
+
text_special: [RED, BACKGROUND],
|
34
|
+
text_selected: [GREEN, BACKGROUND],
|
35
|
+
keyword: [PURPLE, BACKGROUND],
|
36
|
+
method: [BLUE, BACKGROUND],
|
37
|
+
comment: [GRAY4, BACKGROUND],
|
38
|
+
literal: [YELLOW, BACKGROUND],
|
39
|
+
string: [GREEN, BACKGROUND],
|
40
|
+
local_variable: [RED, BACKGROUND],
|
41
|
+
instance_variable: [RED, BACKGROUND],
|
42
|
+
constant: [YELLOW, BACKGROUND],
|
43
|
+
normal_token: [GRAY5, BACKGROUND],
|
44
|
+
object: [YELLOW, BACKGROUND]
|
45
|
+
}.freeze
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
RubyJard::ColorSchemes.add_color_scheme('256-light', RubyJard::ColorSchemes::X256LightColorScheme)
|
@@ -0,0 +1,49 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module RubyJard
|
4
|
+
class ColorSchemes
|
5
|
+
class DeepSpaceColorScheme < ColorScheme
|
6
|
+
# Shameless copy from https://github.com/tyrannicaltoucan/vim-deep-space/blob/master/colors/deep-space.vim
|
7
|
+
GRAY1 = '#1b202a'
|
8
|
+
GRAY2 = '#232936'
|
9
|
+
GRAY3 = '#323c4d'
|
10
|
+
GRAY4 = '#51617d'
|
11
|
+
GRAY5 = '#9aa7bd'
|
12
|
+
WHITE = '#fff'
|
13
|
+
RED = '#b15e7c'
|
14
|
+
GREEN = '#80b57b'
|
15
|
+
YELLOW = '#e8cb6b'
|
16
|
+
BLUE = '#78b5ff'
|
17
|
+
PURPLE = '#b08aed'
|
18
|
+
CYAN = '#56adb7'
|
19
|
+
ORANGE = '#f28d5e'
|
20
|
+
PINK = '#c47ebd'
|
21
|
+
|
22
|
+
BACKGROUND = GRAY1
|
23
|
+
STYLES = {
|
24
|
+
background: [WHITE, BACKGROUND],
|
25
|
+
border: [GRAY3, BACKGROUND],
|
26
|
+
title: [GRAY2, BLUE],
|
27
|
+
title_secondary: [WHITE, GRAY3],
|
28
|
+
title_background: [GRAY2, GRAY2],
|
29
|
+
text_primary: [GRAY5, BACKGROUND],
|
30
|
+
text_dim: [GRAY4, BACKGROUND],
|
31
|
+
text_highlighted: [BLUE, BACKGROUND],
|
32
|
+
text_special: [ORANGE, BACKGROUND],
|
33
|
+
text_selected: [GREEN, BACKGROUND],
|
34
|
+
keyword: [BLUE, BACKGROUND],
|
35
|
+
method: [YELLOW, BACKGROUND],
|
36
|
+
comment: [GRAY4, BACKGROUND],
|
37
|
+
literal: [RED, BACKGROUND],
|
38
|
+
string: [GREEN, BACKGROUND],
|
39
|
+
local_variable: [PURPLE, BACKGROUND],
|
40
|
+
instance_variable: [PURPLE, BACKGROUND],
|
41
|
+
constant: [BLUE, BACKGROUND],
|
42
|
+
normal_token: [GRAY5, BACKGROUND],
|
43
|
+
object: [CYAN, BACKGROUND]
|
44
|
+
}.freeze
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
RubyJard::ColorSchemes.add_color_scheme('deep-space', RubyJard::ColorSchemes::DeepSpaceColorScheme)
|
@@ -0,0 +1,48 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module RubyJard
|
4
|
+
class ColorSchemes
|
5
|
+
class GruvboxColorScheme < ColorScheme
|
6
|
+
# Shameless copy from https://github.com/morhetz/gruvbox
|
7
|
+
GRAY1 = '#282828'
|
8
|
+
GRAY2 = '#3c3836'
|
9
|
+
GRAY3 = '#504945'
|
10
|
+
GRAY4 = '#d5c4a1'
|
11
|
+
GRAY5 = '#ebdbb2'
|
12
|
+
WHITE = '#f9f5d7'
|
13
|
+
RED = '#fb4934'
|
14
|
+
GREEN = '#b8bb26'
|
15
|
+
YELLOW = '#fabd2f'
|
16
|
+
BLUE = '#83a598'
|
17
|
+
PURPLE = '#d3869b'
|
18
|
+
CYAN = '#8ec07c'
|
19
|
+
ORANGE = '#fe8019'
|
20
|
+
|
21
|
+
BACKGROUND = GRAY1
|
22
|
+
STYLES = {
|
23
|
+
background: [WHITE, BACKGROUND],
|
24
|
+
border: [GRAY3, BACKGROUND],
|
25
|
+
title: [GRAY2, BLUE],
|
26
|
+
title_secondary: [WHITE, GRAY3],
|
27
|
+
title_background: [GRAY2, GRAY2],
|
28
|
+
text_primary: [GRAY5, BACKGROUND],
|
29
|
+
text_dim: [GRAY4, BACKGROUND],
|
30
|
+
text_highlighted: [BLUE, BACKGROUND],
|
31
|
+
text_special: [ORANGE, BACKGROUND],
|
32
|
+
text_selected: [GREEN, BACKGROUND],
|
33
|
+
keyword: [BLUE, BACKGROUND],
|
34
|
+
method: [YELLOW, BACKGROUND],
|
35
|
+
comment: [GRAY4, BACKGROUND],
|
36
|
+
literal: [RED, BACKGROUND],
|
37
|
+
string: [GREEN, BACKGROUND],
|
38
|
+
local_variable: [PURPLE, BACKGROUND],
|
39
|
+
instance_variable: [PURPLE, BACKGROUND],
|
40
|
+
constant: [BLUE, BACKGROUND],
|
41
|
+
normal_token: [GRAY5, BACKGROUND],
|
42
|
+
object: [CYAN, BACKGROUND]
|
43
|
+
}.freeze
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
RubyJard::ColorSchemes.add_color_scheme('gruvbox', RubyJard::ColorSchemes::GruvboxColorScheme)
|
@@ -0,0 +1,47 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module RubyJard
|
4
|
+
class ColorSchemes
|
5
|
+
class OneHalfDarkColorScheme < ColorScheme
|
6
|
+
# Shameless copy from https://github.com/sonph/onehalf/blob/master/vim/colors/onehalfdark.vim
|
7
|
+
GRAY1 = '#282c34'
|
8
|
+
GRAY2 = '#313640'
|
9
|
+
GRAY3 = '#5c6370'
|
10
|
+
GRAY4 = '#dcdfe4'
|
11
|
+
GRAY5 = '#dcdfe4'
|
12
|
+
WHITE = '#dcdfe4'
|
13
|
+
RED = '#e06c75'
|
14
|
+
GREEN = '#98c379'
|
15
|
+
YELLOW = '#e5c07b'
|
16
|
+
BLUE = '#61afef'
|
17
|
+
PURPLE = '#c678dd'
|
18
|
+
CYAN = '#56b6c2'
|
19
|
+
|
20
|
+
BACKGROUND = GRAY1
|
21
|
+
STYLES = {
|
22
|
+
background: [WHITE, BACKGROUND],
|
23
|
+
border: [GRAY3, BACKGROUND],
|
24
|
+
title: [GRAY2, GREEN],
|
25
|
+
title_secondary: [WHITE, GRAY3],
|
26
|
+
title_background: [GRAY2, GRAY2],
|
27
|
+
text_primary: [GRAY5, BACKGROUND],
|
28
|
+
text_dim: [GRAY4, BACKGROUND],
|
29
|
+
text_highlighted: [GREEN, BACKGROUND],
|
30
|
+
text_special: [GREEN, BACKGROUND],
|
31
|
+
text_selected: [YELLOW, BACKGROUND],
|
32
|
+
keyword: [PURPLE, BACKGROUND],
|
33
|
+
method: [BLUE, BACKGROUND],
|
34
|
+
comment: [GRAY4, BACKGROUND],
|
35
|
+
literal: [YELLOW, BACKGROUND],
|
36
|
+
string: [GREEN, BACKGROUND],
|
37
|
+
local_variable: [RED, BACKGROUND],
|
38
|
+
instance_variable: [RED, BACKGROUND],
|
39
|
+
constant: [YELLOW, BACKGROUND],
|
40
|
+
normal_token: [GRAY5, BACKGROUND],
|
41
|
+
object: [YELLOW, BACKGROUND]
|
42
|
+
}.freeze
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
RubyJard::ColorSchemes.add_color_scheme('one-half-dark', RubyJard::ColorSchemes::OneHalfDarkColorScheme)
|
@@ -0,0 +1,49 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module RubyJard
|
4
|
+
class ColorSchemes
|
5
|
+
class OneHalfLightColorScheme < ColorScheme
|
6
|
+
# Shameless copy from https://github.com/sonph/onehalf/blob/master/vim/colors/onehalflight.vim
|
7
|
+
GRAY1 = '#eaeaea'
|
8
|
+
GRAY2 = '#d4d4d4'
|
9
|
+
GRAY3 = '#a0a1a7'
|
10
|
+
GRAY4 = '#a0a1a7'
|
11
|
+
GRAY5 = '#383a42'
|
12
|
+
|
13
|
+
WHITE = '#fafafa'
|
14
|
+
RED = '#e45649'
|
15
|
+
GREEN = '#50a14f'
|
16
|
+
YELLOW = '#c18401'
|
17
|
+
BLUE = '#0184bc'
|
18
|
+
PURPLE = '#a626a4'
|
19
|
+
CYAN = '#0997b3'
|
20
|
+
|
21
|
+
BACKGROUND = WHITE
|
22
|
+
STYLES = {
|
23
|
+
background: [GRAY5, BACKGROUND],
|
24
|
+
border: [GRAY3, BACKGROUND],
|
25
|
+
title: [WHITE, GREEN],
|
26
|
+
title_highlighted: [WHITE, YELLOW],
|
27
|
+
title_secondary: [GRAY5, GRAY2],
|
28
|
+
title_background: [GRAY3, BACKGROUND],
|
29
|
+
text_primary: [GRAY5, BACKGROUND],
|
30
|
+
text_dim: [GRAY4, BACKGROUND],
|
31
|
+
text_highlighted: [BLUE, BACKGROUND],
|
32
|
+
text_special: [RED, BACKGROUND],
|
33
|
+
text_selected: [GREEN, BACKGROUND],
|
34
|
+
keyword: [PURPLE, BACKGROUND],
|
35
|
+
method: [BLUE, BACKGROUND],
|
36
|
+
comment: [GRAY4, BACKGROUND],
|
37
|
+
literal: [YELLOW, BACKGROUND],
|
38
|
+
string: [GREEN, BACKGROUND],
|
39
|
+
local_variable: [RED, BACKGROUND],
|
40
|
+
instance_variable: [RED, BACKGROUND],
|
41
|
+
constant: [YELLOW, BACKGROUND],
|
42
|
+
normal_token: [GRAY5, BACKGROUND],
|
43
|
+
object: [YELLOW, BACKGROUND]
|
44
|
+
}.freeze
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
RubyJard::ColorSchemes.add_color_scheme('one-half-light', RubyJard::ColorSchemes::OneHalfLightColorScheme)
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module RubyJard
|
4
|
+
##
|
5
|
+
# This class is an object to contain information of a column in a data drow display on a screen
|
6
|
+
class Column
|
7
|
+
# Only break at breakable word
|
8
|
+
# | this_is_a <endline> |
|
9
|
+
# | really_long_content |
|
10
|
+
WORD_WRAP_NORMAL = :normal
|
11
|
+
# Break the word, and move the rest to the next line
|
12
|
+
# | this_is_a really_lon|
|
13
|
+
# | g_content |
|
14
|
+
WORD_WRAP_BREAK_WORD = :break_word
|
15
|
+
extend Forwardable
|
16
|
+
|
17
|
+
attr_accessor :spans, :content_length, :width, :content_width, :word_wrap
|
18
|
+
|
19
|
+
def initialize(spans: [], word_wrap: WORD_WRAP_NORMAL)
|
20
|
+
@spans = spans
|
21
|
+
@width = 0
|
22
|
+
@content_length = 0
|
23
|
+
@word_wrap = word_wrap
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module RubyJard
|
4
|
+
module Commands
|
5
|
+
##
|
6
|
+
# Helper to dedocrate command output
|
7
|
+
module ColorHelpers
|
8
|
+
def special(content)
|
9
|
+
color_decorator.decorate(:text_special, content)
|
10
|
+
end
|
11
|
+
|
12
|
+
def secondary(content)
|
13
|
+
color_decorator.decorate(:text_primary, content)
|
14
|
+
end
|
15
|
+
|
16
|
+
def highlight(content)
|
17
|
+
color_decorator.decorate(:text_highlighted, content)
|
18
|
+
end
|
19
|
+
|
20
|
+
def pick_color_scheme
|
21
|
+
(
|
22
|
+
RubyJard::ColorSchemes[RubyJard.config.color_scheme] ||
|
23
|
+
RubyJard::ColorSchemes[RubyJard::Config::DEFAULT_COLOR_SCHEME]
|
24
|
+
).new
|
25
|
+
end
|
26
|
+
|
27
|
+
def color_decorator
|
28
|
+
@color_decorator ||= RubyJard::Decorators::ColorDecorator.new(pick_color_scheme)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -3,9 +3,6 @@
|
|
3
3
|
module RubyJard
|
4
4
|
module Commands
|
5
5
|
# Command used to continue program execution.
|
6
|
-
# Data attached in the throw:
|
7
|
-
# * command: constant symbol (:continue)
|
8
|
-
# * pry: current context pry instance
|
9
6
|
class ContinueCommand < Pry::ClassCommand
|
10
7
|
group 'RubyJard'
|
11
8
|
description 'Continue program execution.'
|
@@ -14,20 +11,18 @@ module RubyJard
|
|
14
11
|
|
15
12
|
banner <<-BANNER
|
16
13
|
Usage: continue
|
17
|
-
|
18
|
-
Continue program execution. The program will stop at the next breakpoint, or run until it finishes.
|
19
|
-
|
20
14
|
Examples:
|
21
15
|
continue
|
16
|
+
|
17
|
+
Continue program execution. The program will stop at the next breakpoint, or run until it finishes.
|
22
18
|
BANNER
|
23
19
|
|
24
20
|
def process
|
25
|
-
|
26
|
-
ensure
|
27
|
-
Byebug.stop if Byebug.stoppable?
|
21
|
+
RubyJard::ControlFlow.dispatch(:continue)
|
28
22
|
end
|
29
23
|
end
|
30
24
|
end
|
31
25
|
end
|
32
26
|
|
33
27
|
Pry::Commands.add_command(RubyJard::Commands::ContinueCommand)
|
28
|
+
Pry::Commands.alias_command 'c', 'continue'
|