forked from enviPath/enviPy
Current Dev State
This commit is contained in:
85
static/js/ketcher2/node_modules/svgicons2svgfont/src/metadata.js
generated
vendored
Normal file
85
static/js/ketcher2/node_modules/svgicons2svgfont/src/metadata.js
generated
vendored
Normal file
@ -0,0 +1,85 @@
|
||||
'use strict';
|
||||
|
||||
var path = require('path');
|
||||
var fs = require('fs');
|
||||
|
||||
require('string.fromcodepoint');
|
||||
require('string.prototype.codepointat');
|
||||
|
||||
function getMetadataService(options) {
|
||||
var usedUnicodes = [];
|
||||
|
||||
// Default options
|
||||
options = options || {};
|
||||
options.prependUnicode = !!options.prependUnicode;
|
||||
options.startUnicode = 'number' === typeof options.startUnicode ?
|
||||
options.startUnicode :
|
||||
0xEA01;
|
||||
options.log = options.log || console.log; // eslint-disable-line
|
||||
options.err = options.err || console.err; // eslint-disable-line
|
||||
|
||||
// Throw on old options usage
|
||||
if('undefined' !== typeof options.appendUnicode) {
|
||||
throw new Error(
|
||||
'The "appendUnicode" option were renamed "prependUnicode".' +
|
||||
' See https://github.com/nfroidure/gulp-svgicons2svgfont/issues/33'
|
||||
);
|
||||
}
|
||||
|
||||
return function getMetadataFromFile(file, cb) {
|
||||
var basename = path.basename(file);
|
||||
var metadata = {
|
||||
path: file,
|
||||
name: '',
|
||||
unicode: [],
|
||||
renamed: false,
|
||||
};
|
||||
var matches = basename.match(/^(?:((?:u[0-9a-f]{4,6},?)+)\-)?(.+)\.svg$/i);
|
||||
|
||||
metadata.name = matches && matches[2] ?
|
||||
matches[2] :
|
||||
'icon' + options.startUnicode;
|
||||
if(matches && matches[1]) {
|
||||
metadata.unicode = matches[1].split(',').map(function(match) {
|
||||
match = match.substr(1);
|
||||
return match.split('u').map(function(code) {
|
||||
return String.fromCodePoint(parseInt(code, 16));
|
||||
}).join('');
|
||||
});
|
||||
if(-1 !== usedUnicodes.indexOf(metadata.unicode[0])) {
|
||||
return cb(new Error('The unicode codepoint of the glyph ' + metadata.name +
|
||||
' seems to be already used by another glyph.'));
|
||||
}
|
||||
usedUnicodes = usedUnicodes.concat(metadata.unicode);
|
||||
} else {
|
||||
do {
|
||||
metadata.unicode[0] = String.fromCodePoint(options.startUnicode++);
|
||||
} while(-1 !== usedUnicodes.indexOf(metadata.unicode[0]));
|
||||
usedUnicodes.push(metadata.unicode[0]);
|
||||
if(options.prependUnicode) {
|
||||
metadata.renamed = true;
|
||||
metadata.path = path.dirname(file) + '/' +
|
||||
'u' + metadata.unicode[0].codePointAt(0).toString(16).toUpperCase() +
|
||||
'-' + basename;
|
||||
fs.rename(file, metadata.path,
|
||||
function(err) {
|
||||
if(err) {
|
||||
return cb(new Error('Could not save codepoint: ' +
|
||||
'u' + metadata.unicode[0].codePointAt(0).toString(16).toUpperCase() +
|
||||
' for ' + basename));
|
||||
}
|
||||
cb(null, metadata);
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
if(!metadata.renamed) {
|
||||
setImmediate(function() {
|
||||
cb(null, metadata);
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
module.exports = getMetadataService;
|
||||
Reference in New Issue
Block a user