thelounge/client/views/index.js

28 lines
875 B
JavaScript

"use strict";
// This creates a version of `require()` in the context of the current
// directory, so we iterate over its content, which is a map statically built by
// Webpack.
// Second argument says it's recursive, third makes sure we only load templates.
const requireViews = require.context(".", true, /\.tpl$/);
module.exports = requireViews.keys().reduce((acc, path) => {
// We are going to create nested properties on the accumulator object.
let tmp = acc;
// Split path by folders, and create a new property if necessary/
// First 2 characters are "./"/
// Last element in the array ends with `.tpl` and needs to be `require`d.
path.substr(2).split("/").forEach((key) => {
if (key.endsWith(".tpl")) { //
tmp[key.substr(0, key.length - 4)] = requireViews(path);
} else {
tmp[key] = tmp[key] || {};
}
tmp = tmp[key];
});
return acc;
}, {});