badges
Version:
The definitive collection of badges for rendering
108 lines (107 loc) • 3.98 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.renderBadges = exports.renderBadge = exports.badges = void 0;
// Import
const badges = __importStar(require("./badges.js"));
exports.badges = badges;
/**
* Render a specified badge with the appropriate wrapping (div if block badge, span if inline badge)
* @method renderBadge
* @param badgeName The name of the badge to render
* @param config The configuration to pass to the badge render method
* @return The rendered badge
*/
function renderBadge(badgeName, config = {}) {
if (badgeName === '---') {
return '<br class="badge-separator" />';
}
// Fetch
// @ts-ignore
const badgeMethod = badges[badgeName];
// Send the badge value and options to the render method
const badgeResult = badgeMethod(config).trim();
if (!badgeResult)
return '';
// We have a result, so let's wrap it
const elementName = badgeMethod.badgeInline === false ? 'div' : 'span';
const wrappedResult = `<${elementName} class="badge-${badgeName}">${badgeResult}</${elementName}>`;
// Done
return wrappedResult;
}
exports.renderBadge = renderBadge;
/**
* Render specified badges with wrapping
* @param list The list of badge names to render
* @param config The configuration to render the badge with
* @param options An object that defaults to `{filterCategory: false, filterScripts: false}`
* @return The rendered badges
*/
function renderBadges(list, config = {}, options = { filterCategory: false, filterScripts: true }) {
// Prepare
const results = [];
// Render the badges
list.forEach(function (badgeName) {
let badgeConfig = config;
// Custom Config?
if (Array.isArray(badgeName)) {
badgeConfig = badgeName[1];
badgeName = badgeName[0];
}
// Seperator?
if (badgeName === '---') {
// Do not render seperators if we only wanted a single category
if (options.filterCategory)
return;
}
// Exists?
else {
// @ts-ignore
const badge = badges[badgeName];
if (badge) {
// Category?
if (options.filterCategory &&
options.filterCategory !== badge.badgeCategory)
return;
// Script?
if (options.filterScripts && badge.badgeScript)
return;
}
// Doesn't exist
else {
throw new Error(`the badge ${badgeName} does not exist`);
}
}
// Render
const badgeResult = renderBadge(badgeName, badgeConfig).trim();
if (!badgeResult)
return;
// Rendered successfully, add the result
results.push(badgeResult);
});
// Return
return results.join('\n');
}
exports.renderBadges = renderBadges;