byebug 9.1.0 → 10.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (129) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +24 -3
  3. data/CONTRIBUTING.md +39 -18
  4. data/GUIDE.md +16 -17
  5. data/README.md +64 -52
  6. data/exe/byebug +6 -0
  7. data/ext/byebug/breakpoint.c +1 -1
  8. data/ext/byebug/byebug.c +16 -16
  9. data/ext/byebug/byebug.h +40 -26
  10. data/ext/byebug/context.c +26 -26
  11. data/ext/byebug/extconf.rb +7 -5
  12. data/ext/byebug/threads.c +8 -8
  13. data/lib/byebug.rb +3 -1
  14. data/lib/byebug/attacher.rb +17 -3
  15. data/lib/byebug/breakpoint.rb +25 -3
  16. data/lib/byebug/command.rb +20 -14
  17. data/lib/byebug/command_list.rb +3 -1
  18. data/lib/byebug/commands.rb +39 -37
  19. data/lib/byebug/commands/break.rb +33 -15
  20. data/lib/byebug/commands/catch.rb +16 -14
  21. data/lib/byebug/commands/condition.rb +11 -9
  22. data/lib/byebug/commands/continue.rb +9 -7
  23. data/lib/byebug/commands/debug.rb +7 -5
  24. data/lib/byebug/commands/delete.rb +11 -9
  25. data/lib/byebug/commands/disable.rb +8 -6
  26. data/lib/byebug/commands/disable/breakpoints.rb +7 -5
  27. data/lib/byebug/commands/disable/display.rb +7 -5
  28. data/lib/byebug/commands/display.rb +11 -9
  29. data/lib/byebug/commands/down.rb +10 -8
  30. data/lib/byebug/commands/edit.rb +10 -8
  31. data/lib/byebug/commands/enable.rb +8 -6
  32. data/lib/byebug/commands/enable/breakpoints.rb +7 -5
  33. data/lib/byebug/commands/enable/display.rb +7 -5
  34. data/lib/byebug/commands/finish.rb +8 -6
  35. data/lib/byebug/commands/frame.rb +11 -9
  36. data/lib/byebug/commands/help.rb +7 -5
  37. data/lib/byebug/commands/history.rb +7 -5
  38. data/lib/byebug/commands/info.rb +11 -9
  39. data/lib/byebug/commands/info/breakpoints.rb +17 -11
  40. data/lib/byebug/commands/info/display.rb +16 -7
  41. data/lib/byebug/commands/info/file.rb +12 -10
  42. data/lib/byebug/commands/info/line.rb +5 -3
  43. data/lib/byebug/commands/info/program.rb +8 -6
  44. data/lib/byebug/commands/interrupt.rb +8 -4
  45. data/lib/byebug/commands/irb.rb +9 -7
  46. data/lib/byebug/commands/kill.rb +9 -7
  47. data/lib/byebug/commands/list.rb +41 -46
  48. data/lib/byebug/commands/method.rb +10 -8
  49. data/lib/byebug/commands/next.rb +8 -6
  50. data/lib/byebug/commands/pry.rb +10 -8
  51. data/lib/byebug/commands/quit.rb +7 -5
  52. data/lib/byebug/commands/restart.rb +13 -11
  53. data/lib/byebug/commands/save.rb +9 -7
  54. data/lib/byebug/commands/set.rb +12 -10
  55. data/lib/byebug/commands/show.rb +7 -5
  56. data/lib/byebug/commands/source.rb +7 -5
  57. data/lib/byebug/commands/step.rb +8 -6
  58. data/lib/byebug/commands/thread.rb +11 -9
  59. data/lib/byebug/commands/thread/current.rb +6 -4
  60. data/lib/byebug/commands/thread/list.rb +7 -5
  61. data/lib/byebug/commands/thread/resume.rb +7 -5
  62. data/lib/byebug/commands/thread/stop.rb +6 -4
  63. data/lib/byebug/commands/thread/switch.rb +6 -4
  64. data/lib/byebug/commands/tracevar.rb +10 -8
  65. data/lib/byebug/commands/undisplay.rb +10 -8
  66. data/lib/byebug/commands/untracevar.rb +8 -6
  67. data/lib/byebug/commands/up.rb +10 -8
  68. data/lib/byebug/commands/var.rb +12 -10
  69. data/lib/byebug/commands/var/all.rb +7 -5
  70. data/lib/byebug/commands/var/args.rb +6 -4
  71. data/lib/byebug/commands/var/const.rb +9 -7
  72. data/lib/byebug/commands/var/global.rb +5 -3
  73. data/lib/byebug/commands/var/instance.rb +6 -4
  74. data/lib/byebug/commands/var/local.rb +6 -4
  75. data/lib/byebug/commands/where.rb +9 -7
  76. data/lib/byebug/context.rb +7 -5
  77. data/lib/byebug/core.rb +25 -25
  78. data/lib/byebug/errors.rb +4 -2
  79. data/lib/byebug/frame.rb +16 -16
  80. data/lib/byebug/helpers/bin.rb +28 -7
  81. data/lib/byebug/helpers/eval.rb +8 -6
  82. data/lib/byebug/helpers/file.rb +4 -2
  83. data/lib/byebug/helpers/frame.rb +5 -3
  84. data/lib/byebug/helpers/parse.rb +5 -3
  85. data/lib/byebug/helpers/path.rb +7 -5
  86. data/lib/byebug/helpers/reflection.rb +2 -0
  87. data/lib/byebug/helpers/string.rb +4 -2
  88. data/lib/byebug/helpers/thread.rb +10 -8
  89. data/lib/byebug/helpers/toggle.rb +10 -8
  90. data/lib/byebug/helpers/var.rb +8 -6
  91. data/lib/byebug/history.rb +7 -5
  92. data/lib/byebug/interface.rb +13 -11
  93. data/lib/byebug/interfaces/local_interface.rb +4 -4
  94. data/lib/byebug/interfaces/remote_interface.rb +21 -9
  95. data/lib/byebug/interfaces/script_interface.rb +2 -0
  96. data/lib/byebug/interfaces/test_interface.rb +5 -3
  97. data/lib/byebug/option_setter.rb +14 -12
  98. data/lib/byebug/printers/base.rb +6 -6
  99. data/lib/byebug/printers/plain.rb +8 -6
  100. data/lib/byebug/printers/texts/base.yml +3 -3
  101. data/lib/byebug/processors/command_processor.rb +11 -12
  102. data/lib/byebug/processors/control_processor.rb +4 -6
  103. data/lib/byebug/processors/post_mortem_processor.rb +4 -2
  104. data/lib/byebug/processors/script_processor.rb +7 -3
  105. data/lib/byebug/remote.rb +45 -65
  106. data/lib/byebug/remote/client.rb +55 -0
  107. data/lib/byebug/remote/server.rb +47 -0
  108. data/lib/byebug/runner.rb +26 -19
  109. data/lib/byebug/setting.rb +10 -4
  110. data/lib/byebug/settings/autoirb.rb +5 -3
  111. data/lib/byebug/settings/autolist.rb +5 -3
  112. data/lib/byebug/settings/autopry.rb +5 -3
  113. data/lib/byebug/settings/autosave.rb +4 -2
  114. data/lib/byebug/settings/basename.rb +4 -2
  115. data/lib/byebug/settings/callstyle.rb +3 -3
  116. data/lib/byebug/settings/fullpath.rb +4 -2
  117. data/lib/byebug/settings/histfile.rb +5 -3
  118. data/lib/byebug/settings/histsize.rb +4 -2
  119. data/lib/byebug/settings/linetrace.rb +4 -2
  120. data/lib/byebug/settings/listsize.rb +4 -2
  121. data/lib/byebug/settings/post_mortem.rb +4 -2
  122. data/lib/byebug/settings/savefile.rb +4 -2
  123. data/lib/byebug/settings/stack_on_error.rb +4 -2
  124. data/lib/byebug/settings/width.rb +3 -1
  125. data/lib/byebug/source_file_formatter.rb +71 -0
  126. data/lib/byebug/subcommands.rb +6 -4
  127. data/lib/byebug/version.rb +1 -1
  128. metadata +8 -5
  129. data/bin/byebug +0 -9
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Byebug
2
4
  #
