Dylan Baker 5 anni fa
parent
commit
e2f0da5eda
1 ha cambiato i file con 9 aggiunte e 0 eliminazioni
  1. 9
    0
      lib/chervil/core.rb

+ 9
- 0
lib/chervil/core.rb Vedi File

32
       end
32
       end
33
     end
33
     end
34
 
34
 
35
+    def self.arity_check(args, expected_count)
36
+      if args.size != expected_count
37
+        ::Chervil::Error.new("Expected #{expected_count} arguments but received #{args.size}")
38
+      else
39
+        nil
40
+      end
41
+    end
42
+
35
     CORE = {
43
     CORE = {
36
       "+" => Proc.new { |args| type_check(args, Float) || args.inject(:+) },
44
       "+" => Proc.new { |args| type_check(args, Float) || args.inject(:+) },
37
       "-" => Proc.new { |args| type_check(args, Float) || args.inject(:-) },
45
       "-" => Proc.new { |args| type_check(args, Float) || args.inject(:-) },
44
       ">=" => Proc.new { |args| type_check(args, Float) || compare_pairs(args, :>=) },
52
       ">=" => Proc.new { |args| type_check(args, Float) || compare_pairs(args, :>=) },
45
       "and" => Proc.new { |args| !(args.include?(false)) },
53
       "and" => Proc.new { |args| !(args.include?(false)) },
46
       "or" => Proc.new { |args| args.any? { |arg| !!arg == true } },
54
       "or" => Proc.new { |args| args.any? { |arg| !!arg == true } },
55
+      "not" => Proc.new { |args| arity_check(args, 1) || args.first == false ? true : false },
47
     }
56
     }
48
   end
57
   end
49
 end
58
 end

Loading…
Annulla
Salva