public string TransformLine(string line, UsedIn usedIn, List <TagType> tags, string clipboard = "")
        {
            var lineOut = string.Empty;

            try
            {
                while (!string.IsNullOrEmpty(line))
                {
                    if (StringContainsTags(line, tags))
                    {
                        if (tags == null)
                        {
                            continue;
                        }
                        var first      = GetTagsOrderedInPosition(line, tags);
                        var firstPos   = first.ElementAt(0).Key;
                        var firstMatch = first.ElementAt(0).Value;
                        if (firstPos > 0)
                        {
                            lineOut += line.Substring(0, firstPos); //Line from tag-end to next tag-start
                            line     = line.Remove(0, firstPos);
                        }
                        else
                        {
                            lineOut += ParseTag( //Line from tag-start to tag-end
                                GetContentFromTagAndContent(firstMatch.ToString()),
                                GetTagFromTagAndContent(firstMatch.ToString()),
                                tags,
                                usedIn,
                                clipboard
                                );
                            line = line.Remove(0, firstMatch.Length);
                        }
                    }
                    else
                    {
                        lineOut += line;
                        line     = string.Empty;
                    }
                }

                return(lineOut);
            }
            catch (System.Net.WebException)
            {
                return(lineOut + "404 Not Found");
            }

            //catch (Exception)
            //{
            //    //return lineOut + "Line could not be transformed.";
            //    throw;
            //}
        }
Exemple #2
0
        private void LstPersonDesiresMouseDoubleClick([CanBeNull] object sender, [CanBeNull] MouseButtonEventArgs e)
        {
            if (LstPersonDesires.SelectedItem == null)
            {
                Logger.Error("Please select a desire.");
                return;
            }

            UsedIn ui = (UsedIn)LstPersonDesires.SelectedItem;

            Presenter.ApplicationPresenter.OpenItem(ui.Item);
        }
        private string Handle(string line, TagType tag, UsedIn usedIn, List <string> splitContent, string clipboard = "")
        {
            splitContent = RemoveDelimiterEscapeCharacter(splitContent);
            switch (tag)
            {
            case TagType.Regex:
                return(TagRegex.Handle(splitContent, clipboard));

            case TagType.RegexReplace:
                return(TagRegexReplace.Handle(splitContent, clipboard));

            case TagType.WebUrlGoTo when usedIn == UsedIn.SingleSelection:
                TagWebUrlGoTo.Handle(splitContent);
                break;

            case TagType.ChangeableContent:
                return(TagChangeableContent.Handle(line, usedIn, SetChangeableContent, _changedContentEdited,
                                                   _changedContent));

            case TagType.OutlookSearch when usedIn == UsedIn.SingleSelection:
                var unused = new TagOutlook(splitContent[0]);
                break;

            case TagType.OutlookSearch when usedIn != UsedIn.SingleSelection:
                return(tag + "(" + line + ")");    //tag is removed in ModifiedListbox

            case TagType.RegexCsvFileGet:
                return(TagRegexCsvFileGet.Handle(splitContent));

            case TagType.Password:
                return(TagPassword.Handle(splitContent, usedIn));

            case TagType.Info:
                return(TagInfo.Handle(line, splitContent, usedIn));

            case TagType.Clipboard:
                return(clipboard);

            case TagType.WebGetJason:
                return(_tagWebGetJason.Handle(line, splitContent));

            case TagType.WebGet:
                return(TagWebGet.Handle(line, usedIn));

            case TagType.FromUnixTimeMilliSecondsToUtc:
                return(TagFromUnixTimeMilliSecondsToUtc.Handle(splitContent));

            case TagType.ConsoleOpen:
                return(TagConsole.Handle(line, usedIn));

            case TagType.NewLine:
                return(TagNewLine.Handle(splitContent, usedIn));

            case TagType.Caption:
                return(tag + "(" + line + ")");    //tag is removed in ModifiedListbox

            case TagType.NotSelectableLine:
                return(tag + "(" + line + ")");    //tag is removed in ModifiedListbox

            case TagType.WebUrlGoTo when usedIn != UsedIn.SingleSelection:
                return(tag + "(" + line + ")");    //tag is removed in ModifiedListbox

            case TagType.NoTag:
                break;

            case TagType.Encrypt:
                break;

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

            return(line);
        }
        private string ParseTag(string contents, TagType tag, List <TagType> tagTypes, UsedIn usedIn,
                                string clipboard = "")
        {
            var line    = new StringBuilder(contents);
            var content = CreateAListOfSemicolonSeparatedContentForATag(contents, tagTypes);
            var ctr     = 0;

            foreach (var item in content.ToList())
            {
                if (StringContainsTags(item, tagTypes))                                         //Is content a nested Tag?
                {
                    content[ctr] = TransformLine(item, UsedIn.NestedTags, tagTypes, clipboard); //Recursive.
                    if (!string.IsNullOrEmpty(item))
                    {
                        line = line.Replace(item, content[ctr]);
                    }
                }
                else
                {
                    content[ctr] = item;
                    if (!string.IsNullOrEmpty(item))
                    {
                        line = line.Replace(item, content[ctr]);
                    }
                }

                ctr += 1;
            }

            return(Handle(line.ToString(), tag, usedIn, content, clipboard));
        }