lib/lisp/interpreter/validator.rb in lisp-interpreter-0.3.5 vs lib/lisp/interpreter/validator.rb in lisp-interpreter-0.4.0

- old
+ new

@@ -25,30 +25,35 @@ (valid_literals var) || (valid_objects var) end def valid_function(fn) idx = fn[0] == '(' ? (find_bracket_idx fn, 0) : 0 - func = + f = if idx.zero? predefined_method_caller [fn[idx]] else calc_input_val fn[0..idx] end - raise 'No such procedure' if func.nil? && (!func.is_a? Proc) - [func, fn[idx + 1..-1]] + valid_function? f, fn, idx + [f, fn[idx + 1..-1]] end private def valid_literals(var) - number = check_for_number var + number = check_for_num var string = check_for_string var boolean = check_for_bool var symbol = check_for_symbol var quote = check_for_quote var number || string || boolean || symbol || quote end def valid_objects(var) var.list? || var.pair? + end + + def valid_function?(f, fn, idx) + idx = find_bracket_idx fn, 1 if fn[idx] == '\'' + raise no_procedure_build fn[0..idx].join if f.nil? && (!f.is_a? Proc) end end