all-contributors-cli/lib/generate/formatContributor.js

39 lines
1.5 KiB
JavaScript
Raw Normal View History

2016-03-01 22:30:14 +00:00
'use strict';
var _ = require('lodash/fp');
var formatContributionType = require('./formatContributionType');
var avatarTemplate = _.template('![<%= contributor.name %>](<%= contributor.avatar_url %>)');
var avatarBlockTemplate = _.template('[<%= avatar %><br /><sub><%= contributor.name %></sub>](<%= contributor.profile %>)');
2016-03-01 22:30:14 +00:00
var contributorTemplate = _.template('<%= avatarBlock %><br /><%= contributions %>');
function defaultTemplate(templateData) {
var avatar = avatarTemplate(templateData);
var avatarBlock = avatarBlockTemplate(_.assign({ avatar: avatar }, templateData));
return contributorTemplate(_.assign({ avatarBlock: avatarBlock }, templateData));
}
function updateAvatarUrl(options, contributor) {
var avatarUrl = contributor.avatar_url;
var paramJoiner = _.includes('?', avatarUrl) ? '&' : '?';
return _.assign(contributor, {
avatar_url: avatarUrl + paramJoiner + 's=' + options.imageSize
});
'<%= contributor.avatar_url %>?s=<%= options.imageSize %>'
}
module.exports = function formatContributor(options, contributor) {
var formatter = _.partial(formatContributionType, [options, contributor]);
var contributions = contributor.contributions
.map(formatter)
.join(' ');
2016-03-01 22:30:14 +00:00
var templateData = {
contributions: contributions,
contributor: updateAvatarUrl(options, contributor),
options: options
};
var customTemplate = options.contributorTemplate && _.template(options.contributorTemplate);
2016-03-01 22:30:14 +00:00
return (customTemplate || defaultTemplate)(templateData);
};