forked from spawngrid/htoad
-
Notifications
You must be signed in to change notification settings - Fork 0
/
htoad.erl
38 lines (31 loc) · 1.03 KB
/
htoad.erl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
-module(htoad).
-export([start/0, add_rules/1, assert/1, assert/2, retract/1, retract/2]).
-include_lib("htoad/include/htoad.hrl").
start() ->
start(htoad).
start(App) ->
case application:start(App) of
{error, {not_started, Dep}} ->
start(Dep),
start(App);
Other ->
Other
end.
add_rules(Rules) ->
htoad_engine:add_rules(?ENGINE, Rules),
case Rules of
Module when is_atom(Module) ->
ok;
{Module, _} ->
ok
end,
FReqs = proplists:get_value(htoad_file_requests, Module:module_info(attributes), []),
assert([{file_request, F} || F <- FReqs]).
assert(Fact) when is_list(Fact); is_tuple(Fact) ->
htoad_engine:assert(?ENGINE, Fact).
assert(Engine, Fact) when is_list(Fact); is_tuple(Fact) ->
seresye_engine:assert(Engine, Fact).
retract(Fact) when is_list(Fact); is_tuple(Fact) ->
htoad_engine:assert(?ENGINE, Fact).
retract(Engine, Fact) when is_list(Fact); is_tuple(Fact) ->
seresye_engine:retract(Engine, Fact).