3
5
  # Custom exception exception to signal "command not found" errors
@@ -17,11 +19,11 @@ module Byebug
17
19
  end
18
20
 
19
21
  def help
20
- build_cmd('help', @parent)
22
+ build_cmd("help", @parent)
21
23
  end
22
24
 
23
25
  def build_cmd(*args)
24
- args.compact.join(' ')
26
+ args.compact.join(" ")
25
27
  end
26
28
  end
27
29
  end
@@ -1,6 +1,6 @@
1
- # encoding: utf-8
1
+ # frozen_string_literal: true
2
2
 
3
- require 'byebug/helpers/file'
3
+ require "byebug/helpers/file"
4
4
 
5
5
  module Byebug
6
6
  #
@@ -70,11 +70,11 @@ module Byebug
70
70
  # +callstyle+ setting is 'short'
71
71
  #
72
72
  def deco_class
73
- Setting[:callstyle] == 'short' || _class.to_s.empty? ? '' : "#{_class}."
73
+ Setting[:callstyle] == "short" || _class.to_s.empty? ? "" : "#{_class}."
74
74
  end
75
75
 
76
76
  def deco_block
77
- _method[/(?:block(?: \(\d+ levels\))?|rescue) in /] || ''
77
+ _method[/(?:block(?: \(\d+ levels\))?|rescue) in /] || ""
78
78
  end
