private List <string> Replace(List <string> transformedMarkdown, ItemMarkdown itemMarkdown, int indexOpenintTags, int indexEndingTag) { transformedMarkdown[indexOpenintTags] = itemMarkdown.OpeningTag; transformedMarkdown[indexEndingTag] = itemMarkdown.EndingTag; return(transformedMarkdown); }
private string Blocked(ItemMarkdown itemMarkdown) { var blocedSeparator = ""; for (int i = 0; i < itemMarkdown.Separator.Length; i++) { blocedSeparator += '\\' + itemMarkdown.BlockedSeparator[0]; } return(blocedSeparator); }
public static List <string> PutLineInList(string markdown, ItemMarkdown itemMarkdown) { var transformedMarkdown = new List <string>() { markdown }; transformedMarkdown = SelectTags(transformedMarkdown, itemMarkdown.Separator); if (itemMarkdown.BlockedSeparator == null) { return(transformedMarkdown); } foreach (var separator in itemMarkdown.BlockedSeparator) { transformedMarkdown = SelectTags(transformedMarkdown, separator, itemMarkdown.Separator); } return(transformedMarkdown); }
private string Tagging(List <string> transformedMarkdown, ItemMarkdown itemMarkdown) { var indexOpeningTags = new Stack <int>(); var isBlocked = false; for (int i = 0; i < transformedMarkdown.Count; i++) { if (transformedMarkdown[i] == itemMarkdown.Separator && IsTag(transformedMarkdown, i)) { if (isBlocked) { transformedMarkdown[i] = Blocked(itemMarkdown); continue; } if (isOpeningTag(transformedMarkdown, i)) { indexOpeningTags.Push(i); continue; } if (isEndingTag(transformedMarkdown, i)) { if (indexOpeningTags.Count == 0) { continue; } transformedMarkdown = Replace(transformedMarkdown, itemMarkdown, indexOpeningTags.Pop(), i); } } if (itemMarkdown.BlockedSeparator != null && itemMarkdown.BlockedSeparator.Contains(transformedMarkdown[i]) && IsTag(transformedMarkdown, i)) { isBlocked = !isBlocked; } } return(ListToString(transformedMarkdown)); }