Packages

Reference Elixir validator for WPL (Wellness Plan Language) — JSON Schema + semantic invariants

Current section

Files

Jump to
wpl_validator lib wpl validator rule.ex
Raw

lib/wpl/validator/rule.ex

defmodule WPL.Validator.Rule do
@moduledoc false
alias WPL.Validator.WalkContext
@callback enter_plan(WalkContext.t(), map()) :: WalkContext.t()
@callback enter_phase(WalkContext.t(), map(), String.t()) :: WalkContext.t()
@callback enter_week(WalkContext.t(), map(), String.t()) :: WalkContext.t()
@callback enter_day(WalkContext.t(), map(), String.t()) :: WalkContext.t()
@callback enter_block(WalkContext.t(), map(), String.t()) :: WalkContext.t()
@callback enter_activity(WalkContext.t(), map(), String.t()) :: WalkContext.t()
@callback enter_personalization_rule(WalkContext.t(), map(), String.t()) :: WalkContext.t()
@callback enter_checkpoint(WalkContext.t(), map(), String.t()) :: WalkContext.t()
@callback enter_points_rule(WalkContext.t(), map(), String.t()) :: WalkContext.t()
@optional_callbacks enter_plan: 2,
enter_phase: 3,
enter_week: 3,
enter_day: 3,
enter_block: 3,
enter_activity: 3,
enter_personalization_rule: 3,
enter_checkpoint: 3,
enter_points_rule: 3
defmacro __using__(_) do
quote do
@behaviour WPL.Validator.Rule
def enter_plan(ctx, _plan), do: ctx
def enter_phase(ctx, _phase, _path), do: ctx
def enter_week(ctx, _week, _path), do: ctx
def enter_day(ctx, _day, _path), do: ctx
def enter_block(ctx, _block, _path), do: ctx
def enter_activity(ctx, _activity, _path), do: ctx
def enter_personalization_rule(ctx, _rule, _path), do: ctx
def enter_checkpoint(ctx, _cp, _path), do: ctx
def enter_points_rule(ctx, _rule, _path), do: ctx
defoverridable WPL.Validator.Rule
end
end
end