public static Func <Session, string, string, bool> GetReplaceAction(ReplaceAction action)
        {
            var methodName = "util" + action;
            Func <Session, string, string, bool> result = (s, key, value) =>
            {
                switch (action)
                {
                case ReplaceAction.ReplaceInRequest:
                    return(s.utilReplaceInRequest(key, value));

                case ReplaceAction.ReplaceTagsInRequest:
                    return(s.utilReplaceInRequest(BuildKey(key), value));

                case ReplaceAction.ReplaceInResponse:
                    return(s.utilReplaceInResponse(key, value));

                case ReplaceAction.ReplaceOnceInResponse:
                    return(s.utilReplaceOnceInResponse(key, value, false));

                case ReplaceAction.ReplaceRegexInResponse:
                    return(s.utilReplaceRegexInResponse(key, value));

                default:
                    throw new ArgumentOutOfRangeException(nameof(action), action, null);
                }
            };

            return(result);
        }
Exemple #2
0
    void Replace(ReplaceAction replace, string channel, string invoker)
    {
        foreach (var item in history.GetMessages(channel))
        {
            string replacedMsg;
            switch (replace.TryReplace(item.Message, out replacedMsg))
            {
            case ReplaceResult.NoMatch:
                continue;

            case ReplaceResult.RegexTimeout:
                irc.SendNotice(invoker, "Your regular expression timed out.");
                return;

            case ReplaceResult.Success:
                if (FoulPlay(replacedMsg))
                {
                    irc.SendNotice(invoker, "Replaced message was too long, not outputting to prevent spam.");
                }
                else
                {
                    irc.SendMessage(channel, "<{0}> {1}", item.Nick, replacedMsg);
                }
                return;
            } // switch
        }     // foreach
    }
Exemple #3
0
    public void HandleMessage(IChannelMsg e)
    {
        var replace = new ReplaceAction(e.Message);

        if (replace.ParseSuccess)
        {
            Replace(replace, e.Channel, e.Nick);
        }
        else
        {
            history.AddMessage(e.Channel, e.Nick, e.Message);
        }
    }
Exemple #4
0
        public static ReplaceAction ToggleDollar(string line, int cursor)
        {
            var fail = new ReplaceAction {
                do_nothing = true
            };
            var max_index           = Math.Min(line.Length - 1, cursor);
            var index_of_left_quote = line.LastIndexOf('"', max_index);

            if (index_of_left_quote < 0)
            {
                return(fail);
            }

            var index_of_dollar =
                index_of_left_quote > 0 && line[index_of_left_quote - 1] == '@'
                ? index_of_left_quote - 1
                : index_of_left_quote;

            if (index_of_dollar == 0 || line[index_of_dollar - 1] != '$')
            {
                return(new ReplaceAction {
                    replace_start = index_of_dollar,
                    replace_length = 0,
                    substitution = "$",
                    cursor_offset = +1
                });
            }
            else
            {
                return(new ReplaceAction {
                    replace_start = index_of_dollar - 1,
                    replace_length = 1,
                    substitution = "",
                    cursor_offset = -1
                });
            }
        }
Exemple #5
0
 public ReplaceDecoratorBase(ReplaceAction replaceAction)
 {
     _replaceAction = replaceAction;
 }
Exemple #6
0
 public ReplaceDecoratorBase(Dictionary <string, string> dict, ReplaceAction replaceAction)
 {
     Dict           = dict;
     _replaceAction = replaceAction;
 }
Exemple #7
0
        private void ExportButton_Click(object sender, RoutedEventArgs e)
        {
            var screen = new OpenFileDialog();

            if (screen.ShowDialog() == true)
            {
                var url = screen.FileName;

                using (StreamReader sr = new StreamReader(url))
                {
                    while (sr.Peek() >= 0)
                    {
                        string[] tokens_sub   = sr.ReadLine().Split(new string[] { " - " }, StringSplitOptions.None);
                        string[] tokens_space = tokens_sub[0].Split(new string[] { " " }, StringSplitOptions.None);
                        string[] tokens_Args  = tokens_sub[1].Split(new string[] { " " }, StringSplitOptions.None);

                        string first_word = tokens_space[0];

                        if (first_word == "Replace")
                        {
                            var _replaceArgs = new ReplaceArgs();
                            _replaceArgs.Needle = tokens_Args[1];
                            _replaceArgs.Hammer = tokens_Args[3];

                            var _action = new ReplaceAction();

                            var _replacAction = _action as StringAction;

                            var _cloneReplaceAction = _replacAction.Clone();
                            _cloneReplaceAction.Args = _replaceArgs;

                            ActionListBox.Items.Add(_cloneReplaceAction);
                        }
                        else if (first_word == "New")
                        {
                            var _newcaseArgs = new NewCaseArgs();
                            _newcaseArgs.Needle = tokens_Args[3];

                            var _action = new NewCaseAction();

                            var _newcaseAction = _action as StringAction;

                            var _cloneNewCaseAction = _newcaseAction.Clone();
                            _cloneNewCaseAction.Args = _newcaseArgs;

                            ActionListBox.Items.Add(_cloneNewCaseAction);
                        }
                        else if (first_word == "Fullname")
                        {
                            var _fullnameArgs = new FullnameNormalizeArgs();
                            _fullnameArgs.Needle = tokens_Args[3];

                            var _action = new FullnameNormalizeAction();

                            var _fullnameAction = _action as StringAction;

                            var _cloneFullNameAction = _fullnameAction.Clone();
                            _cloneFullNameAction.Args = _fullnameArgs;

                            ActionListBox.Items.Add(_cloneFullNameAction);
                        }
                        else if (first_word == "Move")
                        {
                            var _moveArgs = new MoveArgs();
                            _moveArgs.Needle = tokens_Args[2];

                            var _action = new MoveAction();

                            var _moveAction = _action as StringAction;

                            var _cloneMoveAction = _moveAction.Clone();
                            _cloneMoveAction.Args = _moveArgs;

                            ActionListBox.Items.Add(_cloneMoveAction);
                        }
                        else if (first_word == "Unique")
                        {
                            var _uniqueArgs = new UniqueNameArgs();
                            _uniqueArgs.Needle = tokens_Args[1];
                            _uniqueArgs.Hammer = tokens_Args[3];

                            var _action = new UniqueName();

                            var _uniqueAction = _action as StringAction;

                            var _cloneUniqueAction = _uniqueAction.Clone();
                            _cloneUniqueAction.Args = _uniqueArgs;

                            ActionListBox.Items.Add(_cloneUniqueAction);
                        }
                        else
                        {
                            var _removeArgs = new RemoveActionArgs();
                            _removeArgs.Needle = tokens_Args[2];

                            var _action = new RemoveAction();

                            var _removeAction = _action as StringAction;

                            var _cloneRemoveAction = _removeAction.Clone();
                            _cloneRemoveAction.Args = _removeArgs;

                            ActionListBox.Items.Add(_cloneRemoveAction);
                        }
                    }
                }
                System.Windows.MessageBox.Show("Exported!");
            }
        }