@posthog/all-contributors-cli
Version:
Tool to easily add recognition for new contributors
60 lines (43 loc) • 1.62 kB
JavaScript
;
var _ = require('lodash/fp');
var formatContributionType = require('./format-contribution-type');
var avatarTemplate = _.template('<img src="<%= contributor.avatar_url %>" width="50" height="50" alt=""/>');
var avatarBlockTemplate = _.template('<a href="<%= contributor.profile %>"><%= avatar %></a>');
var avatarBlockTemplateNoProfile = _.template('<%= avatar %>');
var contributorTemplate = _.template('<%= avatarBlock %>');
var defaultImageSize = 100;
function defaultTemplate(templateData) {
var name = escapeName(templateData.contributor.name);
var avatar = avatarTemplate(_.assign(templateData, {
name
}));
var avatarBlockTemplateData = _.assign({
name,
avatar
}, templateData);
var avatarBlock = null;
if (templateData.contributor.profile) {
avatarBlock = avatarBlockTemplate(avatarBlockTemplateData);
} else {
avatarBlock = avatarBlockTemplateNoProfile(avatarBlockTemplateData);
}
return contributorTemplate(_.assign({
avatarBlock
}, templateData));
}
function escapeName(name) {
return name.replace(new RegExp('\\|', 'g'), '|');
}
module.exports = function (options, contributor) {
var formatter = _.partial(formatContributionType, [options, contributor]);
var contributions = contributor.contributions.map(formatter).join(' ');
var templateData = {
contributions,
contributor,
options: _.assign({
imageSize: defaultImageSize
}, options)
};
var customTemplate = options.contributorTemplate && _.template(options.contributorTemplate);
return (customTemplate || defaultTemplate)(templateData);
};