Skip to content

Commit

Permalink
improvement: Add template guards.
Browse files Browse the repository at this point in the history
  • Loading branch information
jimsynz committed Mar 18, 2024
1 parent 181017a commit dfc56a8
Showing 1 changed file with 18 additions and 0 deletions.
18 changes: 18 additions & 0 deletions lib/reactor/template.ex
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,22 @@ defmodule Reactor.Template do
@doc "The type for use in option schemas"
@spec type :: Spark.Options.type()
def type, do: {:or, [{:struct, Input}, {:struct, Result}, {:struct, Value}]}

@doc "A guard for input templates"
@spec is_input_template(any) :: Macro.output()
defguard is_input_template(template) when is_struct(template, Input)

@doc "A guard for result templates"
@spec is_result_template(any) :: Macro.output()
defguard is_result_template(template) when is_struct(template, Result)

@doc "A guard for value templates"
@spec is_value_template(any) :: Macro.output()
defguard is_value_template(template) when is_struct(template, Value)

@doc "A guard to detect all template types"
@spec is_template(any) :: Macro.output()
defguard is_template(template)
when is_input_template(template) or is_result_template(template) or
is_value_template(template)
end

0 comments on commit dfc56a8

Please sign in to comment.