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