module Byebug::ParseFunctions
Utilities to assist command parsing
Public Instance Methods
get_int(str, cmd, min = nil, max = nil)
click to toggle source
Parse 'str' of command 'cmd' as an integer between min and max. If either min or max is nil, that value has no bound.
# File lib/byebug/helper.rb, line 74 def get_int(str, cmd, min = nil, max = nil) if str !~ /\A[0-9]+\z/ return nil, pr('parse.errors.int.not_number', cmd: cmd, str: str) end int = str.to_i if min && int < min return min, pr('parse.errors.int.too_low', cmd: cmd, str: str, min: min) elsif max && int > max return max, pr('parse.errors.int.too_high', cmd: cmd, str: str, max: max) end int end
parse_steps(str, cmd)
click to toggle source
Returns the number of steps specified in <str> as an integer or 1 if <str> is empty.
# File lib/byebug/helper.rb, line 122 def parse_steps(str, cmd) return 1 unless str steps, err = get_int(str, cmd, 1) return nil, err unless steps steps end
syntax_valid?(code)
click to toggle source
Returns true if code is syntactically correct for Ruby
# File lib/byebug/helper.rb, line 93 def syntax_valid?(code) return true unless code without_stderr do begin RubyVM::InstructionSequence.compile(code) true rescue SyntaxError false end end end
without_stderr() { || ... }
click to toggle source
Temporarily disable output to $stderr
# File lib/byebug/helper.rb, line 109 def without_stderr stderr = $stderr $stderr.reopen(IO::NULL) yield ensure $stderr.reopen(stderr) end