View Source Conditioner (Conditioner v0.1.0)
Conditioner allows you to define and process conditional logic in separated way:
- Create logical representation of conditions:
conditions = %{
"and" => [
["filename", "containsfn", "he"],
["filename", "containsfn", "lo"],
["otherrule", "contains", "lo"],
%{
"or" => [
["filename", "containsfn", "bo"],
["filename", "containsfn", "he"],
%{"and" => true}
]
}
]
}
- Define matcher module with rules:
defmodule SomeMatcher do
use Conditioner.Matcher
def match(["filename", "containsfn", str], _original_value) do
fn val ->
String.contains?(val, str)
end
end
def match(["otherrule", "contains", str], value) do
String.contains?(value, str)
end
end
- Verify conditions by calling matcher with rules:
result = Conditioner.match?(conditions, "hello", SomeMatcher)