Module: Debugger::ParseFunctions

Defined in:
lib/ruby-debug/helper.rb

Constant Summary collapse

Position_regexp =
'(?:(\d+)|(.+?)[:.#]([^.:\s]+))'

Instance Method Summary collapse

Instance Method Details

#get_int(str, cmd, min = nil, max = nil, default = 1) ⇒ Object

Parse ‘str’ of command ‘cmd’ as an integer between min and max. If either min or max is nil, that value has no bound.



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/ruby-debug/helper.rb', line 9

def get_int(str, cmd, min=nil, max=nil, default=1)
  return default unless str
  begin
    int = Integer(str)
    if min and int < min
      print Debugger.printer.print("parse.errors.int.too_low", cmd: cmd, str: str, min: min)
      return nil
    elsif max and int > max
      print Debugger.printer.print("parse.errors.int.too_high", cmd: cmd, str: str, max: max)
      return nil
    end
    return int
  rescue
    print Debugger.printer.print("parse.errors.int.not_number", cmd: cmd, str: str)
    return nil
  end
end

#get_onoff(arg, default = nil, print_error = true) ⇒ Object

Return true if arg is ‘on’ or 1 and false arg is ‘off’ or 0. Any other value raises RuntimeError.



29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/ruby-debug/helper.rb', line 29

def get_onoff(arg, default=nil, print_error=true)
  if arg.nil? or arg == ''
    if default.nil?
      if print_error
        print Debugger.printer.print("parse.errors.onoff.syntax", arg: "nothing")
        raise RuntimeError
      end
      return default
    end
  end
  case arg.downcase
  when '1', 'on'
    return true
  when '0', 'off'
    return false
  else
    if print_error
      print Debugger.printer.print("parse.errors.onoff.syntax", arg: arg)
      raise RuntimeError
    end
  end
end

#show_onoff(bool) ⇒ Object

Return ‘on’ or ‘off’ for supplied parameter. The parmeter should be true, false or nil.



54
55
56
57
58
59
# File 'lib/ruby-debug/helper.rb', line 54

def show_onoff(bool)
  if not [TrueClass, FalseClass, NilClass].member?(bool.class)
    return "??"
  end
  return bool ? 'on' : 'off'
end

#syntax_valid?(code) ⇒ Boolean

Return true if code is syntactically correct for Ruby.

Returns:

  • (Boolean)


62
63
64
65
66
# File 'lib/ruby-debug/helper.rb', line 62

def syntax_valid?(code)
  eval("BEGIN {return true}\n#{code}", nil, "", 0)
rescue Exception
  false
end