internal static HtmlText Create(string doc, HtmlTag startTag, HtmlTag endTag) { var startIndex = 0; if (startTag != null) { startIndex = startTag.StartIndex + startTag.Length; } var endIndex = doc.Length; if (endTag != null) { endIndex = endTag.StartIndex; } var text = new HtmlText(doc, startIndex, endIndex); if (text != null && !string.IsNullOrEmpty(text.Content)) { return(text); } return(null); }
private static string AddFragments(TagReader reader, HtmlFragment parentFragment, Stack <string> openTagStack) { while (reader.Read()) { parentFragment.TryToAddText(HtmlText.Create(reader.Document, reader.PreviousTag, reader.CurrentTag)); if (reader.CurrentTag.TagType == TagType.Close && openTagStack.Any(t => t.Equals(reader.CurrentTag.Name, StringComparison.CurrentCultureIgnoreCase))) { return(reader.CurrentTag.Name); } var node = parentFragment.AddNode(reader.CurrentTag); node.Parent = parentFragment; if (reader.CurrentTag.TagType == TagType.Open) { openTagStack.Push(reader.CurrentTag.Name); var lastClosed = AddFragments(reader, node, openTagStack); if (lastClosed != openTagStack.Pop()) { return(lastClosed); } } } return(null); }
internal void TryToAddText(HtmlText text) { if (text != null) { Fragments.Add(text); } }
internal static HtmlText Create(string doc, HtmlTag startTag, HtmlTag endTag) { if (startTag != null && endTag != null) { var text = new HtmlText(doc, startTag.StartIndex + startTag.Length, endTag.StartIndex); if (text != null && !string.IsNullOrEmpty(text.Content)) { return(text); } } return(null); }
internal static HtmlText Create(string doc, HtmlTag startTag, HtmlTag endTag) { var startIndex = 0; if (startTag != null) { startIndex = startTag.StartIndex + startTag.Length; } var endIndex = doc.Length; if (endTag != null) { endIndex = endTag.StartIndex; } var text = new HtmlText(doc, startIndex, endIndex); if (text != null && !string.IsNullOrEmpty(text.Content)) { return text; } return null; }