mirror of
https://github.com/thelounge/thelounge
synced 2024-11-23 20:43:08 +00:00
30 lines
892 B
JavaScript
30 lines
892 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;
|
|
}, {});
|