Anton Shestakov <engored@ya.ru>, Sat, 08 Mar 2014 23:46:38 +0900
Strictly speaking, rps_rules has no state.
src/rps3.erl
Permissions: -rw-r--r--
-export([init/1, handle_call/3, handle_cast/2, handle_info/2, terminate/2, code_change/3]). -export([start_link/0, get_hands/0, winning_hand/1, why/2]). -include("rps_rules.hrl"). gen_server:start_link({local, ?MODULE}, ?MODULE, [], []). Text = "scissors cut paper covers rock crushes scissors", {ok, rps_rules:parse(Text)}. handle_call(get_hands, _From, State=#ruleinfo{hands=Hands}) -> handle_call({winning_hand, Hands}, _From, State) -> {reply, rps_rules:winning_hand(Hands, State), State}; handle_call({why, H1, H2}, _From, State=#ruleinfo{}) -> {reply, rps_rules:why(H1, H2, State), State}. handle_cast(_Msg, State) -> {noreply, State}. handle_info(_Msg, State) -> {noreply, State}. terminate(_Reason, _State) -> ok. code_change(_OldVersion, State, _Extra) -> {ok, State}. gen_server:call(?MODULE, get_hands). gen_server:call(?MODULE, {winning_hand, Hands}). gen_server:call(?MODULE, {why, H1, H2}).