Module: Byebug::Helpers::ParseHelper
- Included in:
- BreakCommand, ConditionCommand, ContinueCommand, DeleteCommand, DownCommand, FinishCommand, FrameCommand, ToggleHelper, Byebug::HistoryCommand, ListCommand, NextCommand, Runner, SetCommand, SkipCommand, StepCommand, UndisplayCommand, UpCommand
- Defined in:
- lib/byebug/helpers/parse.rb
Overview
Utilities to assist command parsing
Instance Method Summary collapse
-
#get_int(str, cmd, min = nil, max = nil) ⇒ Object
Parses
strof commandcmdas an integer betweenminandmax. -
#parse_steps(str, cmd) ⇒ Object
stras an integer or 1 ifstris empty. -
#syntax_valid?(code) ⇒ Boolean
True if code is syntactically correct for Ruby, false otherwise.
Instance Method Details
#get_int(str, cmd, min = nil, max = nil) ⇒ Object
TODO:
Remove the ‘cmd` parameter. It has nothing to do with the method’s
Parses str of command cmd as an integer between min and max.
If either min or max is nil, that value has no bound.
purpose.
17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/byebug/helpers/parse.rb', line 17 def get_int(str, cmd, min = nil, max = nil) return nil, pr("parse.errors.int.not_number", cmd: cmd, str: str) unless /\A-?[0-9]+\z/.match?(str) int = str.to_i if min && int < min err = pr("parse.errors.int.too_low", cmd: cmd, str: str, min: min) return nil, err elsif max && int > max err = pr("parse.errors.int.too_high", cmd: cmd, str: str, max: max) return nil, err end int end |
#parse_steps(str, cmd) ⇒ Object
Returns str as an integer or 1 if str is empty.
51 52 53 54 55 56 57 58 |
# File 'lib/byebug/helpers/parse.rb', line 51 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) ⇒ Boolean
Returns true if code is syntactically correct for Ruby, false otherwise.
35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/byebug/helpers/parse.rb', line 35 def syntax_valid?(code) return true unless code without_stderr do begin RubyVM::InstructionSequence.compile(code) true rescue SyntaxError false end end end |