dependencies tabs
diff --git a/geronimo-microprofile-site/src/main/jbake/assets/js/geronimo.js b/geronimo-microprofile-site/src/main/jbake/assets/js/geronimo.js
new file mode 100644
index 0000000..6a90d74
--- /dev/null
+++ b/geronimo-microprofile-site/src/main/jbake/assets/js/geronimo.js
@@ -0,0 +1,82 @@
+$(function() {
+ // ensure dependencies blocks are multi-dependencies friendly
+ function isSimpleTag(content, tagName) {
+ var endTag = '</' + tagName + '>';
+ return content.indexOf('<' + tagName + '>') === 0 && content.indexOf(endTag) === content.length - endTag.length;
+ }
+ function toADocCode(content, highlighting) {
+ return '<div class="listingblock dependency-sample-code"><div class="content"><pre class="prettyprint">' +
+ '<code class="language-' + highlighting + ' hljs" data-lang="' + highlighting + '">' + content + '</code></pre></div></div>';
+ }
+ function extractFromXml(content, tagName) {
+ var startTag = '<' + tagName + '>';
+ var start = content.indexOf(startTag);
+ var end = content.indexOf('</' + tagName + '>', start + 1);
+ if (start < 0 || end <= start) {
+ return false;
+ }
+ return content.substring(start + startTag.length, end);
+ }
+ function parseGav(dep) {
+ var artifactId = extractFromXml(dep, 'artifactId');
+ var groupId = extractFromXml(dep, 'groupId');
+ var version = extractFromXml(dep, 'version');
+ var scope = extractFromXml(dep, 'scope');
+ return {
+ success: artifactId && groupId && version,
+ groupId: groupId,
+ artifactId: artifactId,
+ version: version,
+ scope: scope || 'compile'
+ };
+ }
+ var codeCounter = 0;
+ $('code.language-xml').each(function () {
+ var code = $(this);
+ var content = code.text().trim();
+ if (isSimpleTag(content, 'dependency')) {
+ var highlightjsParent = code.parent();
+ if (!highlightjsParent || !highlightjsParent.hasClass('prettyprint')) {
+ return;
+ }
+ var contentParent = highlightjsParent.parent();
+ if (!contentParent || !contentParent.hasClass('content')) {
+ return;
+ }
+ var listingblockParent = contentParent.parent();
+ if (!listingblockParent || !listingblockParent.hasClass('listingblock')) {
+ return;
+ }
+ var gav = parseGav(content);
+ if (!gav.success) {
+ return;
+ }
+ listingblockParent.html('<ul class="nav nav-tabs">'+
+ '<li class="show active"><a data-toggle="tab" href="#__generated_code_tab_maven_' + codeCounter + '">Maven</a></li>' +
+ '<li><a data-toggle="tab" href="#__generated_code_tab_gradle_' + codeCounter + '">Gradle</a></li>' +
+ '<li><a data-toggle="tab" href="#__generated_code_tab_sbt_' + codeCounter + '">SBT</a></li>' +
+ '<li><a data-toggle="tab" href="#__generated_code_tab_ivy_' + codeCounter + '">Ivy</a></li>' +
+ '<li><a data-toggle="tab" href="#__generated_code_tab_grapes_' + codeCounter + '">Grapes</a></li>' +
+ '</ul>' +
+ '<div class="tab-content dependency-sample">' +
+ '<div id="__generated_code_tab_maven_' + codeCounter + '" class="tab-pane fade in show active">' +
+ toADocCode($('<div/>').text(content).html(), 'xml') +
+ '</div>' +
+ '<div id="__generated_code_tab_gradle_' + codeCounter + '" class="tab-pane fade">' +
+ toADocCode(gav.scope + ' ' + '"' + gav.groupId + ':' + gav.artifactId + ':' + gav.version + '"', 'java') +
+ '</div>' +
+ '<div id="__generated_code_tab_sbt_' + codeCounter + '" class="tab-pane fade">' +
+ toADocCode('libraryDependencies += "' + gav.groupId + '" % "' + gav.artifactId + '" % "' + gav.version + '" % ' + gav.scope, 'text') +
+ '</div>' +
+ '<div id="__generated_code_tab_ivy_' + codeCounter + '" class="tab-pane fade">' +
+ toADocCode($('<div/>').text('<dependency org="' + gav.groupId + '" name="' + gav.artifactId + '" rev="' + gav.version + '" />').html(), 'xml') +
+ '</div>' +
+ '<div id="__generated_code_tab_grapes_' + codeCounter + '" class="tab-pane fade">' +
+ toADocCode('@Grapes(\n @Grab(group=\'' + gav.groupId + '\', module=\'' + gav.artifactId + '\', version=\'' + gav.version + '\')\n)', 'java') +
+ '</div>' +
+ '</div>');
+ codeCounter++;
+ }
+ });
+ prettyPrint();
+});
diff --git a/geronimo-microprofile-site/src/main/jbake/templates/footer.ftl b/geronimo-microprofile-site/src/main/jbake/templates/footer.ftl
index 9464183..2c8a740 100644
--- a/geronimo-microprofile-site/src/main/jbake/templates/footer.ftl
+++ b/geronimo-microprofile-site/src/main/jbake/templates/footer.ftl
@@ -11,5 +11,6 @@
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.2/js/bootstrap.min.js" integrity="sha384-o+RDsa0aLu++PJvFqy8fFScvbHFLtbvScb8AjopnFD+iEQ7wo/CG0xlczd+2O/em" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/prettify/r298/prettify.min.js" integrity="sha256-SHXnnZAbgSEf+OBhDLR7I2mx9vNZAIzPeCGhxRV+VQw=" crossorigin="anonymous"></script>
+ <script src="<#if (content.rootpath)??>${content.rootpath}</#if>js/geronimo.js"></script>
</body>
</html>
diff --git a/geronimo-microprofile-site/src/main/jbake/templates/header.ftl b/geronimo-microprofile-site/src/main/jbake/templates/header.ftl
index 7fb9c09..df95e42 100644
--- a/geronimo-microprofile-site/src/main/jbake/templates/header.ftl
+++ b/geronimo-microprofile-site/src/main/jbake/templates/header.ftl
@@ -17,5 +17,5 @@
<script src="https://cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv.min.js" integrity="sha256-3Jy/GbSLrg0o9y5Z5n1uw0qxZECH7C6OQpVBgNFYa0g=" crossorigin="anonymous"></script>
<![endif]-->
</head>
- <body onload="prettyPrint()">
+ <body>
<div id="wrap">