You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by dj...@apache.org on 2020/03/21 23:55:13 UTC
[camel-website] branch master updated: turn menu.js into a
antora-registered helper, simplify logic
This is an automated email from the ASF dual-hosted git repository.
djencks pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel-website.git
The following commit(s) were added to refs/heads/master by this push:
new e98ada0 turn menu.js into a antora-registered helper, simplify logic
new d06c7b5 Merge pull request #257 from djencks/issue-14764-header-menu
e98ada0 is described below
commit e98ada0b377dfd2dfcbf7413ddcf1071ee2d5ec2
Author: David Jencks <dj...@apache.org>
AuthorDate: Sat Mar 21 13:43:06 2020 -0700
turn menu.js into a antora-registered helper, simplify logic
---
antora-ui-camel/src/helpers/withMenuData.js | 39 +++++++++++++++++++++++++
antora-ui-camel/src/partials/header-content.hbs | 12 ++------
menu.js | 36 -----------------------
package.json | 2 +-
4 files changed, 42 insertions(+), 47 deletions(-)
diff --git a/antora-ui-camel/src/helpers/withMenuData.js b/antora-ui-camel/src/helpers/withMenuData.js
new file mode 100644
index 0000000..13e623c
--- /dev/null
+++ b/antora-ui-camel/src/helpers/withMenuData.js
@@ -0,0 +1,39 @@
+'use strict'
+
+const fs = require('fs')
+const path = require('path')
+const toml = require('toml')
+const matches = /http\S+/
+
+const data = fs.readFileSync(path.join(process.cwd(), 'config.toml'), 'utf8')
+const hugoConfig = toml.parse(data)
+const mainMenu = hugoConfig.menu.main
+
+const createMenu = (item) => {
+ return {
+ url: item.url || '#',
+ name: item.name,
+ children: mainMenu.filter((child) => child.parent === item.identifier).map(createMenu),
+ }
+}
+
+const menuData = mainMenu.filter((item) => (typeof (item.parent) === 'undefined')).map(createMenu)
+
+module.exports = (options) => {
+ const siteRootPath = options.data.root.siteRootPath
+ const mappedMenuData = menuData.map((item) => mapItem(item, siteRootPath))
+ return options.fn(this, {
+ data: {
+ items: mappedMenuData,
+ },
+ })
+}
+
+const mapItem = (item, siteRootPath) => {
+ const url = item.url === '#' ? '#' : matches.test(item.url) ? item.url : siteRootPath + item.url
+ return {
+ url,
+ name: item.name,
+ children: item.children.map((child) => mapItem(child, siteRootPath)),
+ }
+}
diff --git a/antora-ui-camel/src/partials/header-content.hbs b/antora-ui-camel/src/partials/header-content.hbs
index 992c01d..671ea92 100644
--- a/antora-ui-camel/src/partials/header-content.hbs
+++ b/antora-ui-camel/src/partials/header-content.hbs
@@ -9,22 +9,14 @@
{{#if children}}
<div class="navbar-item has-dropdown is-hoverable">
<a class="navbar-link navbar-topics" href="#">{{name}}</a>
- {{else}}
- <a class="navbar-item navbar-topics" href="{{../../siteRootPath}}{{url}}">{{name}}</a>
- {{/if}}
- {{#if children}}
<div class="navbar-dropdown">
{{#each children}}
- {{#hasPrefix url }}
<a class="navbar-item" href="{{url}}">{{name}}</a>
- {{else}}
- <a class="navbar-item" href="{{../../../siteRootPath}}{{url}}">{{name}}</a>
- {{/hasPrefix}}
{{/each}}
</div>
- {{/if}}
- {{#if children}}
</div>
+ {{else}}
+ <a class="navbar-item navbar-topics" href="{{url}}">{{name}}</a>
{{/if}}
{{/each}}
{{/withMenuData}}
diff --git a/menu.js b/menu.js
deleted file mode 100644
index 25844a8..0000000
--- a/menu.js
+++ /dev/null
@@ -1,36 +0,0 @@
-const fs = require('fs');
-const path = require('path');
-const toml = require('toml');
-const Handlebars = require('handlebars');
-
-const data = fs.readFileSync(path.join(__dirname, 'config.toml'), 'utf8');
-const hugoConfig = toml.parse(data);
-const mainMenu = hugoConfig.menu.main;
-
-const createMenu = item => {
- return {
- url: item.url || '#',
- name: item.name,
- children: mainMenu.filter(child => child.parent === item.identifier).map(createMenu)
- }
-}
-
-const menuData = mainMenu.filter(item => typeof(item.parent) === 'undefined').map(createMenu);
-
-Handlebars.registerHelper('withMenuData', (options) => {
- return options.fn(this, {
- data: {
- items: menuData
- }
- });
-});
-
-Handlebars.registerHelper('hasPrefix', function(str, options) {
- str = Handlebars.Utils.escapeExpression(str);
- var matches = new RegExp(/http\S+/);
- if (matches.test(str)) {
- return options.fn(this);
- }else {
- return options.inverse(this);
- }
-});
diff --git a/package.json b/package.json
index 5d5ed12..fba9efd 100644
--- a/package.json
+++ b/package.json
@@ -2,7 +2,7 @@
"version": "1.0.0-SNAPSHOT",
"license": "Apache-2.0",
"scripts": {
- "build:antora": "antora --require ./menu.js --clean --fetch antora-playbook.yml",
+ "build:antora": "antora --clean --fetch antora-playbook.yml",
"build:hugo": "hugo --cacheDir ${HUGO_CACHE_DIR:-$(pwd)/.hugo_data}",
"build:minify": "gulp minify",
"build": "run-s build:*",