12345678910111213141516171819202122232425262728 |
- module Chervil
- module Core
- def self.compare_pairs(ary, method)
- pairs = Array.new
- ary.each_with_index do |el, i|
- unless ary[i + 1].nil?
- pairs.push([el, ary[i + 1]])
- end
- end
-
- !(pairs.map { |pair| pair[0].send(method, pair[1]) }.any?(false))
- end
-
- CORE = {
- "+" => Proc.new { |args| args.inject(:+) },
- "-" => Proc.new { |args| args.inject(:-) },
- "*" => Proc.new { |args| args.inject(:*) },
- "/" => Proc.new { |args| args.inject(:/) },
- "=" => Proc.new { |args| compare_pairs(args, :==) },
- "<" => Proc.new { |args| compare_pairs(args, :<) },
- ">" => Proc.new { |args| compare_pairs(args, :>) },
- "<=" => Proc.new { |args| compare_pairs(args, :<=) },
- ">=" => Proc.new { |args| compare_pairs(args, :>=) },
- "and" => Proc.new { |args| !(args.include?(false)) },
- "or" => Proc.new { |args| args.any? { |arg| !!arg == true } },
- }
- end
- end
|