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
str
of commandcmd
as an integer betweenmin
andmax
. -
#parse_steps(str, cmd) ⇒ Object
str
as an integer or 1 ifstr
is 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 |