-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathindex.js
45 lines (32 loc) · 1.21 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
'use strict'
module.exports = shieldman
var shieldsList = require('./lib/shields-list')
var customShieldsList = require('./lib/shield-custom.js')
function shieldman (service, opts) {
if (!service) {
throw new TypeError('`service` is required')
}
opts = opts || {}
var ext = opts.ext || 'svg'
var serviceName = service.toLowerCase()
var isNormalShield = serviceName in shieldsList
var shieldTemplate = isNormalShield ? shieldsList[serviceName] : customShieldsList[serviceName]
if (!shieldTemplate) {
return undefined
}
var branch = shieldTemplate.hasBranchVersion ? opts.branch : null
var linkTemplate = branch && shieldTemplate.branchLink || shieldTemplate.link
return {
text: shieldTemplate.text,
link: format(linkTemplate, opts),
image: isNormalShield ? getShieldImage(shieldTemplate.path) : shieldTemplate.path,
}
function getShieldImage (imagePath) {
var branchSuffix = branch && ('/' + branch) || ''
return 'https://img.shields.io/' + format(imagePath, opts) +
branchSuffix + '.' + ext + (opts.style ? '?style=' + opts.style : '')
}
}
function format (str, params) {
return str.replace(/{([^{}]+)}/g, function (str, match) { return params[match] })
}