Comparing version 0.2.1 to 1.0.0
105
lib/i18n.js
'use strict'; | ||
var vsprintf = require('sprintf-js').vsprintf; | ||
const { vsprintf } = require('sprintf-js'); | ||
function i18n(options){ | ||
/* jshint validthis: true */ | ||
options = options || {}; | ||
function i18n(options = {}) { | ||
this.data = {}; | ||
this.languages = options.languages || ['default']; | ||
if (!Array.isArray(this.languages)){ | ||
if (!Array.isArray(this.languages)) { | ||
this.languages = [this.languages]; | ||
@@ -17,9 +14,8 @@ } | ||
i18n.prototype.get = function(languages){ | ||
var data = this.data; | ||
var result = {}; | ||
var lang, langData, keys, key, i, leni, j, lenj; | ||
i18n.prototype.get = function(languages) { | ||
const { data } = this; | ||
const result = {}; | ||
if (languages){ | ||
if (!Array.isArray(languages)){ | ||
if (languages) { | ||
if (!Array.isArray(languages)) { | ||
languages = [languages]; | ||
@@ -31,12 +27,12 @@ } | ||
for (i = 0, leni = languages.length; i < leni; i++){ | ||
lang = languages[i]; | ||
langData = data[lang]; | ||
for (let i = 0, leni = languages.length; i < leni; i++) { | ||
const lang = languages[i]; | ||
const langData = data[lang]; | ||
if (!langData) continue; | ||
keys = Object.keys(langData); | ||
const keys = Object.keys(langData); | ||
for (j = 0, lenj = keys.length; j < lenj; j++){ | ||
key = keys[j]; | ||
if (!result.hasOwnProperty(key)) result[key] = langData[key]; | ||
for (let j = 0, lenj = keys.length; j < lenj; j++) { | ||
const key = keys[j]; | ||
if (!Object.prototype.hasOwnProperty.call(result, key)) result[key] = langData[key]; | ||
} | ||
@@ -48,3 +44,3 @@ } | ||
i18n.prototype.set = function(lang, data){ | ||
i18n.prototype.set = function(lang, data) { | ||
if (typeof lang !== 'string') throw new TypeError('lang must be a string!'); | ||
@@ -58,3 +54,3 @@ if (typeof data !== 'object') throw new TypeError('data is required!'); | ||
i18n.prototype.remove = function(lang){ | ||
i18n.prototype.remove = function(lang) { | ||
if (typeof lang !== 'string') throw new TypeError('lang must be a string!'); | ||
@@ -67,19 +63,14 @@ | ||
i18n.prototype.list = function(){ | ||
i18n.prototype.list = function() { | ||
return Object.keys(this.data); | ||
}; | ||
function flattenObject(data, obj, parent){ | ||
obj = obj || {}; | ||
parent = parent || ''; | ||
function flattenObject(data, obj = {}, parent = '') { | ||
const keys = Object.keys(data); | ||
var keys = Object.keys(data); | ||
var key = ''; | ||
var item; | ||
for (let i = 0, len = keys.length; i < len; i++) { | ||
const key = keys[i]; | ||
const item = data[key]; | ||
for (var i = 0, len = keys.length; i < len; i++){ | ||
key = keys[i]; | ||
item = data[key]; | ||
if (typeof item === 'object'){ | ||
if (typeof item === 'object') { | ||
flattenObject(item, obj, parent + key + '.'); | ||
@@ -94,18 +85,10 @@ } else { | ||
i18n.prototype.__ = function(lang){ | ||
var data = this.get(lang); | ||
i18n.prototype.__ = function(lang) { | ||
const data = this.get(lang); | ||
return function(){ | ||
var len = arguments.length; | ||
if (!len) return ''; | ||
return (key, ...args) => { | ||
if (!key) return ''; | ||
var args = new Array(len); | ||
const str = data[key] || key; | ||
for (var i = 0; i < len; i++){ | ||
args[i] = arguments[i]; | ||
} | ||
var key = args.shift(); | ||
var str = data[key] || key; | ||
return vsprintf(str, args); | ||
@@ -115,26 +98,18 @@ }; | ||
i18n.prototype._p = function(lang){ | ||
var data = this.get(lang); | ||
i18n.prototype._p = function(lang) { | ||
const data = this.get(lang); | ||
return function(){ | ||
var len = arguments.length; | ||
if (!len) return ''; | ||
return (key, ...args) => { | ||
if (!key) return ''; | ||
var args = new Array(len); | ||
const number = args.length ? +args[0] : 0; | ||
let str = key; | ||
for (var i = 0; i < len; i++){ | ||
args[i] = arguments[i]; | ||
} | ||
var key = args.shift(); | ||
var number = args.length ? +args[0] : 0; | ||
var str = key; | ||
if (!number && data.hasOwnProperty(key + '.zero')){ | ||
if (!number && Object.prototype.hasOwnProperty.call(data, key + '.zero')) { | ||
str = data[key + '.zero']; | ||
} else if (number === 1 && data.hasOwnProperty(key + '.one')){ | ||
} else if (number === 1 && Object.prototype.hasOwnProperty.call(data, key + '.one')) { | ||
str = data[key + '.one']; | ||
} else if (data.hasOwnProperty(key + '.other')){ | ||
} else if (Object.prototype.hasOwnProperty.call(data, key + '.other')) { | ||
str = data[key + '.other']; | ||
} else if (data.hasOwnProperty(key)){ | ||
} else if (Object.prototype.hasOwnProperty.call(data, key)) { | ||
str = data[key]; | ||
@@ -147,2 +122,2 @@ } | ||
module.exports = i18n; | ||
module.exports = i18n; |
{ | ||
"name": "hexo-i18n", | ||
"version": "0.2.1", | ||
"version": "1.0.0", | ||
"description": "i18n module for Hexo.", | ||
"main": "lib/i18n", | ||
"main": "lib/i18n.js", | ||
"scripts": { | ||
"test": "gulp test" | ||
"eslint": "eslint .", | ||
"test": "mocha test/index.js", | ||
"test-cov": "nyc npm run test" | ||
}, | ||
@@ -12,4 +14,7 @@ "directories": { | ||
}, | ||
"files": [ | ||
"lib/" | ||
], | ||
"engines": { | ||
"node": ">= 0.10.0" | ||
"node": ">=8.6.0" | ||
}, | ||
@@ -26,16 +31,11 @@ "repository": "hexojs/hexo-i18n", | ||
"dependencies": { | ||
"sprintf-js": "^1.0.2" | ||
"sprintf-js": "^1.0.3" | ||
}, | ||
"devDependencies": { | ||
"chai": "^1.9.1", | ||
"coveralls": "^2.11.2", | ||
"gulp": "^3.8.9", | ||
"gulp-istanbul": "^0.5.0", | ||
"gulp-jshint": "^1.8.6", | ||
"gulp-load-plugins": "^0.7.0", | ||
"gulp-mocha": "^2.0.0", | ||
"jshint-stylish": "^1.0.0", | ||
"mocha": "^2.0.1", | ||
"rimraf": "^2.2.8" | ||
"chai": "^4.2.0", | ||
"eslint": "^6.1.0", | ||
"eslint-config-hexo": "^3.0.0", | ||
"mocha": "^6.0.2", | ||
"nyc": "^14.1.1" | ||
} | ||
} |
New author
Supply chain riskA new npm collaborator published a version of the package for the first time. New collaborators are usually benign additions to a project, but do indicate a change to the security surface area of a package.
Found 1 instance in 1 package
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
Found 1 instance in 1 package
5
0
6562
4
85
1
Updatedsprintf-js@^1.0.3