Class: Casbin::Util::Evaluator

Inherits:
Object
  • Object
show all
Defined in:
lib/casbin-ruby/util/evaluator.rb

Defined Under Namespace

Classes: NamesConflictError

Class Method Summary collapse

Class Method Details

.eval(expr, funcs = {}, params = {}) ⇒ Object

evaluate an expression, using the operators, functions and names previously setup.



12
13
14
15
# File 'lib/casbin-ruby/util/evaluator.rb', line 12

def eval(expr, funcs = {}, params = {})
  validate_names funcs, params
  Keisan::Calculator.new.evaluate expr, funcs.merge(params)
end

.validate_names(funcs = {}, params = {}) ⇒ Object

Raises:



17
18
19
20
21
22
23
# File 'lib/casbin-ruby/util/evaluator.rb', line 17

def validate_names(funcs = {}, params = {})
  conflicted_names = funcs.keys & params.keys
  return if conflicted_names.empty?

  raise NamesConflictError, "You can't use function names as parameter names: " \
                            "#{conflicted_names.map { |name| "`#{name}`" }.join ', '}"
end