79
79
 
80
80
  def deco_method
@@ -87,12 +87,12 @@ module Byebug
87
87
  # setting
88
88
  #
89
89
  def deco_args
90
- return '' if args.empty?
90
+ return "" if args.empty?
91
91
 
92
92
  my_args = args.map do |arg|
93
93
  prefix, default = prefix_and_default(arg[0])
94
94
 
95
- kls = use_short_style?(arg) ? '' : "##{locals[arg[1]].class}"
95
+ kls = use_short_style?(arg) ? "" : "##{locals[arg[1]].class}"
96
96
 
97
97
  "#{prefix}#{arg[1] || default}#{kls}"
98
98
  end
@@ -118,7 +118,7 @@ module Byebug
118
118
  # Properly formatted frame number of frame
119
119
  #
120
120
  def deco_pos
121
- format('%-2d', pos)
121
+ format("%-2d", pos)
122
122
  end
123
123
 
124
124
  #
@@ -129,10 +129,10 @@ module Byebug
129
129
  # marks regular frames
130
130
  #
131
131
  def mark
132
- return '-->' if current?
133
- return ' ͱ--' if c_frame?
132
+ return "-->" if current?
133
+ return " ͱ--" if c_frame?
134
134
 
135
- ' '
135
+ " "
136
136
  end
137
137
 
138
138
  #
@@ -156,13 +156,13 @@ module Byebug
156
156
  private
157
157
 
158
158
  def c_args
159
- return [] unless _self.to_s != 'main'
159
+ return [] unless _self.to_s != "main"
160
160
 
161
161
  _class.instance_method(_method).parameters
162
162
  end
163
163
 
164
164
  def ruby_args
165
- meth_name = _binding.eval('__method__')
165
+ meth_name = _binding.eval("__method__")
166
166
  return [] unless meth_name
167
167
 
168
168
  meth_obj = _class.instance_method(meth_name)
@@ -172,14 +172,14 @@ module Byebug
172
172
  end
173
173
 
174
174
  def use_short_style?(arg)
175
- Setting[:callstyle] == 'short' || arg[1].nil? || locals.empty?
175
+ Setting[:callstyle] == "short" || arg[1].nil? || locals.empty?
176
176
  end
177
177
 
178
178
  def prefix_and_default(arg_type)
179
- return ['&', 'block'] if arg_type == :block
180
- return ['*', 'args'] if arg_type == :rest
179
+ return ["&", "block"] if arg_type == :block
180
+ return ["*", "args"] if arg_type == :rest
181
181
 
182
- ['', nil]
182
+ ["", nil]
183
183
  end
184
184
  end
185
185
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Byebug
2
4
  module Helpers
3
5
  #
