Don't render navbar.md metadata in html After using a named link in navbar.md as metadata to activate extensions they remained rendered in html as plain text Change-Id: I5562853692f763f58be08e132be1ce550aafd9dd
diff --git a/java/com/google/gitiles/doc/Navbar.java b/java/com/google/gitiles/doc/Navbar.java index c05f9d9..c866aa9 100644 --- a/java/com/google/gitiles/doc/Navbar.java +++ b/java/com/google/gitiles/doc/Navbar.java
@@ -89,8 +89,8 @@ } private void parse(String markdown) { - extractMetadata(markdown); - node = GitilesMarkdown.parse(cfg, markdown); + String md = extractMetadata(markdown); + node = GitilesMarkdown.parse(cfg, md); extractSiteTitle(); } @@ -107,24 +107,33 @@ } } - private void extractMetadata(String markdown) { + private String extractMetadata(String markdown) { Matcher m = META_LINK.matcher(markdown); - while (m.find()) { - String key = m.group(1).toLowerCase(); - String url = m.group(2).trim(); - switch (key) { - case "logo": - logoUrl = url; - break; - case "home": - homeUrl = url; - break; - case "extensions": - Set<String> names = splitExtensionNames(url); - cfg = cfg.copyWithExtensions(enabled(names), disabled(names)); - break; - } + boolean foundMetadata = m.find(); + if (foundMetadata) { + StringBuffer sb = new StringBuffer(); + do { + String key = m.group(1).toLowerCase(); + String url = m.group(2).trim(); + switch (key) { + case "logo": + logoUrl = url; + break; + case "home": + homeUrl = url; + break; + case "extensions": + Set<String> names = splitExtensionNames(url); + cfg = cfg.copyWithExtensions(enabled(names), disabled(names)); + break; + } + m.appendReplacement(sb, ""); + foundMetadata = m.find(); + } while (foundMetadata); + m.appendTail(sb); + return sb.toString(); } + return markdown; } private static Set<String> splitExtensionNames(String url) {
diff --git a/javatests/com/google/gitiles/doc/DocServletTest.java b/javatests/com/google/gitiles/doc/DocServletTest.java index 5d47cd8..48300fc 100644 --- a/javatests/com/google/gitiles/doc/DocServletTest.java +++ b/javatests/com/google/gitiles/doc/DocServletTest.java
@@ -40,7 +40,12 @@ @Test public void includesNavbar() throws Exception { - String navbar = "# Site Title\n" + "\n" + "* [Home](index.md)\n" + "* [README](README.md)\n"; + String navbar = + "# Site Title\n" + + "\n" + + "* [Home](index.md)\n" + + "* [README](README.md)\n" + + "[extensions]: blocknote\n"; repo.branch("master") .commit() .add("README.md", "# page\n\nof information.") @@ -53,6 +58,7 @@ assertThat(html).contains("<span class=\"Header-anchorTitle\">Site Title</span>"); assertThat(html).contains("<li><a href=\"/b/repo/+/master/index.md\">Home</a></li>"); assertThat(html).contains("<li><a href=\"/b/repo/+/master/README.md\">README</a></li>"); + assertThat(html).doesNotContain("extensions"); assertThat(html) .contains("<h1><a class=\"h\" name=\"page\" href=\"#page\"><span></span></a>page</h1>"); }