i18next-scanner
Advanced tools
Comparing version 1.9.1 to 1.9.2
'use strict'; | ||
var _lodash = require('lodash'); | ||
var _lodash2 = _interopRequireDefault(_lodash); | ||
var _fs = require('fs'); | ||
@@ -15,2 +11,10 @@ | ||
var _get = require('lodash/get'); | ||
var _get2 = _interopRequireDefault(_get); | ||
var _includes = require('lodash/includes'); | ||
var _includes2 = _interopRequireDefault(_includes); | ||
var _vinyl = require('vinyl'); | ||
@@ -37,3 +41,3 @@ | ||
if (_lodash2.default.isObject(options.attr) && _lodash2.default.includes(options.attr.extensions, extname)) { | ||
if ((0, _includes2.default)((0, _get2.default)(options, 'attr.extensions'), extname)) { | ||
// Parse attribute (e.g. data-i18n="key") | ||
@@ -43,3 +47,3 @@ parser.parseAttrFromString(content); | ||
if (_lodash2.default.isObject(options.func) && _lodash2.default.includes(options.func.extensions, extname)) { | ||
if ((0, _includes2.default)((0, _get2.default)(options, 'func.extensions'), extname)) { | ||
// Parse translation function (e.g. i18next.t('key')) | ||
@@ -46,0 +50,0 @@ parser.parseFuncFromString(content); |
@@ -7,9 +7,7 @@ 'use strict'; | ||
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; | ||
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); /* eslint no-console: 0 */ | ||
var _lodash = require('lodash'); | ||
var _lodash2 = _interopRequireDefault(_lodash); | ||
var _fs = require('fs'); | ||
@@ -19,4 +17,64 @@ | ||
var _isArray = require('lodash/isArray'); | ||
var _isArray2 = _interopRequireDefault(_isArray); | ||
var _isFunction = require('lodash/isFunction'); | ||
var _isFunction2 = _interopRequireDefault(_isFunction); | ||
var _isObject = require('lodash/isObject'); | ||
var _isObject2 = _interopRequireDefault(_isObject); | ||
var _isUndefined = require('lodash/isUndefined'); | ||
var _isUndefined2 = _interopRequireDefault(_isUndefined); | ||
var _isString = require('lodash/isString'); | ||
var _isString2 = _interopRequireDefault(_isString); | ||
var _flatten = require('lodash/flatten'); | ||
var _flatten2 = _interopRequireDefault(_flatten); | ||
var _union = require('lodash/union'); | ||
var _union2 = _interopRequireDefault(_union); | ||
var _get = require('lodash/get'); | ||
var _get2 = _interopRequireDefault(_get); | ||
var _set = require('lodash/set'); | ||
var _set2 = _interopRequireDefault(_set); | ||
var _escapeRegExp = require('lodash/escapeRegExp'); | ||
var _escapeRegExp2 = _interopRequireDefault(_escapeRegExp); | ||
var _includes = require('lodash/includes'); | ||
var _includes2 = _interopRequireDefault(_includes); | ||
var _trim = require('lodash/trim'); | ||
var _trim2 = _interopRequireDefault(_trim); | ||
var _toPairs = require('lodash/toPairs'); | ||
var _toPairs2 = _interopRequireDefault(_toPairs); | ||
var _sortBy = require('lodash/sortBy'); | ||
var _sortBy2 = _interopRequireDefault(_sortBy); | ||
var _esprima = require('esprima'); | ||
var _ensureArray = require('./ensure-array'); | ||
var _ensureArray2 = _interopRequireDefault(_ensureArray); | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
@@ -117,30 +175,30 @@ | ||
// Attribute | ||
if (_lodash2.default.isUndefined(_lodash2.default.get(options, 'attr.list'))) { | ||
_lodash2.default.set(options, 'attr.list', defaults.attr.list); | ||
if ((0, _isUndefined2.default)((0, _get2.default)(options, 'attr.list'))) { | ||
(0, _set2.default)(options, 'attr.list', defaults.attr.list); | ||
} | ||
if (_lodash2.default.isUndefined(_lodash2.default.get(options, 'attr.extensions'))) { | ||
_lodash2.default.set(options, 'attr.extensions', defaults.attr.extensions); | ||
if ((0, _isUndefined2.default)((0, _get2.default)(options, 'attr.extensions'))) { | ||
(0, _set2.default)(options, 'attr.extensions', defaults.attr.extensions); | ||
} | ||
// Function | ||
if (_lodash2.default.isUndefined(_lodash2.default.get(options, 'func.list'))) { | ||
_lodash2.default.set(options, 'func.list', defaults.func.list); | ||
if ((0, _isUndefined2.default)((0, _get2.default)(options, 'func.list'))) { | ||
(0, _set2.default)(options, 'func.list', defaults.func.list); | ||
} | ||
// Resource | ||
if (_lodash2.default.isUndefined(_lodash2.default.get(options, 'func.extensions'))) { | ||
_lodash2.default.set(options, 'func.extensions', defaults.func.extensions); | ||
if ((0, _isUndefined2.default)((0, _get2.default)(options, 'func.extensions'))) { | ||
(0, _set2.default)(options, 'func.extensions', defaults.func.extensions); | ||
} | ||
if (_lodash2.default.isUndefined(_lodash2.default.get(options, 'resource.loadPath'))) { | ||
_lodash2.default.set(options, 'resource.loadPath', defaults.resource.loadPath); | ||
if ((0, _isUndefined2.default)((0, _get2.default)(options, 'resource.loadPath'))) { | ||
(0, _set2.default)(options, 'resource.loadPath', defaults.resource.loadPath); | ||
} | ||
if (_lodash2.default.isUndefined(_lodash2.default.get(options, 'resource.savePath'))) { | ||
_lodash2.default.set(options, 'resource.savePath', defaults.resource.savePath); | ||
if ((0, _isUndefined2.default)((0, _get2.default)(options, 'resource.savePath'))) { | ||
(0, _set2.default)(options, 'resource.savePath', defaults.resource.savePath); | ||
} | ||
if (_lodash2.default.isUndefined(_lodash2.default.get(options, 'resource.jsonIndent'))) { | ||
_lodash2.default.set(options, 'resource.jsonIndent', defaults.resource.jsonIndent); | ||
if ((0, _isUndefined2.default)((0, _get2.default)(options, 'resource.jsonIndent'))) { | ||
(0, _set2.default)(options, 'resource.jsonIndent', defaults.resource.jsonIndent); | ||
} | ||
// Accept both nsseparator or nsSeparator | ||
if (!_lodash2.default.isUndefined(options.nsseparator)) { | ||
if (!(0, _isUndefined2.default)(options.nsseparator)) { | ||
options.nsSeparator = options.nsseparator; | ||
@@ -150,3 +208,3 @@ delete options.nsseparator; | ||
// Allowed only string or false | ||
if (!_lodash2.default.isString(options.nsSeparator)) { | ||
if (!(0, _isString2.default)(options.nsSeparator)) { | ||
options.nsSeparator = false; | ||
@@ -156,3 +214,3 @@ } | ||
// Accept both keyseparator or keySeparator | ||
if (!_lodash2.default.isUndefined(options.keyseparator)) { | ||
if (!(0, _isUndefined2.default)(options.keyseparator)) { | ||
options.keySeparator = options.keyseparator; | ||
@@ -162,11 +220,11 @@ delete options.keyseparator; | ||
// Allowed only string or false | ||
if (!_lodash2.default.isString(options.keySeparator)) { | ||
if (!(0, _isString2.default)(options.keySeparator)) { | ||
options.keySeparator = false; | ||
} | ||
if (!_lodash2.default.isArray(options.ns)) { | ||
if (!(0, _isArray2.default)(options.ns)) { | ||
options.ns = [options.ns]; | ||
} | ||
options.ns = (0, _lodash2.default)(options.ns.concat(options.defaultNs)).flatten().union().value(); | ||
options.ns = (0, _union2.default)((0, _flatten2.default)(options.ns.concat(options.defaultNs))); | ||
@@ -189,7 +247,7 @@ return options; | ||
this.options = _lodash2.default.assign({}, defaults); | ||
this.options = _extends({}, defaults); | ||
this.resStore = {}; | ||
this.resScan = {}; | ||
this.options = transformOptions(_lodash2.default.extend({}, this.options, options)); | ||
this.options = transformOptions(_extends({}, this.options, options)); | ||
@@ -245,4 +303,4 @@ var lngs = this.options.lngs; | ||
var regex = { | ||
lng: new RegExp(_lodash2.default.escapeRegExp(options.interpolation.prefix + 'lng' + options.interpolation.suffix), 'g'), | ||
ns: new RegExp(_lodash2.default.escapeRegExp(options.interpolation.prefix + 'ns' + options.interpolation.suffix), 'g') | ||
lng: new RegExp((0, _escapeRegExp2.default)(options.interpolation.prefix + 'lng' + options.interpolation.suffix), 'g'), | ||
ns: new RegExp((0, _escapeRegExp2.default)(options.interpolation.prefix + 'ns' + options.interpolation.suffix), 'g') | ||
}; | ||
@@ -257,4 +315,4 @@ | ||
var regex = { | ||
lng: new RegExp(_lodash2.default.escapeRegExp(options.interpolation.prefix + 'lng' + options.interpolation.suffix), 'g'), | ||
ns: new RegExp(_lodash2.default.escapeRegExp(options.interpolation.prefix + 'ns' + options.interpolation.suffix), 'g') | ||
lng: new RegExp((0, _escapeRegExp2.default)(options.interpolation.prefix + 'lng' + options.interpolation.suffix), 'g'), | ||
ns: new RegExp((0, _escapeRegExp2.default)(options.interpolation.prefix + 'ns' + options.interpolation.suffix), 'g') | ||
}; | ||
@@ -278,3 +336,3 @@ | ||
if (_lodash2.default.isFunction(opts)) { | ||
if ((0, _isFunction2.default)(opts)) { | ||
customHandler = opts; | ||
@@ -284,6 +342,11 @@ opts = {}; | ||
var funcs = opts.list || this.options.func.list; | ||
var matchPattern = (0, _lodash2.default)(funcs).map(function (func) { | ||
var funcs = opts.list !== undefined ? (0, _ensureArray2.default)(opts.list) : (0, _ensureArray2.default)(this.options.func.list); | ||
if (funcs.length === 0) { | ||
return this; | ||
} | ||
var matchPattern = funcs.map(function (func) { | ||
return '(?:' + func + ')'; | ||
}).value().join('|').replace(/\./g, '\\.'); | ||
}).join('|').replace(/\./g, '\\.'); | ||
var pattern = '(?:(?:^\\s*)|[^a-zA-Z0-9_])(?:' + matchPattern + ')\\(("(?:[^"\\\\]|\\\\(?:.|$))*"|\'(?:[^\'\\\\]|\\\\(?:.|$))*\')\\s*[,)]'; | ||
@@ -298,5 +361,5 @@ var re = new RegExp(pattern, 'gim'); | ||
var key = _lodash2.default.trim(r[1]); // Remove leading and trailing whitespace | ||
var key = (0, _trim2.default)(r[1]); // Remove leading and trailing whitespace | ||
var firstChar = key[0]; | ||
if (_lodash2.default.includes(['\'', '"'], firstChar)) { | ||
if ((0, _includes2.default)(['\'', '"'], firstChar)) { | ||
// Remove first and last character | ||
@@ -330,3 +393,3 @@ key = key.slice(1, -1); | ||
var syntax = (0, _esprima.parse)('(' + code + ')'); | ||
var props = _lodash2.default.get(syntax, 'body[0].expression.properties') || []; | ||
var props = (0, _get2.default)(syntax, 'body[0].expression.properties') || []; | ||
// http://i18next.com/docs/options/ | ||
@@ -336,3 +399,3 @@ var supportedOptions = ['defaultValue', 'count', 'context', 'ns']; | ||
props.forEach(function (prop) { | ||
if (_lodash2.default.includes(supportedOptions, prop.key.name)) { | ||
if ((0, _includes2.default)(supportedOptions, prop.key.name)) { | ||
if (prop.value.type === 'Literal') { | ||
@@ -380,3 +443,3 @@ options[prop.key.name] = prop.value.value; | ||
if (_lodash2.default.isFunction(opts)) { | ||
if ((0, _isFunction2.default)(opts)) { | ||
customHandler = opts; | ||
@@ -386,6 +449,11 @@ opts = {}; | ||
var attrs = opts.list || this.options.attr.list; | ||
var matchPattern = (0, _lodash2.default)(attrs).map(function (attr) { | ||
var attrs = opts.list !== undefined ? (0, _ensureArray2.default)(opts.list) : (0, _ensureArray2.default)(this.options.attr.list); | ||
if (attrs.length === 0) { | ||
return this; | ||
} | ||
var matchPattern = attrs.map(function (attr) { | ||
return '(?:' + attr + ')'; | ||
}).value().join('|').replace(/\./g, '\\.'); | ||
}).join('|').replace(/\./g, '\\.'); | ||
var pattern = '(?:(?:^[\\s]*)|[^a-zA-Z0-9_])(?:' + matchPattern + ')=("[^"]*"|\'[^\']*\')'; | ||
@@ -397,8 +465,7 @@ var re = new RegExp(pattern, 'gim'); | ||
while (r = re.exec(content)) { | ||
var attr = _lodash2.default.trim(r[1], '\'"'); | ||
var attr = (0, _trim2.default)(r[1], '\'"'); | ||
var keys = attr.indexOf(';') >= 0 ? attr.split(';') : [attr]; | ||
keys.forEach(function (key) { | ||
//let attr = 'text'; | ||
key = _lodash2.default.trim(key); | ||
key = (0, _trim2.default)(key); | ||
if (key.length === 0) { | ||
@@ -409,5 +476,3 @@ return; | ||
var parts = key.split(']'); | ||
key = parts[1]; | ||
//attr = parts[0].substr(1, parts[0].length - 1); | ||
} | ||
@@ -441,3 +506,3 @@ if (key.indexOf(';') === key.length - 1) { | ||
if (_lodash2.default.isObject(key)) { | ||
if ((0, _isObject2.default)(key)) { | ||
opts = key; | ||
@@ -460,3 +525,4 @@ key = undefined; | ||
Object.keys(namespaces).forEach(function (ns) { | ||
resStore[lng][ns] = (0, _lodash2.default)(namespaces[ns]).toPairs().sortBy(function (pair) { | ||
var pairs = (0, _toPairs2.default)(namespaces[ns]); | ||
resStore[lng][ns] = (0, _sortBy2.default)(pairs, function (pair) { | ||
return pair[0]; | ||
@@ -466,9 +532,5 @@ }).reduce(function (memo, pair) { | ||
var _value = pair[1]; | ||
memo[_key] = _value; | ||
return memo; | ||
}, {}); | ||
// Note. The reduce method is not chainable by default | ||
}); | ||
@@ -478,3 +540,3 @@ }); | ||
if (!_lodash2.default.isUndefined(key)) { | ||
if (!(0, _isUndefined2.default)(key)) { | ||
var ns = this.options.defaultNs; | ||
@@ -490,3 +552,3 @@ | ||
if (_lodash2.default.isString(this.options.nsSeparator) && key.indexOf(this.options.nsSeparator) > -1) { | ||
if ((0, _isString2.default)(this.options.nsSeparator) && key.indexOf(this.options.nsSeparator) > -1) { | ||
var parts = key.split(this.options.nsSeparator); | ||
@@ -498,3 +560,3 @@ | ||
var keys = _lodash2.default.isString(this.options.keySeparator) ? key.split(this.options.keySeparator) : [key]; | ||
var keys = (0, _isString2.default)(this.options.keySeparator) ? key.split(this.options.keySeparator) : [key]; | ||
var lng = opts.lng ? opts.lng : this.options.fallbackLng; | ||
@@ -534,7 +596,7 @@ var namespaces = resStore[lng] || {}; | ||
// Backward compatibility | ||
if (_lodash2.default.isString(options)) { | ||
if ((0, _isString2.default)(options)) { | ||
var _defaultValue = options; | ||
options = {}; | ||
options.defaultValue = _defaultValue; | ||
options = { | ||
defaultValue: _defaultValue | ||
}; | ||
} | ||
@@ -547,3 +609,3 @@ | ||
console.assert(_lodash2.default.isString(ns) && !!ns.length, 'ns is not a valid string', ns); | ||
console.assert((0, _isString2.default)(ns) && !!ns.length, 'ns is not a valid string', ns); | ||
@@ -558,3 +620,3 @@ // http://i18next.com/translate/keyBasedFallback/ | ||
if (_lodash2.default.isString(nsSeparator) && key.indexOf(nsSeparator) > -1) { | ||
if ((0, _isString2.default)(nsSeparator) && key.indexOf(nsSeparator) > -1) { | ||
var parts = key.split(nsSeparator); | ||
@@ -576,3 +638,3 @@ | ||
var keys = _lodash2.default.isString(keySeparator) ? key.split(keySeparator) : [key]; | ||
var keys = (0, _isString2.default)(keySeparator) ? key.split(keySeparator) : [key]; | ||
@@ -583,3 +645,3 @@ lngs.forEach(function (lng) { | ||
if (!_lodash2.default.isObject(resLoad)) { | ||
if (!(0, _isObject2.default)(resLoad)) { | ||
// skip undefined namespace | ||
@@ -655,3 +717,3 @@ console.log('The namespace "' + ns + '" does not exist:', { key: key, options: options }); | ||
// Fallback to `defaultValue` | ||
resLoad[resKey] = _lodash2.default.isFunction(defaultValue) ? defaultValue(lng, ns, key, options) : defaultValue; | ||
resLoad[resKey] = (0, _isFunction2.default)(defaultValue) ? defaultValue(lng, ns, key, options) : defaultValue; | ||
} | ||
@@ -658,0 +720,0 @@ _this4.debuglog('Added a new translation key { %s: %s } to %s', JSON.stringify(resKey), JSON.stringify(resLoad[resKey]), JSON.stringify(_this4.formatResourceLoadPath(lng, ns))); |
{ | ||
"name": "i18next-scanner", | ||
"version": "1.9.1", | ||
"version": "1.9.2", | ||
"description": "Scan your code, extract translation keys/values, and merge them into i18n resource files.", | ||
@@ -5,0 +5,0 @@ "homepage": "https://github.com/i18next/i18next-scanner", |
@@ -1,4 +0,5 @@ | ||
import _ from 'lodash'; | ||
import fs from 'fs'; | ||
import path from 'path'; | ||
import get from 'lodash/get'; | ||
import includes from 'lodash/includes'; | ||
import VirtualFile from 'vinyl'; | ||
@@ -14,3 +15,3 @@ import through2 from 'through2'; | ||
if (_.isObject(options.attr) && _.includes(options.attr.extensions, extname)) { | ||
if (includes(get(options, 'attr.extensions'), extname)) { | ||
// Parse attribute (e.g. data-i18n="key") | ||
@@ -20,3 +21,3 @@ parser.parseAttrFromString(content); | ||
if (_.isObject(options.func) && _.includes(options.func.extensions, extname)) { | ||
if (includes(get(options, 'func.extensions'), extname)) { | ||
// Parse translation function (e.g. i18next.t('key')) | ||
@@ -23,0 +24,0 @@ parser.parseFuncFromString(content); |
/* eslint no-console: 0 */ | ||
import _ from 'lodash'; | ||
import fs from 'fs'; | ||
import isArray from 'lodash/isArray'; | ||
import isFunction from 'lodash/isFunction'; | ||
import isObject from 'lodash/isObject'; | ||
import isUndefined from 'lodash/isUndefined'; | ||
import isString from 'lodash/isString'; | ||
import flatten from 'lodash/flatten'; | ||
import union from 'lodash/union'; | ||
import get from 'lodash/get'; | ||
import set from 'lodash/set'; | ||
import escapeRegExp from 'lodash/escapeRegExp'; | ||
import includes from 'lodash/includes'; | ||
import trim from 'lodash/trim'; | ||
import toPairs from 'lodash/toPairs'; | ||
import sortBy from 'lodash/sortBy'; | ||
import { parse } from 'esprima'; | ||
import ensureArray from './ensure-array'; | ||
@@ -93,30 +107,30 @@ const defaults = { | ||
// Attribute | ||
if (_.isUndefined(_.get(options, 'attr.list'))) { | ||
_.set(options, 'attr.list', defaults.attr.list); | ||
if (isUndefined(get(options, 'attr.list'))) { | ||
set(options, 'attr.list', defaults.attr.list); | ||
} | ||
if (_.isUndefined(_.get(options, 'attr.extensions'))) { | ||
_.set(options, 'attr.extensions', defaults.attr.extensions); | ||
if (isUndefined(get(options, 'attr.extensions'))) { | ||
set(options, 'attr.extensions', defaults.attr.extensions); | ||
} | ||
// Function | ||
if (_.isUndefined(_.get(options, 'func.list'))) { | ||
_.set(options, 'func.list', defaults.func.list); | ||
if (isUndefined(get(options, 'func.list'))) { | ||
set(options, 'func.list', defaults.func.list); | ||
} | ||
// Resource | ||
if (_.isUndefined(_.get(options, 'func.extensions'))) { | ||
_.set(options, 'func.extensions', defaults.func.extensions); | ||
if (isUndefined(get(options, 'func.extensions'))) { | ||
set(options, 'func.extensions', defaults.func.extensions); | ||
} | ||
if (_.isUndefined(_.get(options, 'resource.loadPath'))) { | ||
_.set(options, 'resource.loadPath', defaults.resource.loadPath); | ||
if (isUndefined(get(options, 'resource.loadPath'))) { | ||
set(options, 'resource.loadPath', defaults.resource.loadPath); | ||
} | ||
if (_.isUndefined(_.get(options, 'resource.savePath'))) { | ||
_.set(options, 'resource.savePath', defaults.resource.savePath); | ||
if (isUndefined(get(options, 'resource.savePath'))) { | ||
set(options, 'resource.savePath', defaults.resource.savePath); | ||
} | ||
if (_.isUndefined(_.get(options, 'resource.jsonIndent'))) { | ||
_.set(options, 'resource.jsonIndent', defaults.resource.jsonIndent); | ||
if (isUndefined(get(options, 'resource.jsonIndent'))) { | ||
set(options, 'resource.jsonIndent', defaults.resource.jsonIndent); | ||
} | ||
// Accept both nsseparator or nsSeparator | ||
if (!_.isUndefined(options.nsseparator)) { | ||
if (!isUndefined(options.nsseparator)) { | ||
options.nsSeparator = options.nsseparator; | ||
@@ -126,3 +140,3 @@ delete options.nsseparator; | ||
// Allowed only string or false | ||
if (!_.isString(options.nsSeparator)) { | ||
if (!isString(options.nsSeparator)) { | ||
options.nsSeparator = false; | ||
@@ -132,3 +146,3 @@ } | ||
// Accept both keyseparator or keySeparator | ||
if (!_.isUndefined(options.keyseparator)) { | ||
if (!isUndefined(options.keyseparator)) { | ||
options.keySeparator = options.keyseparator; | ||
@@ -138,14 +152,11 @@ delete options.keyseparator; | ||
// Allowed only string or false | ||
if (!_.isString(options.keySeparator)) { | ||
if (!isString(options.keySeparator)) { | ||
options.keySeparator = false; | ||
} | ||
if (!_.isArray(options.ns)) { | ||
if (!isArray(options.ns)) { | ||
options.ns = [options.ns]; | ||
} | ||
options.ns = _(options.ns.concat(options.defaultNs)) | ||
.flatten() | ||
.union() | ||
.value(); | ||
options.ns = union(flatten(options.ns.concat(options.defaultNs))); | ||
@@ -160,3 +171,3 @@ return options; | ||
class Parser { | ||
options = _.assign({}, defaults); | ||
options = { ...defaults }; | ||
@@ -170,3 +181,6 @@ // The resStore stores all translation keys including unused ones | ||
constructor(options) { | ||
this.options = transformOptions(_.extend({}, this.options, options)); | ||
this.options = transformOptions({ | ||
...this.options, | ||
...options | ||
}); | ||
@@ -209,4 +223,4 @@ const lngs = this.options.lngs; | ||
const regex = { | ||
lng: new RegExp(_.escapeRegExp(options.interpolation.prefix + 'lng' + options.interpolation.suffix), 'g'), | ||
ns: new RegExp(_.escapeRegExp(options.interpolation.prefix + 'ns' + options.interpolation.suffix), 'g') | ||
lng: new RegExp(escapeRegExp(options.interpolation.prefix + 'lng' + options.interpolation.suffix), 'g'), | ||
ns: new RegExp(escapeRegExp(options.interpolation.prefix + 'ns' + options.interpolation.suffix), 'g') | ||
}; | ||
@@ -221,4 +235,4 @@ | ||
const regex = { | ||
lng: new RegExp(_.escapeRegExp(options.interpolation.prefix + 'lng' + options.interpolation.suffix), 'g'), | ||
ns: new RegExp(_.escapeRegExp(options.interpolation.prefix + 'ns' + options.interpolation.suffix), 'g') | ||
lng: new RegExp(escapeRegExp(options.interpolation.prefix + 'lng' + options.interpolation.suffix), 'g'), | ||
ns: new RegExp(escapeRegExp(options.interpolation.prefix + 'ns' + options.interpolation.suffix), 'g') | ||
}; | ||
@@ -236,3 +250,3 @@ | ||
parseFuncFromString(content, opts = {}, customHandler = null) { | ||
if (_.isFunction(opts)) { | ||
if (isFunction(opts)) { | ||
customHandler = opts; | ||
@@ -242,6 +256,12 @@ opts = {}; | ||
const funcs = opts.list || this.options.func.list; | ||
const matchPattern = _(funcs) | ||
.map((func) => ('(?:' + func + ')')) | ||
.value() | ||
const funcs = (opts.list !== undefined) | ||
? ensureArray(opts.list) | ||
: ensureArray(this.options.func.list); | ||
if (funcs.length === 0) { | ||
return this; | ||
} | ||
const matchPattern = funcs | ||
.map(func => ('(?:' + func + ')')) | ||
.join('|') | ||
@@ -258,5 +278,5 @@ .replace(/\./g, '\\.'); | ||
let key = _.trim(r[1]); // Remove leading and trailing whitespace | ||
let key = trim(r[1]); // Remove leading and trailing whitespace | ||
const firstChar = key[0]; | ||
if (_.includes(['\'', '"'], firstChar)) { | ||
if (includes(['\'', '"'], firstChar)) { | ||
// Remove first and last character | ||
@@ -286,3 +306,3 @@ key = key.slice(1, -1); | ||
const syntax = parse('(' + code + ')'); | ||
const props = _.get(syntax, 'body[0].expression.properties') || []; | ||
const props = get(syntax, 'body[0].expression.properties') || []; | ||
// http://i18next.com/docs/options/ | ||
@@ -297,3 +317,3 @@ const supportedOptions = [ | ||
props.forEach((prop) => { | ||
if (_.includes(supportedOptions, prop.key.name)) { | ||
if (includes(supportedOptions, prop.key.name)) { | ||
if (prop.value.type === 'Literal') { | ||
@@ -327,3 +347,3 @@ options[prop.key.name] = prop.value.value; | ||
parseAttrFromString(content, opts = {}, customHandler = null) { | ||
if (_.isFunction(opts)) { | ||
if (isFunction(opts)) { | ||
customHandler = opts; | ||
@@ -333,6 +353,12 @@ opts = {}; | ||
const attrs = opts.list || this.options.attr.list; | ||
const matchPattern = _(attrs) | ||
.map((attr) => ('(?:' + attr + ')')) | ||
.value() | ||
const attrs = (opts.list !== undefined) | ||
? ensureArray(opts.list) | ||
: ensureArray(this.options.attr.list); | ||
if (attrs.length === 0) { | ||
return this; | ||
} | ||
const matchPattern = attrs | ||
.map(attr => ('(?:' + attr + ')')) | ||
.join('|') | ||
@@ -346,8 +372,9 @@ .replace(/\./g, '\\.'); | ||
while ((r = re.exec(content))) { | ||
const attr = _.trim(r[1], '\'"'); | ||
const keys = (attr.indexOf(';') >= 0) ? attr.split(';') : [attr]; | ||
const attr = trim(r[1], '\'"'); | ||
const keys = (attr.indexOf(';') >= 0) | ||
? attr.split(';') | ||
: [attr]; | ||
keys.forEach((key) => { | ||
//let attr = 'text'; | ||
key = _.trim(key); | ||
key = trim(key); | ||
if (key.length === 0) { | ||
@@ -357,6 +384,4 @@ return; | ||
if (key.indexOf('[') === 0) { | ||
let parts = key.split(']'); | ||
const parts = key.split(']'); | ||
key = parts[1]; | ||
//attr = parts[0].substr(1, parts[0].length - 1); | ||
} | ||
@@ -385,3 +410,3 @@ if (key.indexOf(';') === (key.length - 1)) { | ||
get(key, opts = {}) { | ||
if (_.isObject(key)) { | ||
if (isObject(key)) { | ||
opts = key; | ||
@@ -403,15 +428,10 @@ key = undefined; | ||
Object.keys(namespaces).forEach((ns) => { | ||
resStore[lng][ns] = _(namespaces[ns]) | ||
.toPairs() | ||
.sortBy((pair) => pair[0]) | ||
const pairs = toPairs(namespaces[ns]); | ||
resStore[lng][ns] = sortBy(pairs, (pair => pair[0])) | ||
.reduce((memo, pair) => { | ||
const _key = pair[0]; | ||
const _value = pair[1]; | ||
memo[_key] = _value; | ||
return memo; | ||
}, {}); | ||
// Note. The reduce method is not chainable by default | ||
}); | ||
@@ -421,3 +441,3 @@ }); | ||
if (!_.isUndefined(key)) { | ||
if (!isUndefined(key)) { | ||
let ns = this.options.defaultNs; | ||
@@ -433,3 +453,3 @@ | ||
if (_.isString(this.options.nsSeparator) && (key.indexOf(this.options.nsSeparator) > -1)) { | ||
if (isString(this.options.nsSeparator) && (key.indexOf(this.options.nsSeparator) > -1)) { | ||
const parts = key.split(this.options.nsSeparator); | ||
@@ -441,6 +461,8 @@ | ||
const keys = _.isString(this.options.keySeparator) | ||
const keys = isString(this.options.keySeparator) | ||
? key.split(this.options.keySeparator) | ||
: [key]; | ||
const lng = opts.lng ? opts.lng : this.options.fallbackLng; | ||
const lng = opts.lng | ||
? opts.lng | ||
: this.options.fallbackLng; | ||
const namespaces = resStore[lng] || {}; | ||
@@ -472,15 +494,19 @@ | ||
// Backward compatibility | ||
if (_.isString(options)) { | ||
let defaultValue = options; | ||
options = {}; | ||
options.defaultValue = defaultValue; | ||
if (isString(options)) { | ||
const defaultValue = options; | ||
options = { | ||
defaultValue: defaultValue | ||
}; | ||
} | ||
const nsSeparator = (options.nsSeparator !== undefined) ? options.nsSeparator : this.options.nsSeparator; | ||
const keySeparator = (options.keySeparator !== undefined) ? options.keySeparator : this.options.keySeparator; | ||
const nsSeparator = (options.nsSeparator !== undefined) | ||
? options.nsSeparator | ||
: this.options.nsSeparator; | ||
const keySeparator = (options.keySeparator !== undefined) | ||
? options.keySeparator | ||
: this.options.keySeparator; | ||
let ns = options.ns || this.options.defaultNs; | ||
console.assert(_.isString(ns) && !!ns.length, 'ns is not a valid string', ns); | ||
console.assert(isString(ns) && !!ns.length, 'ns is not a valid string', ns); | ||
@@ -495,3 +521,3 @@ // http://i18next.com/translate/keyBasedFallback/ | ||
if (_.isString(nsSeparator) && (key.indexOf(nsSeparator) > -1)) { | ||
if (isString(nsSeparator) && (key.indexOf(nsSeparator) > -1)) { | ||
const parts = key.split(nsSeparator); | ||
@@ -513,3 +539,5 @@ | ||
} = this.options; | ||
const keys = _.isString(keySeparator) ? key.split(keySeparator) : [key]; | ||
const keys = isString(keySeparator) | ||
? key.split(keySeparator) | ||
: [key]; | ||
@@ -520,3 +548,3 @@ lngs.forEach((lng) => { | ||
if (!_.isObject(resLoad)) { // skip undefined namespace | ||
if (!isObject(resLoad)) { // skip undefined namespace | ||
console.log('The namespace "' + ns + '" does not exist:', { key, options }); | ||
@@ -595,3 +623,3 @@ return; | ||
// Fallback to `defaultValue` | ||
resLoad[resKey] = _.isFunction(defaultValue) | ||
resLoad[resKey] = isFunction(defaultValue) | ||
? defaultValue(lng, ns, key, options) | ||
@@ -598,0 +626,0 @@ : defaultValue; |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
122567
42
2491