kopia lustrzana https://github.com/badgen/badgen
Initial commit
commit
4d726452e2
|
@ -0,0 +1 @@
|
|||
node_modules
|
|
@ -0,0 +1,39 @@
|
|||
module.exports = function ({subject, status, color = '#97CA00'}) {
|
||||
const sbl = subject.length
|
||||
const stl = status.length
|
||||
const charWidth = 7.5
|
||||
|
||||
const sbTextWidth = sbl * charWidth
|
||||
const sbRectWidth = sbTextWidth + 15
|
||||
const sbTextCenter = sbRectWidth / 2
|
||||
|
||||
const stTextWidth = stl * charWidth
|
||||
const stRectWidth = stTextWidth + 15
|
||||
const stTextCenter = sbRectWidth + stRectWidth / 2
|
||||
|
||||
const width = sbRectWidth + stRectWidth
|
||||
|
||||
return `
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
width="${width}" height="20">
|
||||
<linearGradient id="b" x2="0" y2="100%">
|
||||
<stop offset="0" stop-color="#bbb" stop-opacity=".1"/>
|
||||
<stop offset="1" stop-opacity=".1"/>
|
||||
</linearGradient>
|
||||
<clipPath id="a">
|
||||
<rect width="${width}" height="20" rx="3" fill="#fff"/>
|
||||
</clipPath>
|
||||
<g clip-path="url(#a)">
|
||||
<path fill="#555" d="M0 0h${sbRectWidth}v20H0z"/>
|
||||
<path fill="${color}" d="M${sbRectWidth} 0h${stRectWidth}v20H${sbRectWidth}z"/>
|
||||
<path fill="url(#b)" d="M0 0h${sbRectWidth + stRectWidth}v20H0z"/>
|
||||
</g>
|
||||
<g fill="#fff" text-anchor="middle" font-family="Arial,sans-serif" font-size="11">
|
||||
<text x="${sbTextCenter}" y="14.5" textLength="${sbTextWidth}" fill="#010101" fill-opacity=".3">${subject}</text>
|
||||
<text x="${sbTextCenter}" y="13.5" textLength="${sbTextWidth}">${subject}</text>
|
||||
<text x="${stTextCenter}" y="14.5" textLength="${stTextWidth}" fill="#010101" fill-opacity=".3">${status}</text>
|
||||
<text x="${stTextCenter}" y="13.5" textLength="${stTextWidth}">${status}</text>
|
||||
</g> <script xmlns=""/>
|
||||
</svg>
|
||||
`
|
||||
}
|
|
@ -0,0 +1,39 @@
|
|||
{
|
||||
"name": "badgen",
|
||||
"version": "0.0.1",
|
||||
"lockfileVersion": 1,
|
||||
"requires": true,
|
||||
"dependencies": {
|
||||
"fast-decode-uri-component": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/fast-decode-uri-component/-/fast-decode-uri-component-1.0.0.tgz",
|
||||
"integrity": "sha512-WQSYVKn6tDW/3htASeUkrx5LcnuTENQIZQPCVlwdnvIJ7bYtSpoJYq38MgUJnx1CQIR1gjZ8HJxAEcN4gqugBg==",
|
||||
"dev": true
|
||||
},
|
||||
"find-my-way": {
|
||||
"version": "1.13.0",
|
||||
"resolved": "https://registry.npmjs.org/find-my-way/-/find-my-way-1.13.0.tgz",
|
||||
"integrity": "sha512-aIa4UTxZ3klfApaQEJJ5cQvNeqfrxVngcjMgy+G5ygkrOrDPkORhY/RMH6F8mLwBpPt3Z0F03CtzN7gs2Q5H1w==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"fast-decode-uri-component": "^1.0.0",
|
||||
"safe-regex": "^1.1.0"
|
||||
}
|
||||
},
|
||||
"ret": {
|
||||
"version": "0.1.15",
|
||||
"resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz",
|
||||
"integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==",
|
||||
"dev": true
|
||||
},
|
||||
"safe-regex": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
|
||||
"integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"ret": "~0.1.10"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
{
|
||||
"name": "badgen",
|
||||
"version": "0.0.1",
|
||||
"description": "Hand-crafted badge generator.",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
"start": "node service.js"
|
||||
},
|
||||
"author": "Amio <amio.cn@gmail.com>",
|
||||
"license": "ISC",
|
||||
"devDependencies": {
|
||||
"find-my-way": "^1.13.0"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,11 @@
|
|||
const http = require('http')
|
||||
const router = require('find-my-way')()
|
||||
const badgen = require('.')
|
||||
|
||||
router.get('/gen/:subject/:status', (req, res, params) => {
|
||||
res.writeHead(200, { 'Content-Type': 'image/svg+xml;charset=utf-8' })
|
||||
res.end(badgen(params))
|
||||
})
|
||||
|
||||
const server = http.createServer((req, res) => router.lookup(req, res))
|
||||
server.listen(3000)
|
Ładowanie…
Reference in New Issue