@@ -6,21 +8,40 @@ module Byebug
6
8
  module BinHelper
7
9
  #
8
10
  # Cross-platform way of finding an executable in the $PATH.
9
- # Borrowed from: http://stackoverflow.com/questions/2108727
11
+ # Adapted from: https://gist.github.com/steakknife/88b6c3837a5e90a08296
10
12
  #
11
13
  def which(cmd)
12
14
  return File.expand_path(cmd) if File.exist?(cmd)
13
15
 
14
- exts = ENV['PATHEXT'] ? ENV['PATHEXT'].split(';') : ['']
15
- ENV['PATH'].split(File::PATH_SEPARATOR).each do |path|
16
- exts.each do |ext|
17
- exe = File.join(path, "#{cmd}#{ext}")
18
- return exe if File.executable?(exe) && !File.directory?(exe)
19
- end
16
+ [nil, *search_paths].each do |path|
17
+ exe = find_executable(path, cmd)
18
+ return exe if exe
19
+ end
20
+
21
+ nil
22
+ end
23
+
24
+ def find_executable(path, cmd)
25
+ executable_file_extensions.each do |ext|
26
+ exe = File.expand_path(cmd + ext, path)
27
+
28
+ return exe if real_executable?(exe)
20
29
  end
21
30
 
22
31
  nil
23
32
  end
33
+
34
+ def search_paths
35
+ ENV["PATH"].split(File::PATH_SEPARATOR)
36
+ end
37
+
38
+ def executable_file_extensions
39
+ ENV["PATHEXT"] ? ENV["PATHEXT"].split(";") : [""]
40
+ end
41
+
42
+ def real_executable?(f)
43
+ File.executable?(f) && !File.directory?(f)
44
+ end
24
45
  end
25
46
  end
26
47
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Byebug
2
4
  module Helpers
3
5
  #
@@ -56,7 +58,7 @@ module Byebug
56
58
  private
57
59
 
58
60
  def safe_eval(str, binding)
59
- binding.eval(str.gsub(/\Aeval /, ''), '(byebug)', 1)
61
+ binding.eval(str.gsub(/\Aeval /, ""), "(byebug)", 1)
60
62
  rescue StandardError, ScriptError => e
61
63
  yield(e)
62
64
  end
@@ -64,7 +66,7 @@ module Byebug
64
66
  def msg(e)
65
67
  msg = Setting[:stack_on_error] ? error_msg(e) : warning_msg(e)
66
68
 
67
- pr('eval.exception', text_message: msg)
69
+ pr("eval.exception", text_message: msg)
68
70
  end
69
71
 
70
72
  def error_msg(e)
@@ -98,7 +100,7 @@ module Byebug
98
100
 
99
101
  #
100
102
  # Runs the given block in a new thread, waits for it to finish and
101
- # returns the new thred's result.
103
+ # returns the new thread's result.
102
104
  #
103
105
  def in_new_thread
104
106
  res = nil
@@ -110,14 +112,14 @@ module Byebug
110
112
 
111
113
  def safe_inspect(var)
112
114
  var.inspect
113
- rescue
115
+ rescue StandardError
114
116
  safe_to_s(var)
115
117
  end
116
118
 
117
119
  def safe_to_s(var)
118
120
  var.to_s
119
- rescue
120
- '*Error in evaluation*'
121
+ rescue StandardError
122
+ "*Error in evaluation*"
121
123
  end
122
124
  end
123
125
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Byebug
2
4
  module Helpers
3
5
  #
@@ -47,14 +49,14 @@ module Byebug
47
49
  components = Pathname(fullpath).each_filename.to_a
48
50
  return fullpath if components.size <= 2
49
51
 
50
- File.join('...', components[-3..-1])
52
+ File.join("...", components[-3..-1])
51
53
  end
52
54
 
53
55
  #
54
56
  # True for special files like -e, false otherwise
55
57
  #
56
58
  def virtual_file?(name)
57
- ['(irb)', '-e', '(byebug)', '(eval)'].include?(name)
59
+ ["(irb)", "-e", "(byebug)", "(eval)"].include?(name)
58
60
  end
