2016-03-01 22:30:14 +00:00
|
|
|
'use strict';
|
|
|
|
|
|
|
|
var _ = require('lodash/fp');
|
2016-05-05 14:27:26 +00:00
|
|
|
var formatContributionType = require('./format-contribution-type');
|
2016-03-01 22:30:14 +00:00
|
|
|
|
2016-05-05 15:30:15 +00:00
|
|
|
var avatarTemplate = _.template('<img src="<%= contributor.avatar_url %>" width="<%= options.imageSize %>px;"/>');
|
2016-03-06 18:37:26 +00:00
|
|
|
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 %>');
|
|
|
|
|
2016-03-20 19:33:01 +00:00
|
|
|
var defaultImageSize = 100;
|
|
|
|
|
2016-03-01 22:30:14 +00:00
|
|
|
function defaultTemplate(templateData) {
|
|
|
|
var avatar = avatarTemplate(templateData);
|
2016-03-06 23:20:24 +00:00
|
|
|
var avatarBlock = avatarBlockTemplate(_.assign({avatar: avatar}, templateData));
|
|
|
|
return contributorTemplate(_.assign({avatarBlock: avatarBlock}, templateData));
|
2016-03-01 22:30:14 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
module.exports = function formatContributor(options, contributor) {
|
2016-03-06 15:49:46 +00:00
|
|
|
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,
|
2016-05-05 15:30:15 +00:00
|
|
|
contributor: contributor,
|
|
|
|
options: _.assign({imageSize: defaultImageSize}, options)
|
2016-03-01 22:30:14 +00:00
|
|
|
};
|
2016-03-06 15:49:46 +00:00
|
|
|
var customTemplate = options.contributorTemplate && _.template(options.contributorTemplate);
|
2016-03-01 22:30:14 +00:00
|
|
|
return (customTemplate || defaultTemplate)(templateData);
|
|
|
|
};
|