Browse Source

Skip empty ul element generation for empty h1 lists

pull/63/head
Geert van Horrik 8 years ago
parent
commit
f6a6421bad
1 changed files with 17 additions and 6 deletions
  1. +17
    -6
      src/DocNet/SimpleNavigationElement.cs

+ 17
- 6
src/DocNet/SimpleNavigationElement.cs View File

@@ -194,10 +194,11 @@ namespace Docnet
relativePathToRoot,
this.GetFinalTargetUrl(navigationContext.PathSpecification),
this.Name));
if (isCurrent && _relativeLinksOnPage.Any())
if (isCurrent && _relativeLinksOnPage.SelectMany(x => x.Children).Any(x => x.Level > 1))
{
// generate relative links
fragments.Add(string.Format("<ul class=\"{0}\">", this.ParentContainer.IsRoot ? "currentrelativeroot" : "currentrelative"));

foreach (var heading in _relativeLinksOnPage)
{
var content = GenerateToCFragmentForHeading(heading, navigationContext);
@@ -206,6 +207,7 @@ namespace Docnet
fragments.Add(content);
}
}

fragments.Add("</ul>");
}
else
@@ -254,7 +256,8 @@ namespace Docnet
var stringBuilder = new StringBuilder();

// Skip heading 1 and larger than allowed
if (heading.Level > 1 && heading.Level <= navigationContext.MaxLevel)
var isHeading1 = heading.Level <= 1;
if (!isHeading1 && heading.Level <= navigationContext.MaxLevel)
{
stringBuilder.AppendLine(string.Format("<li class=\"tocentry\"><a href=\"#{0}\">{1}</a></li>", heading.Id, heading.Name));
}
@@ -272,11 +275,19 @@ namespace Docnet

if (childContentBuilder.Length > 0)
{
stringBuilder.AppendLine("<li class=\"tocentry\">");
stringBuilder.AppendLine(string.Format("<ul class=\"{0}\">", this.ParentContainer.IsRoot ? "currentrelativeroot" : "currentrelative"));
if (!isHeading1)
{
stringBuilder.AppendLine("<li class=\"tocentry\">");
stringBuilder.AppendLine(string.Format("<ul class=\"{0}\">", this.ParentContainer.IsRoot ? "currentrelativeroot" : "currentrelative"));
}

stringBuilder.AppendLine(childContentBuilder.ToString());
stringBuilder.AppendLine("</ul>");
stringBuilder.AppendLine("</li>");

if (!isHeading1)
{
stringBuilder.AppendLine("</ul>");
stringBuilder.AppendLine("</li>");
}
}

return stringBuilder.ToString();


Loading…
Cancel
Save