public void SendTokenizedMessage()
            {
                int parameter = rnd.Next(0, 100);
                var msg       = new TokenizedMessage()
                {
                    Parameter = parameter
                };

                if (parameter % 10 == 0)
                {
                    Messenger.Default.Send(msg, "Ten");
                }
                else
                {
                    Messenger.Default.Send(msg, (parameter % 2 == 1) ? "Odd" : "Even");
                }
            }
Esempio n. 2
0
        /// <summary>
        /// Returns any / all possible Action Configs which match the message.
        /// </summary>
        /// <param name="actionConfigs">All Action Configs</param>
        /// <param name="message">The tokenized message</param>
        /// <returns>Returns a collection of zero to many possible matches.</returns>
        public static IEnumerable <ActionConfig> IdentifyAllFromMessage(ActionConfig[] actionConfigs, TokenizedMessage message)
        {
            var tokenQueue = new Queue <MessageToken>(message.Tokens);

            // First try matching on a name before trying to match on parameters.
            return(actionConfigs.Pipe(
                       ac => matchByName(ac, tokenQueue),
                       ac => matchByParams(ac, tokenQueue.ToArray())));
        }
Esempio n. 3
0
        /// <summary>
        /// Returns a single Action Config which matches the message.
        /// If matches is not exactly equal to 1, then return an error.
        /// </summary>
        /// <param name="actionConfigs">All Action Configs</param>
        /// <param name="message">The tokenized message</param>
        /// <returns>Returns a single matching ActionConfig, or an error.</returns>
        public static Try <ActionConfig> IdentifyFromMessage(ActionConfig[] actionConfigs, TokenizedMessage message)
        {
            var matchingConfigs = IdentifyAllFromMessage(actionConfigs, message).ToArray();

            if (matchingConfigs.Length == 1)
            {
                return(Try(matchingConfigs.First));
            }

            var actionsForMessage = $"actions for message '{message.Message}'.";

            return(!matchingConfigs.Any()
                ? error($"Unable to find any matching {actionsForMessage}")
                : error($"Found {matchingConfigs.Length} possible {actionsForMessage} Please clarify."));
        }