Safe Haskell | None |
---|
All the building blocks to build rules.
- newVar :: (Typeable a, Show a, Eq a) => VarName -> a -> Nomex (Maybe (V a))
- newVar_ :: (Typeable a, Show a, Eq a) => VarName -> a -> Nomex (V a)
- readVar :: (Typeable a, Show a, Eq a) => V a -> Nomex (Maybe a)
- readVar_ :: forall a. (Typeable a, Show a, Eq a) => V a -> Nomex a
- writeVar :: (Typeable a, Show a, Eq a) => V a -> a -> Nomex Bool
- writeVar_ :: (Typeable a, Show a, Eq a) => V a -> a -> Nomex ()
- modifyVar :: (Typeable a, Show a, Eq a) => V a -> (a -> a) -> Nomex ()
- delVar :: V a -> Nomex Bool
- delVar_ :: V a -> Nomex ()
- data VEvent a
- data MsgVar a = MsgVar (Msg (VEvent a)) (V a)
- msgVar :: String -> MsgVar a
- newMsgVar :: (Typeable a, Show a, Eq a) => VarName -> a -> Nomex (Maybe (MsgVar a))
- newMsgVar' :: (Typeable a, Show a, Eq a) => VarName -> a -> (VEvent a -> Nomex ()) -> Nomex (Maybe (MsgVar a))
- writeMsgVar :: (Typeable a, Show a, Eq a) => MsgVar a -> a -> Nomex Bool
- writeMsgVar_ :: (Typeable a, Show a, Eq a) => MsgVar a -> a -> Nomex ()
- readMsgVar :: (Typeable a, Show a, Eq a) => MsgVar a -> Nomex (Maybe a)
- readMsgVar_ :: (Typeable a, Show a, Eq a) => MsgVar a -> Nomex a
- delMsgVar :: (Typeable a, Show a, Eq a) => MsgVar a -> Nomex Bool
- onMsgVarChange :: (Typeable a, Show a, Eq a) => MsgVar a -> (VEvent a -> Nomex ()) -> Nomex ()
- onMsgVarEvent :: (Typeable a, Show a, Eq a) => MsgVar a -> (a -> Nomex b) -> (a -> b -> Nomex ()) -> (b -> Nomex ()) -> Nomex ()
- getMsgVarMessage :: (Typeable a, Show a, Eq a) => MsgVar a -> Nomex (Msg (VEvent a))
- getMsgVarData :: (Typeable a, Show a, Eq a) => MsgVar a -> Nomex (Maybe a)
- getMsgVarData_ :: (Typeable a, Show a, Eq a) => MsgVar a -> Nomex a
- type ArrayVar i a = MsgVar [(i, Maybe a)]
- newArrayVar :: (Typeable a, Show a, Eq a, Typeable i, Show i, Eq i) => VarName -> [i] -> Nomex (Maybe (ArrayVar i a))
- newArrayVar_ :: (Typeable a, Show a, Eq a, Typeable i, Show i, Eq i) => VarName -> [i] -> Nomex (ArrayVar i a)
- newArrayVar' :: (Typeable a, Show a, Eq a, Typeable i, Show i, Eq i) => VarName -> [i] -> (VEvent [(i, Maybe a)] -> Nomex ()) -> Nomex (Maybe (ArrayVar i a))
- newArrayVarOnce :: (Ord i, Typeable a, Show a, Eq a, Typeable i, Show i) => VarName -> [i] -> (VEvent [(i, Maybe a)] -> Nomex ()) -> Nomex (Maybe (ArrayVar i a))
- cleanOnFull :: (Typeable a, Show a, Eq a, Ord i, Typeable i, Show i) => ArrayVar i a -> Nomex ()
- isFullArrayVar_ :: (Ord i, Typeable a, Show a, Eq a, Typeable i, Show i) => ArrayVar i a -> Nomex Bool
- putArrayVar :: (Ord i, Typeable a, Show a, Eq a, Typeable i, Show i) => ArrayVar i a -> i -> a -> Nomex Bool
- putArrayVar_ :: (Ord i, Typeable a, Show a, Eq a, Typeable i, Show i) => ArrayVar i a -> i -> a -> Nomex ()
- onEvent :: (Typeable e, Show e, Eq e) => Event e -> ((EventNumber, EventData e) -> Nomex ()) -> Nomex EventNumber
- onEvent_ :: forall e. (Typeable e, Show e, Eq e) => Event e -> (EventData e -> Nomex ()) -> Nomex ()
- onEventOnce :: (Typeable e, Show e, Eq e) => Event e -> (EventData e -> Nomex ()) -> Nomex EventNumber
- onEventOnce_ :: (Typeable e, Show e, Eq e) => Event e -> (EventData e -> Nomex ()) -> Nomex ()
- delEvent :: EventNumber -> Nomex Bool
- delEvent_ :: EventNumber -> Nomex ()
- delAllEvents :: (Typeable e, Show e, Eq e) => Event e -> Nomex ()
- sendMessage :: (Typeable a, Show a, Eq a) => Msg a -> a -> Nomex ()
- sendMessage_ :: Msg () -> Nomex ()
- onMessage :: (Typeable m, Show m) => Msg m -> (MsgData m -> Nomex ()) -> Nomex ()
- onMessageOnce :: (Typeable m, Show m) => Msg m -> (MsgData m -> Nomex ()) -> Nomex ()
- schedule :: Schedule Freq -> (UTCTime -> Nomex ()) -> Nomex ()
- executeAndScheduleNext :: (EventData Time -> Nomex ()) -> Schedule Freq -> EventData Time -> Nomex ()
- schedule_ :: Schedule Freq -> Nomex () -> Nomex ()
- schedule' :: [UTCTime] -> (UTCTime -> Nomex ()) -> Nomex ()
- executeAndScheduleNext' :: (EventData Time -> Nomex ()) -> [UTCTime] -> EventData Time -> Nomex ()
- schedule'_ :: [UTCTime] -> Nomex () -> Nomex ()
- activateRule :: RuleNumber -> Nomex Bool
- activateRule_ :: RuleNumber -> Nomex ()
- rejectRule :: RuleNumber -> Nomex Bool
- rejectRule_ :: RuleNumber -> Nomex ()
- getRules :: Nomex [Rule]
- getActiveRules :: Nomex [Rule]
- getRule :: RuleNumber -> Nomex (Maybe Rule)
- getRulesByNumbers :: [RuleNumber] -> Nomex [Rule]
- getRuleFuncs :: Nomex [RuleFunc]
- addRule :: Rule -> Nomex Bool
- addRule_ :: Rule -> Nomex ()
- addRuleParams :: RuleName -> RuleFunc -> RuleCode -> String -> Nomex RuleNumber
- getFreeRuleNumber :: Nomex RuleNumber
- suppressRule :: RuleNumber -> Nomex Bool
- suppressRule_ :: RuleNumber -> Nomex ()
- suppressAllRules :: Nomex Bool
- modifyRule :: RuleNumber -> Rule -> Nomex Bool
- inputRadio :: (Eq c, Show c, Typeable c) => PlayerNumber -> String -> [c] -> c -> Event (Input c)
- inputRadioHead :: (Eq c, Show c, Typeable c) => PlayerNumber -> String -> [c] -> Event (Input c)
- inputRadioEnum :: forall c. (Enum c, Bounded c, Typeable c, Eq c, Show c) => PlayerNumber -> String -> c -> Event (Input c)
- inputRadioData :: Show c => EventData (Input c) -> c
- onInputRadio :: (Typeable a, Eq a, Show a) => String -> [a] -> (EventNumber -> a -> Nomex ()) -> PlayerNumber -> Nomex EventNumber
- onInputRadio_ :: (Typeable a, Eq a, Show a) => String -> [a] -> (a -> Nomex ()) -> PlayerNumber -> Nomex ()
- onInputRadioOnce :: (Typeable a, Eq a, Show a) => String -> [a] -> (a -> Nomex ()) -> PlayerNumber -> Nomex EventNumber
- onInputRadioOnce_ :: (Typeable a, Eq a, Show a) => String -> [a] -> (a -> Nomex ()) -> PlayerNumber -> Nomex ()
- onInputRadioEnum :: forall a. (Enum a, Bounded a, Typeable a, Eq a, Show a) => String -> a -> (EventNumber -> a -> Nomex ()) -> PlayerNumber -> Nomex EventNumber
- onInputRadioEnum_ :: forall a. (Enum a, Bounded a, Typeable a, Eq a, Show a) => String -> a -> (a -> Nomex ()) -> PlayerNumber -> Nomex ()
- onInputRadioEnumOnce_ :: forall a. (Enum a, Bounded a, Typeable a, Eq a, Show a) => String -> a -> (a -> Nomex ()) -> PlayerNumber -> Nomex ()
- inputText :: PlayerNumber -> String -> Event (Input String)
- inputTextData :: EventData (Input String) -> String
- onInputText :: String -> (EventNumber -> String -> Nomex ()) -> PlayerNumber -> Nomex EventNumber
- onInputText_ :: String -> (String -> Nomex ()) -> PlayerNumber -> Nomex ()
- onInputTextOnce_ :: String -> (String -> Nomex ()) -> PlayerNumber -> Nomex ()
- inputCheckboxData :: Show c => EventData (Input c) -> [c]
- inputCheckbox :: (Eq c, Show c, Typeable c) => PlayerNumber -> String -> [(c, String)] -> Event (Input c)
- onInputCheckbox :: (Typeable a, Eq a, Show a) => String -> [(a, String)] -> (EventNumber -> [a] -> Nomex ()) -> PlayerNumber -> Nomex EventNumber
- onInputCheckbox_ :: (Typeable a, Eq a, Show a) => String -> [(a, String)] -> ([a] -> Nomex ()) -> PlayerNumber -> Nomex ()
- inputButtonData :: EventData (Input ()) -> ()
- inputButton :: PlayerNumber -> String -> Event (Input ())
- onInputButton :: String -> (EventNumber -> () -> Nomex ()) -> PlayerNumber -> Nomex EventNumber
- onInputButton_ :: String -> (() -> Nomex ()) -> PlayerNumber -> Nomex ()
- inputTextareaData :: EventData (Input String) -> String
- inputTextarea :: PlayerNumber -> String -> Event (Input String)
- onInputTextarea :: String -> (EventNumber -> String -> Nomex ()) -> PlayerNumber -> Nomex EventNumber
- onInputTextarea_ :: String -> (String -> Nomex ()) -> PlayerNumber -> Nomex ()
- onInputTextareaOnce_ :: String -> (String -> Nomex ()) -> PlayerNumber -> Nomex ()
- getPlayers :: Nomex [PlayerInfo]
- getPlayer :: PlayerNumber -> Nomex (Maybe PlayerInfo)
- getPlayerName :: PlayerNumber -> Nomex (Maybe PlayerName)
- setPlayerName :: PlayerNumber -> PlayerName -> Nomex Bool
- modifyPlayerName :: PlayerNumber -> (PlayerName -> PlayerName) -> Nomex Bool
- getPlayersNumber :: Nomex Int
- getAllPlayerNumbers :: Nomex [PlayerNumber]
- delPlayer :: PlayerNumber -> Nomex Bool
- newOutput :: String -> PlayerNumber -> Nomex OutputNumber
- newOutput_ :: String -> PlayerNumber -> Nomex ()
- outputAll :: String -> Nomex ()
- updateOutput :: OutputNumber -> String -> Nomex Bool
- updateOutput_ :: OutputNumber -> String -> Nomex ()
- delOutput :: OutputNumber -> Nomex Bool
- delOutput_ :: OutputNumber -> Nomex ()
- displayVar :: (Typeable a, Show a, Eq a) => PlayerNumber -> MsgVar a -> (a -> String) -> Nomex ()
- displaySimpleVar :: (Typeable a, Show a, Eq a) => PlayerNumber -> String -> MsgVar a -> Nomex ()
- displayArrayVar :: (Typeable a, Show a, Eq a, Typeable i, Show i, Eq i) => PlayerNumber -> String -> ArrayVar i a -> Nomex ()
- showArrayVar :: (Show a, Show i) => String -> [(i, a)] -> String
- setVictory :: [PlayerNumber] -> Nomex ()
- giveVictory :: PlayerNumber -> Nomex ()
- getCurrentTime :: Nomex UTCTime
- getSelfRuleNumber :: Nomex RuleNumber
- getSelfRule :: Nomex Rule
- getSelfProposedByPlayer :: Nomex PlayerNumber
- voidRule :: Nomex a -> Nomex RuleResp
- andMsgBool :: Bool -> Msg Bool -> Nomex (Msg Bool)
- andMsgMsg :: Msg Bool -> Msg Bool -> Nomex (Msg Bool)
- partial :: String -> Nomex (Maybe a) -> Nomex a
- defaultRule :: Rule
Variables
modifyVar :: (Typeable a, Show a, Eq a) => V a -> (a -> a) -> Nomex ()Source
modify a variable using the provided function
newMsgVar' :: (Typeable a, Show a, Eq a) => VarName -> a -> (VEvent a -> Nomex ()) -> Nomex (Maybe (MsgVar a))Source
onMsgVarChange :: (Typeable a, Show a, Eq a) => MsgVar a -> (VEvent a -> Nomex ()) -> Nomex ()Source
onMsgVarEvent :: (Typeable a, Show a, Eq a) => MsgVar a -> (a -> Nomex b) -> (a -> b -> Nomex ()) -> (b -> Nomex ()) -> Nomex ()Source
getMsgVarMessage :: (Typeable a, Show a, Eq a) => MsgVar a -> Nomex (Msg (VEvent a))Source
get the messsage triggered when the array is filled
getMsgVarData :: (Typeable a, Show a, Eq a) => MsgVar a -> Nomex (Maybe a)Source
get the association array
Variable arrays
type ArrayVar i a = MsgVar [(i, Maybe a)]Source
ArrayVar is an indexed array with a signal attached triggered at every change. | each indexed elements starts empty (value=Nothing).
newArrayVar :: (Typeable a, Show a, Eq a, Typeable i, Show i, Eq i) => VarName -> [i] -> Nomex (Maybe (ArrayVar i a))Source
initialize an empty ArrayVar
newArrayVar_ :: (Typeable a, Show a, Eq a, Typeable i, Show i, Eq i) => VarName -> [i] -> Nomex (ArrayVar i a)Source
newArrayVar' :: (Typeable a, Show a, Eq a, Typeable i, Show i, Eq i) => VarName -> [i] -> (VEvent [(i, Maybe a)] -> Nomex ()) -> Nomex (Maybe (ArrayVar i a))Source
initialize an empty ArrayVar, registering a callback that will be triggered at every change
newArrayVarOnce :: (Ord i, Typeable a, Show a, Eq a, Typeable i, Show i) => VarName -> [i] -> (VEvent [(i, Maybe a)] -> Nomex ()) -> Nomex (Maybe (ArrayVar i a))Source
initialize an empty ArrayVar, registering a callback. the ArrayVar will be deleted when full
cleanOnFull :: (Typeable a, Show a, Eq a, Ord i, Typeable i, Show i) => ArrayVar i a -> Nomex ()Source
isFullArrayVar_ :: (Ord i, Typeable a, Show a, Eq a, Typeable i, Show i) => ArrayVar i a -> Nomex BoolSource
putArrayVar :: (Ord i, Typeable a, Show a, Eq a, Typeable i, Show i) => ArrayVar i a -> i -> a -> Nomex BoolSource
store one value and the given index. If this is the last filled element, the registered callbacks are triggered.
putArrayVar_ :: (Ord i, Typeable a, Show a, Eq a, Typeable i, Show i) => ArrayVar i a -> i -> a -> Nomex ()Source
Events
onEvent :: (Typeable e, Show e, Eq e) => Event e -> ((EventNumber, EventData e) -> Nomex ()) -> Nomex EventNumberSource
register a callback on an event
onEvent_ :: forall e. (Typeable e, Show e, Eq e) => Event e -> (EventData e -> Nomex ()) -> Nomex ()Source
register a callback on an event, disregard the event number
onEventOnce :: (Typeable e, Show e, Eq e) => Event e -> (EventData e -> Nomex ()) -> Nomex EventNumberSource
set an handler for an event that will be triggered only once
onEventOnce_ :: (Typeable e, Show e, Eq e) => Event e -> (EventData e -> Nomex ()) -> Nomex ()Source
set an handler for an event that will be triggered only once
delEvent :: EventNumber -> Nomex BoolSource
delEvent_ :: EventNumber -> Nomex ()Source
sendMessage :: (Typeable a, Show a, Eq a) => Msg a -> a -> Nomex ()Source
broadcast a message that can be catched by another rule
sendMessage_ :: Msg () -> Nomex ()Source
onMessage :: (Typeable m, Show m) => Msg m -> (MsgData m -> Nomex ()) -> Nomex ()Source
subscribe on a message
schedule :: Schedule Freq -> (UTCTime -> Nomex ()) -> Nomex ()Source
on the provided schedule, the supplied function will be called
executeAndScheduleNext :: (EventData Time -> Nomex ()) -> Schedule Freq -> EventData Time -> Nomex ()Source
executeAndScheduleNext' :: (EventData Time -> Nomex ()) -> [UTCTime] -> EventData Time -> Nomex ()Source
schedule'_ :: [UTCTime] -> Nomex () -> Nomex ()Source
Rule management
activateRule :: RuleNumber -> Nomex BoolSource
activate a rule: change its state to Active and execute it
activateRule_ :: RuleNumber -> Nomex ()Source
rejectRule :: RuleNumber -> Nomex BoolSource
reject a rule: change its state to Suppressed and suppresses all its environment (events, variables, inputs) the rule can be activated again later
rejectRule_ :: RuleNumber -> Nomex ()Source
getRulesByNumbers :: [RuleNumber] -> Nomex [Rule]Source
addRuleParams :: RuleName -> RuleFunc -> RuleCode -> String -> Nomex RuleNumberSource
suppressRule_ :: RuleNumber -> Nomex ()Source
modifyRule :: RuleNumber -> Rule -> Nomex BoolSource
Inputs
Radio inputs
inputRadio :: (Eq c, Show c, Typeable c) => PlayerNumber -> String -> [c] -> c -> Event (Input c)Source
inputRadioHead :: (Eq c, Show c, Typeable c) => PlayerNumber -> String -> [c] -> Event (Input c)Source
inputRadioEnum :: forall c. (Enum c, Bounded c, Typeable c, Eq c, Show c) => PlayerNumber -> String -> c -> Event (Input c)Source
inputRadioData :: Show c => EventData (Input c) -> cSource
onInputRadio :: (Typeable a, Eq a, Show a) => String -> [a] -> (EventNumber -> a -> Nomex ()) -> PlayerNumber -> Nomex EventNumberSource
triggers a choice input to the user. The result will be sent to the callback
onInputRadio_ :: (Typeable a, Eq a, Show a) => String -> [a] -> (a -> Nomex ()) -> PlayerNumber -> Nomex ()Source
the same, disregard the event number
onInputRadioOnce :: (Typeable a, Eq a, Show a) => String -> [a] -> (a -> Nomex ()) -> PlayerNumber -> Nomex EventNumberSource
the same, suppress the event after first trigger
onInputRadioOnce_ :: (Typeable a, Eq a, Show a) => String -> [a] -> (a -> Nomex ()) -> PlayerNumber -> Nomex ()Source
the same, disregard the event number
onInputRadioEnum :: forall a. (Enum a, Bounded a, Typeable a, Eq a, Show a) => String -> a -> (EventNumber -> a -> Nomex ()) -> PlayerNumber -> Nomex EventNumberSource
triggers a choice input to the user, using an enumerate as input
onInputRadioEnum_ :: forall a. (Enum a, Bounded a, Typeable a, Eq a, Show a) => String -> a -> (a -> Nomex ()) -> PlayerNumber -> Nomex ()Source
the same, disregard the event number
onInputRadioEnumOnce_ :: forall a. (Enum a, Bounded a, Typeable a, Eq a, Show a) => String -> a -> (a -> Nomex ()) -> PlayerNumber -> Nomex ()Source
the same, suppress the event after first trigger
Text inputs
onInputText :: String -> (EventNumber -> String -> Nomex ()) -> PlayerNumber -> Nomex EventNumberSource
triggers a string input to the user. The result will be sent to the callback
onInputText_ :: String -> (String -> Nomex ()) -> PlayerNumber -> Nomex ()Source
asks the player pn to answer a question, and feed the callback with this data.
onInputTextOnce_ :: String -> (String -> Nomex ()) -> PlayerNumber -> Nomex ()Source
asks the player pn to answer a question, and feed the callback with this data.
Checkbox inputs
inputCheckboxData :: Show c => EventData (Input c) -> [c]Source
inputCheckbox :: (Eq c, Show c, Typeable c) => PlayerNumber -> String -> [(c, String)] -> Event (Input c)Source
onInputCheckbox :: (Typeable a, Eq a, Show a) => String -> [(a, String)] -> (EventNumber -> [a] -> Nomex ()) -> PlayerNumber -> Nomex EventNumberSource
onInputCheckbox_ :: (Typeable a, Eq a, Show a) => String -> [(a, String)] -> ([a] -> Nomex ()) -> PlayerNumber -> Nomex ()Source
Button inputs
inputButtonData :: EventData (Input ()) -> ()Source
inputButton :: PlayerNumber -> String -> Event (Input ())Source
onInputButton :: String -> (EventNumber -> () -> Nomex ()) -> PlayerNumber -> Nomex EventNumberSource
onInputButton_ :: String -> (() -> Nomex ()) -> PlayerNumber -> Nomex ()Source
Textarea inputs
inputTextarea :: PlayerNumber -> String -> Event (Input String)Source
onInputTextarea :: String -> (EventNumber -> String -> Nomex ()) -> PlayerNumber -> Nomex EventNumberSource
onInputTextarea_ :: String -> (String -> Nomex ()) -> PlayerNumber -> Nomex ()Source
onInputTextareaOnce_ :: String -> (String -> Nomex ()) -> PlayerNumber -> Nomex ()Source
Players
getPlayers :: Nomex [PlayerInfo]Source
get all the players
getPlayer :: PlayerNumber -> Nomex (Maybe PlayerInfo)Source
Get a specific player
getPlayerName :: PlayerNumber -> Nomex (Maybe PlayerName)Source
Set the name of a player
setPlayerName :: PlayerNumber -> PlayerName -> Nomex BoolSource
Set the name of a player
modifyPlayerName :: PlayerNumber -> (PlayerName -> PlayerName) -> Nomex BoolSource
getPlayersNumber :: Nomex IntSource
Get the total number of playersgetPlayersNumber :: Nomex Int
getAllPlayerNumbers :: Nomex [PlayerNumber]Source
Get all the players number
delPlayer :: PlayerNumber -> Nomex BoolSource
Remove the player from the game (kick)
Outputs
newOutput :: String -> PlayerNumber -> Nomex OutputNumberSource
outputs a message to one player
newOutput_ :: String -> PlayerNumber -> Nomex ()Source
updateOutput :: OutputNumber -> String -> Nomex BoolSource
updateOutput_ :: OutputNumber -> String -> Nomex ()Source
delOutput :: OutputNumber -> Nomex BoolSource
delOutput_ :: OutputNumber -> Nomex ()Source
displayVar :: (Typeable a, Show a, Eq a) => PlayerNumber -> MsgVar a -> (a -> String) -> Nomex ()Source
displaySimpleVar :: (Typeable a, Show a, Eq a) => PlayerNumber -> String -> MsgVar a -> Nomex ()Source
displayArrayVar :: (Typeable a, Show a, Eq a, Typeable i, Show i, Eq i) => PlayerNumber -> String -> ArrayVar i a -> Nomex ()Source
Victory, time and self-number
setVictory :: [PlayerNumber] -> Nomex ()Source
set victory to a list of players
giveVictory :: PlayerNumber -> Nomex ()Source
give victory to one player
getSelfRuleNumber :: Nomex RuleNumberSource
allows a rule to retrieve its own number (for auto-deleting for example)
Miscellaneous
a default rule