71 строка
1.7 KiB
JavaScript
71 строка
1.7 KiB
JavaScript
/*
|
|
Adding icons:
|
|
Download http://fortawesome.github.io/Font-Awesome/assets/font-awesome-4.3.0.zip
|
|
Unzip to temp/Font-Awesome/
|
|
Go to http://fortawesome.github.io/Font-Awesome/icons/
|
|
Find the icon you want
|
|
From the root github folder run:
|
|
node tools/addicon.js iconname
|
|
Use "svg:iconanme,black" in the code.
|
|
|
|
*/
|
|
|
|
var fs = require('fs')
|
|
|
|
var faPath = 'temp/Font-Awesome'
|
|
var svgTs = 'rt/svg.ts'
|
|
|
|
var icons = {}
|
|
var currIcon = ""
|
|
|
|
var ic = process.argv[2]
|
|
if (!ic) {
|
|
console.log("usage: node addicon.js iconname")
|
|
process.exit(1)
|
|
}
|
|
|
|
fs.readFileSync(faPath + "/css/font-awesome.css", "utf8").split(/\n/).forEach(function (line) {
|
|
var m = /^\.fa-(\S+):before/.exec(line)
|
|
if (m) currIcon = m[1]
|
|
m = /content: "\\(....)"/.exec(line)
|
|
if (currIcon && m) {
|
|
icons[currIcon] = m[1]
|
|
currIcon = ""
|
|
}
|
|
})
|
|
|
|
if (!icons.hasOwnProperty(ic)) {
|
|
var r = new RegExp(ic)
|
|
console.log("No such icon: " + ic + ", similar icons:")
|
|
console.log(Object.keys(icons).filter(function(k) { return r.test(k) }).join(", "))
|
|
process.exit(1)
|
|
}
|
|
|
|
|
|
var svg = {}
|
|
fs.readFileSync(faPath + "/fonts/fontawesome-webfont.svg", "utf8").split(/\n/).forEach(function (line) {
|
|
var m = /^<glyph unicode="\&#x(....);".*d="([^"]+)"/.exec(line)
|
|
if (m) svg[m[1]] = m[2]
|
|
})
|
|
|
|
var theSVG = svg[icons[ic]]
|
|
if (!theSVG) {
|
|
console.log("css is there but not svg!")
|
|
process.exit(1)
|
|
}
|
|
|
|
var output = ""
|
|
var state = 0
|
|
fs.readFileSync(svgTs, "utf8").split(/\n/).forEach(function (line) {
|
|
if (/var fontAwesomeIconsByDaveGandy/.test(line)) state = 1
|
|
if (state == 1 && /^\s*\}/.test(line)) {
|
|
state = 2
|
|
output += " " + JSON.stringify(ic) + ": " + JSON.stringify(theSVG) + ",\n"
|
|
}
|
|
output += line + "\n"
|
|
})
|
|
|
|
output = output.replace(/\n+$/, "\n")
|
|
|
|
fs.writeFileSync(svgTs, output)
|