localer
Version:
Locales collector from js sources.
140 lines (99 loc) • 2.97 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
exports.flatKeys = flatKeys;
exports.asyncForEach = asyncForEach;
exports.pushUnique = pushUnique;
exports.readFile = readFile;
exports.glob = glob;
var _glob = require('glob');
var _glob2 = _interopRequireDefault(_glob);
var _fs = require('fs');
var _fs2 = _interopRequireDefault(_fs);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
function flatKeys(object) {
var keys = [];
var _loop = function _loop(key) {
var value = object[key];
if ((typeof value === 'undefined' ? 'undefined' : _typeof(value)) == 'object' && !(value.hasOwnProperty('one') && value.hasOwnProperty('other'))) {
keys.push.apply(keys, _toConsumableArray(flatKeys(value).map(function (_) {
return key + '.' + _;
})));
} else {
keys.push(key);
}
};
for (var key in object) {
_loop(key);
}
return keys;
}
function asyncForEach(array, each, resolvedObject) {
var _this = array;
var i = 0;
return new Promise(function (resolve, reject) {
if (!_this.length) {
resolve(resolvedObject);
return;
}
each(_this[i], i++).then(function next() {
if (i >= _this.length) {
return resolve(resolvedObject);
}
return each(_this[i], i++).then(next).catch(reject);
}).catch(reject);
});
}
function pushUnique(array, element) {
if (array.indexOf(element) != -1) {
return element;
}
return array.push(element);
}
function readFile(file) {
return new Promise(function (resolve, reject) {
_fs2.default.readFile(file, 'utf8', function (err, data) {
if (err) {
reject(err);
return;
}
resolve(data);
});
});
}
function glob(mask) {
var inputIgnore = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
var ignore = inputIgnore.slice();
if (Array.isArray(mask)) {
var masks = [],
files = [];
mask.forEach(function (mask) {
if (mask.indexOf('!') == 0) {
pushUnique(ignore, mask.replace('!', ''));
} else {
masks.push(mask);
}
});
return Promise.all(masks.map(function (_) {
return glob(_, ignore).then(function (_) {
return _.forEach(function (_) {
return pushUnique(files, _);
});
});
})).then(function () {
return files;
});
}
return new Promise(function (resolve, reject) {
(0, _glob2.default)(mask, { ignore: ignore }, function (err, files) {
if (err) {
reject(err);
return;
}
resolve(files);
});
});
}