/// <summary> /// Visits the unordered list item. /// </summary> /// <param name="listItem">The list item.</param> public virtual void VisitUnorderedListItem(UnorderedListItem listItem) { if (listItem == null) { return; } _writer.Write("{0} ", new string('*', listItem.Level)); if (listItem.Count > 1) { _insideListItem = true; } for (int index = 0; index < listItem.Count; index++) { var element = listItem[index]; var lastElement = index == listItem.Count - 1; if (lastElement) { _insideListItem = false; } element.Accept(this); if (!lastElement) { _writer.WriteLine("+"); } } }
public virtual void Visit(UnorderedListItem listItem) { if (listItem.Count == 1) { _writer.Write("<li>"); _isBlock = false; Visit((Container)listItem); _isBlock = true; _writer.WriteLine("</li>"); } else { _writer.WriteLine("<li>"); Visit((Container)listItem); _writer.WriteLine("</li>"); } }
/// <summary> /// Visits the unordered list item. /// </summary> /// <param name="listItem">The list item.</param> public virtual void VisitUnorderedListItem(UnorderedListItem listItem) { VisitAttributable(listItem); VisitContainer(listItem); }
public override void InternalParse(Container container, IDocumentReader reader, Func <string, bool> predicate, ref List <string> buffer, ref AttributeList attributes) { var match = PatternMatcher.ListItem.Match(reader.Line); if (!match.Success) { throw new ArgumentException("not an unordered list item"); } var level = match.Groups["level"].Value; var text = match.Groups["text"].Value; var listItem = new UnorderedListItem(level.Length); listItem.Attributes.Add(attributes); buffer.Add(text); reader.ReadLine(); attributes = null; while (reader.Line != null && !PatternMatcher.BlankCharacters.IsMatch(reader.Line) && !PatternMatcher.ListItem.IsMatch(reader.Line) && !PatternMatcher.CheckListItem.IsMatch(reader.Line) && (predicate == null || !predicate(reader.Line))) { if (PatternMatcher.ListItemContinuation.IsMatch(reader.Line)) { ProcessBuffer(listItem, ref buffer, ref attributes); reader.ReadLine(); DescendingParse( listItem, reader, line => PatternMatcher.BlankCharacters.IsMatch(line) || PatternMatcher.ListItem.IsMatch(line) || PatternMatcher.CheckListItem.IsMatch(reader.Line), ref buffer, ref attributes); } else { buffer.Add(reader.Line); reader.ReadLine(); } } ProcessBuffer(listItem, ref buffer, ref attributes); UnorderedList unorderedList; if (container.Count > 0) { unorderedList = container[container.Count - 1] as UnorderedList; if (unorderedList != null && unorderedList.Items.Count > 0 && unorderedList.Items[0].Level == listItem.Level) { unorderedList.Items.Add(listItem); } else { unorderedList = new UnorderedList { Items = { listItem } }; container.Add(unorderedList); } } else { unorderedList = new UnorderedList { Items = { listItem } }; container.Add(unorderedList); } attributes = null; }