Module: Validator
Overview
Validator module is used to validate if the user input is correct
Instance Method Summary collapse
- #balanced_brackets?(token) ⇒ Boolean
- #balanced_quotes?(token) ⇒ Boolean
- #valid_function(fn) ⇒ Object
- #valid_var(var) ⇒ Object
- #valid_var_name(var) ⇒ Object
Instance Method Details
#balanced_brackets?(token) ⇒ Boolean
3 4 5 6 7 8 9 10 11 12 13 |
# File 'lib/lisp/interpreter/validator.rb', line 3 def balanced_brackets?(token) strim = token.gsub(/[^\[\]\(\)\{\}]/, '') return true if strim.empty? return false if strim.size.odd? loop do s = strim.gsub('()', '').gsub('[]', '').gsub('{}', '') return true if s.empty? return false if s == strim strim = s end end |
#balanced_quotes?(token) ⇒ Boolean
15 16 17 |
# File 'lib/lisp/interpreter/validator.rb', line 15 def balanced_quotes?(token) token.count('"').even? end |
#valid_function(fn) ⇒ Object
28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/lisp/interpreter/validator.rb', line 28 def valid_function(fn) idx = fn[0] == '(' ? (find_bracket_idx fn, 0) : 0 f = if idx.zero? predefined_method_caller [fn[idx]] else calc_input_val fn[0..idx] end valid_function? f, fn, idx [f, fn[idx + 1..-1]] end |
#valid_var(var) ⇒ Object
24 25 26 |
# File 'lib/lisp/interpreter/validator.rb', line 24 def valid_var(var) (valid_literals var) || (valid_objects var) end |
#valid_var_name(var) ⇒ Object
19 20 21 22 |
# File 'lib/lisp/interpreter/validator.rb', line 19 def valid_var_name(var) symbols = %r{[<|<=|=|>|>=|*|\/|+|-|&|^|#|@|]} !var.match(/[[:alpha:]]/).nil? || !var.match(symbols).nil? end |