59
61
  end
60
62
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Byebug
2
4
  module Helpers
3
5
  #
@@ -6,7 +8,7 @@ module Byebug
6
8
  module FrameHelper
7
9
  def switch_to_frame(frame)
8
10
  new_frame = index_from_start(frame)
9
- return frame_err('c_frame') if Frame.new(context, new_frame).c_frame?
11
+ return frame_err("c_frame") if Frame.new(context, new_frame).c_frame?
10
12
 
11
13
  adjust_frame(new_frame)
12
14
  end
@@ -18,8 +20,8 @@ module Byebug
18
20
  private
19
21
 
20
22
  def adjust_frame(new_frame)
21
- return frame_err('too_low') if new_frame >= context.stack_size
22
- return frame_err('too_high') if new_frame < 0
23
+ return frame_err("too_low") if new_frame >= context.stack_size
24
+ return frame_err("too_high") if new_frame < 0
23
25
 
24
26
  context.frame = new_frame
25
27
  processor.prev_line = nil
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Byebug
2
4
  module Helpers
3
5
  #
@@ -14,15 +16,15 @@ module Byebug
14
16
  #
15
17
  def get_int(str, cmd, min = nil, max = nil)
16
18
  if str !~ /\A-?[0-9]+\z/
17
- return nil, pr('parse.errors.int.not_number', cmd: cmd, str: str)
19
+ return nil, pr("parse.errors.int.not_number", cmd: cmd, str: str)
18
20
  end
19
21
 
20
22
  int = str.to_i
21
23
  if min && int < min
22
- err = pr('parse.errors.int.too_low', cmd: cmd, str: str, min: min)
24
+ err = pr("parse.errors.int.too_low", cmd: cmd, str: str, min: min)
23
25
  return nil, err
24
26
  elsif max && int > max
25
- err = pr('parse.errors.int.too_high', cmd: cmd, str: str, max: max)
27
+ err = pr("parse.errors.int.too_high", cmd: cmd, str: str, max: max)
26
28
  return nil, err
27
29
  end
28
30
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Byebug
2
4
  module Helpers
3
5
  #
@@ -5,19 +7,19 @@ module Byebug
5
7
  #
6
8
  module PathHelper
7
9
  def bin_file
8
- @bin_file ||= File.join(root_path, 'bin', 'byebug')
10
+ @bin_file ||= File.join(root_path, "exe", "byebug")
9
11
  end
10
12
 
11
13
  def root_path
12
- @root_path ||= File.expand_path(File.join('..', '..', '..'), __dir__)
14
+ @root_path ||= File.expand_path(File.join("..", "..", ".."), __dir__)
13
15
  end
14
16
 
15
17
  def lib_files
16
- @lib_files ||= glob_for('lib')
18
+ @lib_files ||= glob_for("lib")
17
19
  end
18
20
 
19
21
  def test_files
20
- @test_files ||= glob_for('test')
22
+ @test_files ||= glob_for("test")
21
23
  end
22
24
 
23
25
  def gem_files
@@ -31,7 +33,7 @@ module Byebug
31
33
  private
32
34
 
33
35
  def glob_for(dir)
34
- Dir.glob(File.join(root_path, dir, '**', '*.rb'))
36
+ Dir.glob(File.join(root_path, dir, "**", "*.rb"))
35
37
  end
36
38
  end
37
39
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Byebug
2
4
  module Helpers
3
5
  #
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Byebug
2
4
  module Helpers
3
5
  #
@@ -9,7 +11,7 @@ module Byebug
9
11
  # ACamelizedString.
10
12
  #
11
13
  def camelize(str)
12
- str.dup.split(/[_-]/).map(&:capitalize).join('')
14
+ str.dup.split(/[_-]/).map(&:capitalize).join("")
13
15
  end
14
16
 
15
17
  #
@@ -27,7 +29,7 @@ module Byebug
27
29
  # use squiggly heredoc's.
28
30
  #
29
31
  def deindent(str, leading_spaces: 6)
