first commit
This commit is contained in:
147
node_modules/i18next-scanner/lib/index.js
generated
vendored
Normal file
147
node_modules/i18next-scanner/lib/index.js
generated
vendored
Normal file
@@ -0,0 +1,147 @@
|
||||
"use strict";
|
||||
|
||||
var _fs = _interopRequireDefault(require("fs"));
|
||||
|
||||
var _path = _interopRequireDefault(require("path"));
|
||||
|
||||
var _eol = _interopRequireDefault(require("eol"));
|
||||
|
||||
var _get = _interopRequireDefault(require("lodash/get"));
|
||||
|
||||
var _includes = _interopRequireDefault(require("lodash/includes"));
|
||||
|
||||
var _vinyl = _interopRequireDefault(require("vinyl"));
|
||||
|
||||
var _through = _interopRequireDefault(require("through2"));
|
||||
|
||||
var _parser = _interopRequireDefault(require("./parser"));
|
||||
|
||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
||||
|
||||
/* eslint-disable no-buffer-constructor */
|
||||
var transform = function transform(parser, customTransform) {
|
||||
return function _transform(file, enc, done) {
|
||||
var options = parser.options;
|
||||
|
||||
var content = _fs["default"].readFileSync(file.path, enc);
|
||||
|
||||
var extname = _path["default"].extname(file.path);
|
||||
|
||||
if ((0, _includes["default"])((0, _get["default"])(options, 'attr.extensions'), extname)) {
|
||||
// Parse attribute (e.g. data-i18n="key")
|
||||
parser.parseAttrFromString(content, {
|
||||
transformOptions: {
|
||||
filepath: file.path
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
if ((0, _includes["default"])((0, _get["default"])(options, 'func.extensions'), extname)) {
|
||||
// Parse translation function (e.g. i18next.t('key'))
|
||||
parser.parseFuncFromString(content, {
|
||||
transformOptions: {
|
||||
filepath: file.path
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
if ((0, _includes["default"])((0, _get["default"])(options, 'trans.extensions'), extname)) {
|
||||
// Look for Trans components in JSX
|
||||
parser.parseTransFromString(content, {
|
||||
transformOptions: {
|
||||
filepath: file.path
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
if (typeof customTransform === 'function') {
|
||||
this.parser = parser;
|
||||
customTransform.call(this, file, enc, done);
|
||||
return;
|
||||
}
|
||||
|
||||
done();
|
||||
};
|
||||
};
|
||||
|
||||
var flush = function flush(parser, customFlush) {
|
||||
return function _flush(done) {
|
||||
var _this = this;
|
||||
|
||||
var options = parser.options;
|
||||
|
||||
if (typeof customFlush === 'function') {
|
||||
this.parser = parser;
|
||||
customFlush.call(this, done);
|
||||
return;
|
||||
} // Flush to resource store
|
||||
|
||||
|
||||
var resStore = parser.get({
|
||||
sort: options.sort
|
||||
});
|
||||
var jsonIndent = options.resource.jsonIndent;
|
||||
var lineEnding = String(options.resource.lineEnding).toLowerCase();
|
||||
Object.keys(resStore).forEach(function (lng) {
|
||||
var namespaces = resStore[lng];
|
||||
Object.keys(namespaces).forEach(function (ns) {
|
||||
var obj = namespaces[ns];
|
||||
var resPath = parser.formatResourceSavePath(lng, ns);
|
||||
var text = JSON.stringify(obj, null, jsonIndent) + '\n';
|
||||
|
||||
if (lineEnding === 'auto') {
|
||||
text = _eol["default"].auto(text);
|
||||
} else if (lineEnding === '\r\n' || lineEnding === 'crlf') {
|
||||
text = _eol["default"].crlf(text);
|
||||
} else if (lineEnding === '\n' || lineEnding === 'lf') {
|
||||
text = _eol["default"].lf(text);
|
||||
} else if (lineEnding === '\r' || lineEnding === 'cr') {
|
||||
text = _eol["default"].cr(text);
|
||||
} else {
|
||||
// Defaults to LF
|
||||
text = _eol["default"].lf(text);
|
||||
}
|
||||
|
||||
var contents = null;
|
||||
|
||||
try {
|
||||
// "Buffer.from(string[, encoding])" is added in Node.js v5.10.0
|
||||
contents = Buffer.from(text);
|
||||
} catch (e) {
|
||||
// Fallback to "new Buffer(string[, encoding])" which is deprecated since Node.js v6.0.0
|
||||
contents = new Buffer(text);
|
||||
}
|
||||
|
||||
_this.push(new _vinyl["default"]({
|
||||
path: resPath,
|
||||
contents: contents
|
||||
}));
|
||||
});
|
||||
});
|
||||
done();
|
||||
};
|
||||
}; // @param {object} options The options object.
|
||||
// @param {function} [customTransform]
|
||||
// @param {function} [customFlush]
|
||||
// @return {object} Returns a through2.obj().
|
||||
|
||||
|
||||
var createStream = function createStream(options, customTransform, customFlush) {
|
||||
var parser = new _parser["default"](options);
|
||||
|
||||
var stream = _through["default"].obj(transform(parser, customTransform), flush(parser, customFlush));
|
||||
|
||||
return stream;
|
||||
}; // Convenience API
|
||||
|
||||
|
||||
module.exports = function () {
|
||||
var _module$exports;
|
||||
|
||||
return (_module$exports = module.exports).createStream.apply(_module$exports, arguments);
|
||||
}; // Basic API
|
||||
|
||||
|
||||
module.exports.createStream = createStream; // Parser
|
||||
|
||||
module.exports.Parser = _parser["default"];
|
Reference in New Issue
Block a user