defmodule Retex.Fact.Filter do @moduledoc "Apply a filter to a variable on the PNode, so that the activation of a PNode happens when this condition is also satisfied" defstruct variable: nil, predicate: nil, value: nil @type variable :: String.t() @type predicate :: :== | :=== | :!== | :!= | :> | :< | :<= | :>= | :in @type value :: any() @type t :: %__MODULE__{variable: variable(), predicate: predicate(), value: value()} @type fields :: [variable: variable(), predicate: predicate(), value: value()] @spec new(fields()) :: t() def new(fields) do struct(__MODULE__, fields) end end