30
- str.gsub(/^ {#{leading_spaces}}/, '')
32
+ str.gsub(/^ {#{leading_spaces}}/, "")
31
33
  end
32
34
  end
33
35
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Byebug
2
4
  module Helpers
3
5
  #
@@ -5,7 +7,7 @@ module Byebug
5
7
  #
6
8
  module ThreadHelper
7
9
  def display_context(ctx)
8
- puts pr('thread.context', thread_arguments(ctx))
10
+ puts pr("thread.context", thread_arguments(ctx))
9
11
  end
10
12
 
11
13
  def thread_arguments(ctx)
@@ -29,11 +31,11 @@ module Byebug
29
31
  ctx = Byebug.contexts.find { |c| c.thnum.to_s == thnum }
30
32
 
31
33
  err = if ctx.nil?
32
- pr('thread.errors.no_thread')
34
+ pr("thread.errors.no_thread")
33
35
  elsif ctx == context
34
- pr('thread.errors.current_thread')
36
+ pr("thread.errors.current_thread")
35
37
  elsif ctx.ignored?
36
- pr('thread.errors.ignored', arg: thnum)
38
+ pr("thread.errors.ignored", arg: thnum)
37
39
  end
38
40
 
39
41
  [ctx, err]
@@ -46,19 +48,19 @@ module Byebug
46
48
  return context.location if ctx == Byebug.current_context
47
49
 
48
50
  backtrace = ctx.thread.backtrace_locations
49
- return '' unless backtrace && backtrace[0]
51
+ return "" unless backtrace && backtrace[0]
50
52
 
51
53
  "#{backtrace[0].path}:#{backtrace[0].lineno}"
52
54
  end
53
55
 
54
56
  def status_flag(ctx)
55
- return '$' if ctx.suspended?
57
+ return "$" if ctx.suspended?
56
58
 
57
- current_thread?(ctx) ? '+' : ' '
59
+ current_thread?(ctx) ? "+" : " "
58
60
  end
59
61
 
60
62
  def debug_flag(ctx)
61
- ctx.ignored? ? '!' : ' '
63
+ ctx.ignored? ? "!" : " "
62
64
  end
63
65
  end
64
66
  end
@@ -1,4 +1,6 @@
1
- require 'byebug/helpers/parse'
1
+ # frozen_string_literal: true
2
+
3
+ require "byebug/helpers/parse"
2
4
 
3
5
  module Byebug
4
6
  module Helpers
@@ -9,22 +11,22 @@ module Byebug
9
11
  include ParseHelper
10
12
 
11
13
  def enable_disable_breakpoints(is_enable, args)
12
- raise pr('toggle.errors.no_breakpoints') if Breakpoint.none?
14
+ raise pr("toggle.errors.no_breakpoints") if Breakpoint.none?
13
15
 
14
16
  select_breakpoints(is_enable, args).each do |b|
15
- enabled = (is_enable == 'enable')
17
+ enabled = (is_enable == "enable")
16
18
  if enabled && !syntax_valid?(b.expr)
17
- raise pr('toggle.errors.expression', expr: b.expr)
19
+ raise pr("toggle.errors.expression", expr: b.expr)
18
20
  end
19
21
 
20
- puts pr('toggle.messages.toggled', bpnum: b.id,
21
- endis: enabled ? 'en' : 'dis')
22
+ puts pr("toggle.messages.toggled", bpnum: b.id,
23
+ endis: enabled ? "en" : "dis")
22
24
  b.enabled = enabled
23
25
  end
24
26
  end
25
27
 
26
28
  def enable_disable_display(is_enable, args)
27
- raise pr('toggle.errors.no_display') if n_displays.zero?
29
+ raise pr("toggle.errors.no_display") if n_displays.zero?
28
30
 
29
31
  selected_displays = args ? args.split(/ +/) : [1..n_displays + 1]
30
32
 
@@ -32,7 +34,7 @@ module Byebug
32
34
  pos, err = get_int(pos, "#{is_enable} display", 1, n_displays)
33
35
  raise err unless err.nil?
34
36
 
35
- Byebug.displays[pos - 1][0] = (is_enable == 'enable')
37
+ Byebug.displays[pos - 1][0] = (is_enable == "enable")
36
38
  end
37
39
  end
38
40