lib/permit/permissions/condition/operators/in.ex
defmodule Permit.Permissions.Operators.In do
@moduledoc """
In Operator
"""
alias Permit.Permissions.Operators.GenOperator
use GenOperator
@impl GenOperator
def symbol,
do: :in
@impl GenOperator
def alternatives,
do: []
defp maybe_not(x, false),
do: x
defp maybe_not(x, true),
do: not x
@impl GenOperator
def semantics(val_fn, ops) do
fn field, subject, object ->
field
|> Kernel.in(val_fn.(subject, object))
|> maybe_not(Keyword.get(ops, :not, false))
end
end
end