forked from enviPath/enviPy
Current Dev State
This commit is contained in:
110
static/js/ketcher2/node_modules/svgicons2svgfont/src/iconsdir.js
generated
vendored
Normal file
110
static/js/ketcher2/node_modules/svgicons2svgfont/src/iconsdir.js
generated
vendored
Normal file
@ -0,0 +1,110 @@
|
||||
'use strict';
|
||||
|
||||
var fs = require('fs');
|
||||
var util = require('util');
|
||||
var fileSorter = require('./filesorter');
|
||||
var initMetadataService = require('../src/metadata');
|
||||
|
||||
var Readable = require('stream').Readable;
|
||||
|
||||
require('string.prototype.codepointat');
|
||||
|
||||
// Inherit of duplex stream
|
||||
util.inherits(SVGIconsDirStream, Readable);
|
||||
|
||||
// Constructor
|
||||
function SVGIconsDirStream(dir, options) {
|
||||
var _this = this;
|
||||
var getMetadata = initMetadataService(options);
|
||||
var filesInfos;
|
||||
var gotFilesInfos = false;
|
||||
var dirCopy;
|
||||
|
||||
// Ensure new were used
|
||||
if(!(this instanceof SVGIconsDirStream)) {
|
||||
return new SVGIconsDirStream(dir, options);
|
||||
}
|
||||
|
||||
if(dir instanceof Array) {
|
||||
dirCopy = dir;
|
||||
dir = '';
|
||||
_getFilesInfos(dirCopy);
|
||||
}
|
||||
|
||||
function _getFilesInfos(files) {
|
||||
var filesProcessed = 0;
|
||||
|
||||
filesInfos = [];
|
||||
// Ensure prefixed files come first
|
||||
files = files.slice(0).sort(fileSorter);
|
||||
files.forEach(function(file) {
|
||||
getMetadata((dir ? dir + '/' : '') + file, function(err, metadata) {
|
||||
filesProcessed++;
|
||||
if(err) {
|
||||
_this.emit('error', err);
|
||||
} else {
|
||||
if(metadata.renamed) {
|
||||
options.log('Saved codepoint: ' +
|
||||
'u' + metadata.unicode[0].codePointAt(0).toString(16).toUpperCase() +
|
||||
' for the glyph "' + metadata.name + '"');
|
||||
}
|
||||
filesInfos.push(metadata);
|
||||
}
|
||||
if(files.length === filesProcessed) {
|
||||
// Reorder files
|
||||
filesInfos = filesInfos.sort(function(infosA, infosB) {
|
||||
return infosA.unicode[0] > infosB.unicode[0] ? 1 : -1;
|
||||
});
|
||||
// Mark directory as processed
|
||||
gotFilesInfos = true;
|
||||
// Start processing
|
||||
_pushSVGIcons();
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function _pushSVGIcons() {
|
||||
var fileInfo;
|
||||
var svgIconStream;
|
||||
|
||||
while(filesInfos.length) {
|
||||
fileInfo = filesInfos.shift();
|
||||
svgIconStream = fs.createReadStream(fileInfo.path);
|
||||
svgIconStream.metadata = {
|
||||
name: fileInfo.name,
|
||||
unicode: fileInfo.unicode,
|
||||
};
|
||||
if(!_this.push(svgIconStream)) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
_this.push(null);
|
||||
}
|
||||
|
||||
// Parent constructor
|
||||
Readable.call(this, {
|
||||
objectMode: true,
|
||||
});
|
||||
|
||||
this._read = function() {
|
||||
if(!filesInfos) {
|
||||
fs.readdir(
|
||||
dir,
|
||||
function(err, files) {
|
||||
if(err) {
|
||||
_this.emit('error', err);
|
||||
}
|
||||
_getFilesInfos(files);
|
||||
}
|
||||
);
|
||||
return;
|
||||
}
|
||||
if(gotFilesInfos) {
|
||||
_pushSVGIcons();
|
||||
}
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
module.exports = SVGIconsDirStream;
|
||||
Reference in New Issue
Block a user