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; //} }
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)); }