don't apply logoColor param to multi-coloured logos (#2889)
This stops us from doing this:  - https://img.shields.io/badge/logo-npm-blue.svg?logo=npm&logoColor=green but still allows us to do this  - https://img.shields.io/badge/logo-discord-blue.svg?logo=discord&logoColor=green
This commit is contained in:
@@ -16,10 +16,13 @@ function loadLogos() {
|
||||
// filename is eg, github.svg
|
||||
const svg = fs.readFileSync(`${logoDir}/${filename}`).toString()
|
||||
const base64 = svg2base64(svg)
|
||||
// logo is monochrome if it only has one fill= statement
|
||||
const isMonochrome = (svg.match(/fill="(.+?)"/g) || []).length === 1
|
||||
|
||||
// eg, github
|
||||
const name = filename.slice(0, -'.svg'.length).toLowerCase()
|
||||
logos[name] = {
|
||||
isMonochrome,
|
||||
svg,
|
||||
base64,
|
||||
}
|
||||
|
||||
@@ -55,9 +55,9 @@ function getShieldsIcon({ name, color }) {
|
||||
return undefined
|
||||
}
|
||||
|
||||
const { svg, base64 } = logos[key]
|
||||
const { svg, base64, isMonochrome } = logos[key]
|
||||
const svgColor = toSvgColor(color)
|
||||
if (svgColor) {
|
||||
if (svgColor && isMonochrome) {
|
||||
return svg2base64(svg.replace(/fill="(.+?)"/g, `fill="${svgColor}"`))
|
||||
} else {
|
||||
return base64
|
||||
|
||||
@@ -24,13 +24,18 @@ describe('Logo helpers', function() {
|
||||
})
|
||||
|
||||
test(prepareNamedLogo, () => {
|
||||
// These two strings are identical except for characters 159-165 which
|
||||
// differ.
|
||||
given({ name: 'npm' }).expect(
|
||||
// NPM uses multiple colors so the color param should be ignored
|
||||
const npmLogo =
|
||||
'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0MCA0MCI+PHBhdGggZD0iTTAgMGg0MHY0MEgwVjB6IiBmaWxsPSIjY2IwMDAwIi8+PHBhdGggZmlsbD0iI2ZmZiIgZD0iTTcgN2gyNnYyNmgtN1YxNGgtNnYxOUg3eiIvPjwvc3ZnPgo='
|
||||
given({ name: 'npm' }).expect(npmLogo)
|
||||
given({ name: 'npm', color: 'blue' }).expect(npmLogo)
|
||||
|
||||
// dependabot only uses one color so the color param should be respected
|
||||
given({ name: 'dependabot' }).expect(
|
||||
'data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgZmlsbD0iI2ZmZiI+PHBhdGggZD0iTTkuNzAyLjc3OHY0LjY0OWgzLjA2OFY2Ljk4SDEuNTI4djcuMjM0SDB2NC42NDloMS41Mjh2My42MTdoMjAuOTQ0di0zLjYxN0gyNHYtNC42NDloLTEuNTI4VjYuOThoLTguMTc0Vi43Nzh6bS0uNTIzIDExLjg3bDEuMDIgMS4wNDQtMy4wNDQgMy4wOTUtMi4wNS0yLjA1IDEuMDItMS4wNDUgMS4wMyAxLjAzMnptOC42OTcgMGwxLjAxOCAxLjA0NC0zLjA2OCAzLjA5NS0yLjAzNy0yLjA1IDEuMDE5LTEuMDQ1IDEuMDE4IDEuMDMyeiIvPjwvc3ZnPg=='
|
||||
)
|
||||
given({ name: 'npm', color: 'blue' }).expect(
|
||||
'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0MCA0MCI+PHBhdGggZD0iTTAgMGg0MHY0MEgwVjB6IiBmaWxsPSIjMDA3ZWM2Ii8+PHBhdGggZmlsbD0iIzAwN2VjNiIgZD0iTTcgN2gyNnYyNmgtN1YxNGgtNnYxOUg3eiIvPjwvc3ZnPgo='
|
||||
given({ name: 'dependabot', color: 'blue' }).expect(
|
||||
'data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgZmlsbD0iIzAwN2VjNiI+PHBhdGggZD0iTTkuNzAyLjc3OHY0LjY0OWgzLjA2OFY2Ljk4SDEuNTI4djcuMjM0SDB2NC42NDloMS41Mjh2My42MTdoMjAuOTQ0di0zLjYxN0gyNHYtNC42NDloLTEuNTI4VjYuOThoLTguMTc0Vi43Nzh6bS0uNTIzIDExLjg3bDEuMDIgMS4wNDQtMy4wNDQgMy4wOTUtMi4wNS0yLjA1IDEuMDItMS4wNDUgMS4wMyAxLjAzMnptOC42OTcgMGwxLjAxOCAxLjA0NC0zLjA2OCAzLjA5NS0yLjAzNy0yLjA1IDEuMDE5LTEuMDQ1IDEuMDE4IDEuMDMyeiIvPjwvc3ZnPg=='
|
||||
)
|
||||
|
||||
it('preserves color if light logo on dark background', function() {
|
||||
|
||||
@@ -1 +1 @@
|
||||
<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M2.594 0a.514.514 0 0 0-.344.11.404.404 0 0 0-.133.306v23.197c0 .124.048.246.145.312.096.065.208.075.332.075h5.593c.13 0 .243-.02.334-.093.092-.072.131-.2.112-.317l.002.023v-1.467a.367.367 0 0 0-.16-.301.612.612 0 0 0-.344-.087H5.613c-.11 0-.17-.02-.191-.037-.022-.016-.032-.03-.032-.1V2.408c0-.071.012-.094.041-.116.03-.023.102-.05.239-.05h2.488c.124 0 .235-.01.332-.076.097-.066.145-.188.145-.311V.416a.396.396 0 0 0-.157-.323A.583.583 0 0 0 8.131 0z"/><path d="M20.958 14.47c-1.482.414-2.489 1.273-2.489 2.684v4.042c0 3.017-2.909 2.685-6.517 2.685h-.56c-.223 0-.363-.083-.363-.277V22.22c0-.194.112-.277.336-.277h.447c2.154 0 3.664.47 3.664-1.245v-3.876c0-1.19.84-2.851 2.517-3.46.112-.028.14-.083.14-.138 0-.056-.028-.139-.14-.194-1.538-.692-2.517-1.827-2.517-3.184V5.473c0-1.689-1.51-3.377-3.664-3.377h-.447c-.224 0-.336-.083-.336-.277V.435c0-.194.14-.277.364-.277h.56c3.607 0 6.544 2.547 6.544 5.564v3.682c0 1.384 1.007 2.186 2.517 2.712.56.166.867.194.867.637v1.163c.028.249-.251.36-.923.553" fill="#2eace3"/><path d="M11.576 8.33c-.406 0-.785.303-.785.72v1.328c0 .389.35.721.785.721h1.482c.406 0 .784-.304.784-.72V9.05c0-.388-.348-.72-.784-.72z"/></svg>
|
||||
<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M2.594 0a.514.514 0 0 0-.344.11.404.404 0 0 0-.133.306v23.197c0 .124.048.246.145.312.096.065.208.075.332.075h5.593c.13 0 .243-.02.334-.093.092-.072.131-.2.112-.317l.002.023v-1.467a.367.367 0 0 0-.16-.301.612.612 0 0 0-.344-.087H5.613c-.11 0-.17-.02-.191-.037-.022-.016-.032-.03-.032-.1V2.408c0-.071.012-.094.041-.116.03-.023.102-.05.239-.05h2.488c.124 0 .235-.01.332-.076.097-.066.145-.188.145-.311V.416a.396.396 0 0 0-.157-.323A.583.583 0 0 0 8.131 0z" fill="#000"/><path d="M20.958 14.47c-1.482.414-2.489 1.273-2.489 2.684v4.042c0 3.017-2.909 2.685-6.517 2.685h-.56c-.223 0-.363-.083-.363-.277V22.22c0-.194.112-.277.336-.277h.447c2.154 0 3.664.47 3.664-1.245v-3.876c0-1.19.84-2.851 2.517-3.46.112-.028.14-.083.14-.138 0-.056-.028-.139-.14-.194-1.538-.692-2.517-1.827-2.517-3.184V5.473c0-1.689-1.51-3.377-3.664-3.377h-.447c-.224 0-.336-.083-.336-.277V.435c0-.194.14-.277.364-.277h.56c3.607 0 6.544 2.547 6.544 5.564v3.682c0 1.384 1.007 2.186 2.517 2.712.56.166.867.194.867.637v1.163c.028.249-.251.36-.923.553" fill="#2eace3"/><path d="M11.576 8.33c-.406 0-.785.303-.785.72v1.328c0 .389.35.721.785.721h1.482c.406 0 .784-.304.784-.72V9.05c0-.388-.348-.72-.784-.72z" fill="#000"/></svg>
|
||||
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.2 KiB |
Reference in New Issue
Block a user