Class: Byebug::ConditionCommand
- Inherits:
-
Command
- Object
- Command
- Byebug::ConditionCommand
show all
- Defined in:
- lib/byebug/commands/condition.rb
Class Method Summary
collapse
Instance Method Summary
collapse
Methods inherited from Command
commands, find, format_subcmd, format_subcmds, help, inherited, #initialize, load_commands, #match
Class Method Details
.description ⇒ Object
35
36
37
38
39
40
41
42
|
# File 'lib/byebug/commands/condition.rb', line 35
def description
%{cond[ition] nnn[ expr]
Specify breakpoint number nnn to break only if expr is true. nnn is an
integer and expr is an expression to be evaluated whenever breakpoint
nnn is reached. If no expression is specified, the condition is
removed.}
end
|
.names ⇒ Object
31
32
33
|
# File 'lib/byebug/commands/condition.rb', line 31
def names
%w(condition)
end
|
Instance Method Details
#execute ⇒ Object
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
# File 'lib/byebug/commands/condition.rb', line 9
def execute
return print ConditionCommand.help(nil) unless @match[1]
breakpoints = Byebug.breakpoints.sort_by { |b| b.id }
largest = breakpoints.inject(0) do |tally, b|
tally = b.id if b.id > tally
end
return errmsg "No breakpoints have been set\n" if 0 == largest
return unless pos = get_int(@match[1], "Condition", 1, largest)
breakpoint = breakpoints.select { |b| b.id == pos }.first
if syntax_valid?(@match[2])
breakpoint.expr = @match[2]
else
return errmsg "Incorrect expression \"#{@match[2]}\", " \
"breakpoint not changed\n"
end
end
|
#regexp ⇒ Object
5
6
7
|
# File 'lib/byebug/commands/condition.rb', line 5
def regexp
/^\s* cond(?:ition)? (?:\s+(\d+)(?:\s+(.*))?)? \s*$/x
end
|