Comparing version 1.0.0 to 1.0.1
@@ -20,3 +20,3 @@ /* | ||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"getPlatform\": () => (/* binding */ getPlatform),\n/* harmony export */ \"getBrowser\": () => (/* binding */ getBrowser),\n/* harmony export */ \"top\": () => (/* binding */ top),\n/* harmony export */ \"globalVar\": () => (/* binding */ globalVar),\n/* harmony export */ \"isGlobal\": () => (/* binding */ isGlobal),\n/* harmony export */ \"getLocale\": () => (/* binding */ getLocale),\n/* harmony export */ \"getTimeZone\": () => (/* binding */ getTimeZone),\n/* harmony export */ \"clearCache\": () => (/* binding */ clearCache)\n/* harmony export */ });\nfunction _typeof(obj){\"@babel/helpers - typeof\";if(typeof Symbol===\"function\"&&typeof Symbol.iterator===\"symbol\"){_typeof=function _typeof(obj){return typeof obj}}else{_typeof=function _typeof(obj){return obj&&typeof Symbol===\"function\"&&obj.constructor===Symbol&&obj!==Symbol.prototype?\"symbol\":typeof obj}}return _typeof(obj)}var platform;function getPlatform(){if(!platform){try{if(typeof java.lang.Object!==\"undefined\"){platform=typeof process!==\"undefined\"?\"trireme\":\"rhino\";return platform}}catch(e){}if(typeof __webpack_require__.g!==\"undefined\"&&__webpack_require__.g.process&&__webpack_require__.g.process.versions&&__webpack_require__.g.process.versions.node&&\"object\"!==\"undefined\"){platform=\"nodejs\"}else if(typeof Qt!==\"undefined\"){platform=\"qt\"}else if(typeof PalmSystem!==\"undefined\"){platform=typeof window!==\"undefined\"?\"webos-webapp\":\"webos\"}else if(typeof window!==\"undefined\"){platform=\"browser\"}else{platform=\"unknown\"}}return platform};var browser;function getBrowser(){if(getPlatform()===\"browser\"){if(navigator&&navigator.userAgent){if(navigator.userAgent.indexOf(\"Firefox\")>-1){browser=\"firefox\"}else if(navigator.userAgent.search(/Opera|OPR/)>-1){browser=\"opera\"}else if(navigator.userAgent.indexOf(\"Chrome\")>-1){browser=\"chrome\"}else if(navigator.userAgent.indexOf(\" .NET\")>-1){browser=\"ie\"}else if(navigator.userAgent.indexOf(\"Safari\")>-1){browser=\"safari\"}else if(navigator.userAgent.indexOf(\"Edge\")>-1){browser=\"Edge\"}else if(navigator.userAgent.search(/iPad|iPhone|iPod/)>-1){browser=\"iOS\"}}}return browser};var topScope;function top(){if(typeof topScope===\"undefined\"){switch(getPlatform()){case\"rhino\":topScope=function(){return(typeof __webpack_require__.g===\"undefined\"?\"undefined\":_typeof(__webpack_require__.g))===\"object\"?__webpack_require__.g:this}();break;case\"nodejs\":case\"trireme\":topScope=typeof __webpack_require__.g!==\"undefined\"?__webpack_require__.g:this;break;default:topScope=window;break;}}return topScope};function globalVar(name){try{return top()[name]}catch(e){return undefined}};function isGlobal(name){return typeof globalVar(name)!==\"undefined\"};var locale;function getLocale(){if(typeof locale!==\"string\"){var plat=getPlatform();switch(plat){case\"browser\":if(typeof navigator.language!==\"undefined\"){locale=navigator.language.length>3?navigator.language.substring(0,3)+navigator.language.substring(3,5).toUpperCase():navigator.language}if(!locale){lang=typeof navigator.browserLanguage!==\"undefined\"?navigator.browserLanguage:typeof navigator.userLanguage!==\"undefined\"?navigator.userLanguage:typeof navigator.systemLanguage!==\"undefined\"?navigator.systemLanguage:undefined;if(typeof lang!==\"undefined\"&&lang){locale=lang.length>3?lang.substring(0,3)+lang.substring(3,5).toUpperCase():lang}else{locale=undefined}}break;case\"webos-webapp\":case\"webos\":if(typeof PalmSystem.locales!==\"undefined\"&&typeof PalmSystem.locales.UI!=\"undefined\"&&PalmSystem.locales.UI.length>0){locale=PalmSystem.locales.UI}else if(typeof PalmSystem.locale!==\"undefined\"){locale=PalmSystem.locale}else{locale=undefined}break;case\"rhino\":if(typeof environment!==\"undefined\"&&environment.user&&typeof environment.user.language===\"string\"&&environment.user.language.length>0){locale=environment.user.language;if(typeof environment.user.country===\"string\"&&environment.user.country.length>0){locale+=\"-\"+environment.user.country}}break;case\"trireme\":lang=process.env.LANG||process.env.LANGUAGE||process.env.LC_ALL;if(lang&&typeof lang!==\"undefined\"){var dot=lang.indexOf(\".\");if(dot>-1){lang=lang.substring(0,dot)}locale=lang.length>3?lang.substring(0,2).toLowerCase()+\"-\"+lang.substring(3,5).toUpperCase():lang}else{locale=undefined}break;case\"nodejs\":var lang=__webpack_require__.g.process.env.LANG||__webpack_require__.g.process.env.LC_ALL;if(lang&&typeof lang!==\"undefined\"){var _dot=lang.indexOf(\".\");if(_dot>-1){lang=lang.substring(0,_dot)}locale=lang.length>3?lang.substring(0,2).toLowerCase()+\"-\"+lang.substring(3,5).toUpperCase():lang}else{locale=undefined}break;case\"qt\":var locobj=Qt.locale();locale=locobj.name&&locobj.name.replace(\"_\",\"-\")||\"en-US\";break;}locale=typeof locale===\"string\"&&locale.length&&locale!==\"C\"?locale:\"en-US\";if(locale===\"en\"){locale=\"en-US\"}}return locale};var tz;function getTimeZone(){if(typeof tz===\"undefined\"){if(typeof Intl!==\"undefined\"&&typeof Intl.DateTimeFormat!==\"undefined\"){var ro=new Intl.DateTimeFormat().resolvedOptions();var timeZone=ro.timeZone;if(timeZone&&timeZone!==\"Etc/Unknown\"){tz=timeZone;return tz}}var timezone;switch(getPlatform()){case\"browser\":var _navigator=navigator;timezone=_navigator.timezone;if(timezone&&timezone.length>0){tz=timezone}break;case\"webos-webapp\":case\"webos\":var _PalmSystem=PalmSystem;timezone=_PalmSystem.timezone;if(timezone&&timezone.length>0){tz=timezone}break;case\"rhino\":if(typeof environment.user.timezone!==\"undefined\"&&environment.user.timezone.length>0){tz=environment.user.timezone}break;case\"nodejs\":if(__webpack_require__.g.process.env){tz=__webpack_require__.g.process.env.TZ}break;}tz=tz||\"local\"}return tz};function clearCache(){platform=locale=browser=tz=undefined};\n\n//# sourceURL=webpack://ilibEnv/./src/index.js?"); | ||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"getPlatform\": () => (/* binding */ getPlatform),\n/* harmony export */ \"getBrowser\": () => (/* binding */ getBrowser),\n/* harmony export */ \"top\": () => (/* binding */ top),\n/* harmony export */ \"globalVar\": () => (/* binding */ globalVar),\n/* harmony export */ \"isGlobal\": () => (/* binding */ isGlobal),\n/* harmony export */ \"getLocale\": () => (/* binding */ getLocale),\n/* harmony export */ \"getTimeZone\": () => (/* binding */ getTimeZone),\n/* harmony export */ \"clearCache\": () => (/* binding */ clearCache),\n/* harmony export */ \"setPlatform\": () => (/* binding */ setPlatform)\n/* harmony export */ });\nfunction _typeof(obj){\"@babel/helpers - typeof\";if(typeof Symbol===\"function\"&&typeof Symbol.iterator===\"symbol\"){_typeof=function _typeof(obj){return typeof obj}}else{_typeof=function _typeof(obj){return obj&&typeof Symbol===\"function\"&&obj.constructor===Symbol&&obj!==Symbol.prototype?\"symbol\":typeof obj}}return _typeof(obj)}var platform;function getPlatform(){if(!platform){try{if(typeof java.lang.Object!==\"undefined\"){platform=typeof process!==\"undefined\"?\"trireme\":\"rhino\";return platform}}catch(e){}if(typeof __webpack_require__.g!==\"undefined\"&&__webpack_require__.g.process&&__webpack_require__.g.process.versions&&__webpack_require__.g.process.versions.node&&\"object\"!==\"undefined\"){platform=\"nodejs\"}else if(typeof Qt!==\"undefined\"){platform=\"qt\"}else if(typeof PalmSystem!==\"undefined\"){platform=typeof window!==\"undefined\"?\"webos-webapp\":\"webos\"}else if(typeof window!==\"undefined\"){platform=\"browser\"}else{platform=\"unknown\"}}return platform};var browser;function getBrowser(){if(getPlatform()===\"browser\"){if(navigator&&navigator.userAgent){if(navigator.userAgent.indexOf(\"Firefox\")>-1){browser=\"firefox\"}else if(navigator.userAgent.search(/Opera|OPR/)>-1){browser=\"opera\"}else if(navigator.userAgent.indexOf(\"Chrome\")>-1){browser=\"chrome\"}else if(navigator.userAgent.indexOf(\" .NET\")>-1){browser=\"ie\"}else if(navigator.userAgent.indexOf(\"Safari\")>-1){browser=\"safari\"}else if(navigator.userAgent.indexOf(\"Edge\")>-1){browser=\"Edge\"}else if(navigator.userAgent.search(/iPad|iPhone|iPod/)>-1){browser=\"iOS\"}}}return browser};var topScope;function top(){if(typeof topScope===\"undefined\"){switch(getPlatform()){case\"rhino\":topScope=function(){return(typeof __webpack_require__.g===\"undefined\"?\"undefined\":_typeof(__webpack_require__.g))===\"object\"?__webpack_require__.g:this}();break;case\"nodejs\":case\"trireme\":topScope=typeof __webpack_require__.g!==\"undefined\"?__webpack_require__.g:this;break;default:topScope=window;break;}}return topScope};function globalVar(name){try{return top()[name]}catch(e){return undefined}};function isGlobal(name){return typeof globalVar(name)!==\"undefined\"};var locale;function parseLocale(str){if(!str)return str;var dot=str.indexOf(\".\");if(dot>-1){str=str.substring(0,dot)}if(str===\"C\")return\"en-US\";if(str.length>=10){return[str.substring(0,2).toLowerCase(),str[3].toUpperCase()+str.substring(4,7).toLowerCase(),str.substring(8,10).toUpperCase()].join(\"-\")}if(str.length>=7){return[str.substring(0,2).toLowerCase(),str[3].toUpperCase()+str.substring(4,7).toLowerCase()].join(\"-\")}if(str.length>=5){return[str.substring(0,2).toLowerCase(),str.substring(3,5).toUpperCase()].join(\"-\")}if(str.length<3){return str.toLowerCase()}return str}function getLocale(){var lang,dot;if(typeof locale!==\"string\"){var plat=getPlatform();switch(plat){case\"browser\":if(typeof navigator.language!==\"undefined\"){locale=parseLocale(navigator.language)}if(!locale){_lang=typeof navigator.browserLanguage!==\"undefined\"?navigator.browserLanguage:typeof navigator.userLanguage!==\"undefined\"?navigator.userLanguage:typeof navigator.systemLanguage!==\"undefined\"?navigator.systemLanguage:undefined;locale=parseLocale(_lang)}break;case\"webos-webapp\":case\"webos\":if(typeof PalmSystem.locales!==\"undefined\"&&typeof PalmSystem.locales.UI!=\"undefined\"&&PalmSystem.locales.UI.length>0){locale=parseLocale(PalmSystem.locales.UI)}else if(typeof PalmSystem.locale!==\"undefined\"){locale=parseLocale(PalmSystem.locale)}else{locale=undefined}break;case\"rhino\":if(typeof environment!==\"undefined\"&&environment.user&&typeof environment.user.language===\"string\"&&environment.user.language.length>0){var l=[environment.user.language];if(typeof environment.user.country===\"string\"&&environment.user.country.length>0){l.push(environment.user.country)}locale=l.join(\"-\")}break;case\"trireme\":_lang=process.env.LANG||process.env.LANGUAGE||process.env.LC_ALL;locale=parseLocale(_lang);break;case\"nodejs\":var _lang=__webpack_require__.g.process.env.LANG||__webpack_require__.g.process.env.LC_ALL;locale=parseLocale(_lang);break;case\"qt\":var locobj=Qt.locale();locale=parseLocale(locobj.name||\"en-US\");break;}locale=typeof locale===\"string\"&&locale.length&&locale!==\"C\"?locale:\"en-US\";if(locale===\"en\"){locale=\"en-US\"}}return locale};var tz;function getTimeZone(){if(typeof tz===\"undefined\"){if(typeof Intl!==\"undefined\"&&typeof Intl.DateTimeFormat!==\"undefined\"){var ro=new Intl.DateTimeFormat().resolvedOptions();var timeZone=ro.timeZone;if(timeZone&&timeZone!==\"Etc/Unknown\"){tz=timeZone;return tz}}var timezone;switch(getPlatform()){case\"browser\":var _navigator=navigator;timezone=_navigator.timezone;if(timezone&&timezone.length>0){tz=timezone}break;case\"webos-webapp\":case\"webos\":var _PalmSystem=PalmSystem;timezone=_PalmSystem.timezone;if(timezone&&timezone.length>0){tz=timezone}break;case\"rhino\":if(typeof environment.user.timezone!==\"undefined\"&&environment.user.timezone.length>0){tz=environment.user.timezone}break;case\"nodejs\":if(__webpack_require__.g.process.env){tz=__webpack_require__.g.process.env.TZ}break;}tz=tz||\"local\"}return tz};function clearCache(){platform=locale=browser=tz=undefined};function setPlatform(plat){platform=plat};\n\n//# sourceURL=webpack://ilibEnv/./src/index.js?"); | ||
@@ -23,0 +23,0 @@ /***/ }) |
@@ -1,2 +0,2 @@ | ||
"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.getPlatform=getPlatform;exports.getBrowser=getBrowser;exports.top=top;exports.globalVar=globalVar;exports.isGlobal=isGlobal;exports.getLocale=getLocale;exports.getTimeZone=getTimeZone;exports.clearCache=clearCache;function _typeof(obj){"@babel/helpers - typeof";if(typeof Symbol==="function"&&typeof Symbol.iterator==="symbol"){_typeof=function _typeof(obj){return typeof obj}}else{_typeof=function _typeof(obj){return obj&&typeof Symbol==="function"&&obj.constructor===Symbol&&obj!==Symbol.prototype?"symbol":typeof obj}}return _typeof(obj)}/* | ||
"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.getPlatform=getPlatform;exports.getBrowser=getBrowser;exports.top=top;exports.globalVar=globalVar;exports.isGlobal=isGlobal;exports.getLocale=getLocale;exports.getTimeZone=getTimeZone;exports.clearCache=clearCache;exports.setPlatform=setPlatform;function _typeof(obj){"@babel/helpers - typeof";if(typeof Symbol==="function"&&typeof Symbol.iterator==="symbol"){_typeof=function _typeof(obj){return typeof obj}}else{_typeof=function _typeof(obj){return obj&&typeof Symbol==="function"&&obj.constructor===Symbol&&obj!==Symbol.prototype?"symbol":typeof obj}}return _typeof(obj)}/* | ||
* index.js - detect various things in the runtime environment | ||
@@ -63,2 +63,10 @@ * | ||
*/function isGlobal(name){return typeof globalVar(name)!=="undefined"};var locale;/** | ||
* @private | ||
*/function parseLocale(str){if(!str)return str;// take care of the libc style locale with a dot + script at the end | ||
var dot=str.indexOf(".");if(dot>-1){str=str.substring(0,dot)}// handle the posix default locale | ||
if(str==="C")return"en-US";// full locale | ||
if(str.length>=10){return[str.substring(0,2).toLowerCase(),str[3].toUpperCase()+str.substring(4,7).toLowerCase(),str.substring(8,10).toUpperCase()].join("-")}// language + script | ||
if(str.length>=7){return[str.substring(0,2).toLowerCase(),str[3].toUpperCase()+str.substring(4,7).toLowerCase()].join("-")}// language + region | ||
if(str.length>=5){return[str.substring(0,2).toLowerCase(),str.substring(3,5).toUpperCase()].join("-")}// language only | ||
if(str.length<3){return str.toLowerCase()}return str}/** | ||
* Return the default locale for this platform, if there is one. | ||
@@ -69,18 +77,18 @@ * If not, it will default to the locale "en-US".<p> | ||
* @return {string} the BCP-47 locale specifier for the default locale | ||
*/function getLocale(){if(typeof locale!=="string"){var plat=getPlatform();switch(plat){case"browser":// running in a browser | ||
if(typeof navigator.language!=="undefined"){locale=navigator.language.length>3?navigator.language.substring(0,3)+navigator.language.substring(3,5).toUpperCase():navigator.language;// FF/Opera/Chrome/Webkit | ||
*/function getLocale(){var lang,dot;if(typeof locale!=="string"){var plat=getPlatform();switch(plat){case"browser":// running in a browser | ||
if(typeof navigator.language!=="undefined"){locale=parseLocale(navigator.language);// FF/Opera/Chrome/Webkit | ||
}if(!locale){// IE on Windows | ||
lang=typeof navigator.browserLanguage!=="undefined"?navigator.browserLanguage:typeof navigator.userLanguage!=="undefined"?navigator.userLanguage:typeof navigator.systemLanguage!=="undefined"?navigator.systemLanguage:undefined;if(typeof lang!=="undefined"&&lang){// for some reason, MS uses lower case region tags | ||
locale=lang.length>3?lang.substring(0,3)+lang.substring(3,5).toUpperCase():lang}else{locale=undefined}}break;case"webos-webapp":case"webos":// webOS | ||
if(typeof PalmSystem.locales!=="undefined"&&typeof PalmSystem.locales.UI!="undefined"&&PalmSystem.locales.UI.length>0){locale=PalmSystem.locales.UI}else if(typeof PalmSystem.locale!=="undefined"){locale=PalmSystem.locale}else{locale=undefined}break;case"rhino":if(typeof environment!=="undefined"&&environment.user&&typeof environment.user.language==="string"&&environment.user.language.length>0){// running under plain rhino | ||
locale=environment.user.language;if(typeof environment.user.country==="string"&&environment.user.country.length>0){locale+="-"+environment.user.country}}break;case"trireme":// under trireme on rhino emulating nodejs | ||
lang=process.env.LANG||process.env.LANGUAGE||process.env.LC_ALL;// the LANG variable on unix is in the form "lang_REGION.CHARSET" | ||
_lang=typeof navigator.browserLanguage!=="undefined"?navigator.browserLanguage:typeof navigator.userLanguage!=="undefined"?navigator.userLanguage:typeof navigator.systemLanguage!=="undefined"?navigator.systemLanguage:undefined;// for some reason, MS uses lower case region tags | ||
locale=parseLocale(_lang)}break;case"webos-webapp":case"webos":// webOS | ||
if(typeof PalmSystem.locales!=="undefined"&&typeof PalmSystem.locales.UI!="undefined"&&PalmSystem.locales.UI.length>0){locale=parseLocale(PalmSystem.locales.UI)}else if(typeof PalmSystem.locale!=="undefined"){locale=parseLocale(PalmSystem.locale)}else{locale=undefined}break;case"rhino":if(typeof environment!=="undefined"&&environment.user&&typeof environment.user.language==="string"&&environment.user.language.length>0){// running under plain rhino | ||
var l=[environment.user.language];if(typeof environment.user.country==="string"&&environment.user.country.length>0){l.push(environment.user.country)}locale=l.join("-")}break;case"trireme":// under trireme on rhino emulating nodejs | ||
_lang=process.env.LANG||process.env.LANGUAGE||process.env.LC_ALL;// the LANG variable on unix is in the form "lang_REGION.CHARSET" | ||
// where language and region are the correct ISO codes separated by | ||
// an underscore. This translate it back to the BCP-47 form. | ||
if(lang&&typeof lang!=="undefined"){var dot=lang.indexOf(".");if(dot>-1){lang=lang.substring(0,dot)}locale=lang.length>3?lang.substring(0,2).toLowerCase()+"-"+lang.substring(3,5).toUpperCase():lang}else{locale=undefined}break;case"nodejs":// running under nodejs | ||
var lang=global.process.env.LANG||global.process.env.LC_ALL;// the LANG variable on unix is in the form "lang_REGION.CHARSET" | ||
locale=parseLocale(_lang);break;case"nodejs":// running under nodejs | ||
var _lang=global.process.env.LANG||global.process.env.LC_ALL;// the LANG variable on unix is in the form "lang_REGION.CHARSET" | ||
// where language and region are the correct ISO codes separated by | ||
// an underscore. This translate it back to the BCP-47 form. | ||
if(lang&&typeof lang!=="undefined"){var _dot=lang.indexOf(".");if(_dot>-1){lang=lang.substring(0,_dot)}locale=lang.length>3?lang.substring(0,2).toLowerCase()+"-"+lang.substring(3,5).toUpperCase():lang}else{locale=undefined}break;case"qt":// running in the Javascript engine under Qt/QML | ||
var locobj=Qt.locale();locale=locobj.name&&locobj.name.replace("_","-")||"en-US";break;}locale=typeof locale==="string"&&locale.length&&locale!=="C"?locale:"en-US";if(locale==="en"){locale="en-US";// hack to get various platforms working correctly | ||
locale=parseLocale(_lang);break;case"qt":// running in the Javascript engine under Qt/QML | ||
var locobj=Qt.locale();locale=parseLocale(locobj.name||"en-US");break;}locale=typeof locale==="string"&&locale.length&&locale!=="C"?locale:"en-US";if(locale==="en"){locale="en-US";// hack to get various platforms working correctly | ||
}}return locale};var tz;/** | ||
@@ -95,3 +103,9 @@ * Return the default time zone for this platform if there is one. | ||
var _PalmSystem=PalmSystem;timezone=_PalmSystem.timezone;if(timezone&&timezone.length>0){tz=timezone}break;case"rhino":// running under rhino | ||
if(typeof environment.user.timezone!=="undefined"&&environment.user.timezone.length>0){tz=environment.user.timezone}break;case"nodejs":if(global.process.env){tz=global.process.env.TZ}break;}tz=tz||"local"}return tz};function clearCache(){platform=locale=browser=tz=undefined}; | ||
if(typeof environment.user.timezone!=="undefined"&&environment.user.timezone.length>0){tz=environment.user.timezone}break;case"nodejs":if(global.process.env){tz=global.process.env.TZ}break;}tz=tz||"local"}return tz};/** | ||
* Used in unit testing to start afresh. | ||
* @private | ||
*/function clearCache(){platform=locale=browser=tz=undefined};/** | ||
* Used in unit testing to simulate a platform. | ||
* @private | ||
*/function setPlatform(plat){platform=plat}; | ||
//# sourceMappingURL=index.js.map |
{ | ||
"name": "ilib-env", | ||
"version": "1.0.0", | ||
"version": "1.0.1", | ||
"main": "./lib/index.js", | ||
@@ -42,2 +42,3 @@ "module": "./src/index.js", | ||
"lib", | ||
"docs", | ||
"README.md", | ||
@@ -55,12 +56,16 @@ "LICENSE" | ||
"build:web": "webpack-cli", | ||
"dist": "npm run build:prod ; npm pack", | ||
"build:test": "webpack-cli --config webpack-test.config.js", | ||
"dist": "npm run doc ; npm run build:prod ; npm run build:web; npm pack", | ||
"test": "LANG=en_US.UTF8 npm run build:dev ; node test/testSuite.js", | ||
"testall": "LANG=en_US.UTF8 npm run test; npm run build:test ; open-cli ./test/testSuite.html ; open-cli ./test/testSuite.html -- firefox", | ||
"debug": "npm run build:dev ; node --inspect-brk test/testSuite.js", | ||
"clean": "git clean -f -d *" | ||
"clean": "git clean -f -d *", | ||
"doc": "mkdir -p docs ; jsdoc2md -c jsdoc.json --separators --source src/* -m table > docs/ilibEnv.md", | ||
"doc:html": "jsdoc -c jsdoc.json" | ||
}, | ||
"devDependencies": { | ||
"@babel/core": "^7.9.0", | ||
"@babel/preset-env": "^7.9.5", | ||
"@babel/register": "^7.9.0", | ||
"@babel/runtime": "^7.9.2", | ||
"@babel/core": "^7.14.3", | ||
"@babel/preset-env": "^7.14.2", | ||
"@babel/register": "^7.13.16", | ||
"@babel/runtime": "^7.14.0", | ||
"acorn": "^6.4.1", | ||
@@ -70,3 +75,3 @@ "acorn-jsx": "^5.2.0", | ||
"babel-loader": "^8.2.2", | ||
"grunt": "^1.1.0", | ||
"grunt": "^1.4.0", | ||
"grunt-babel": "^8.0.0", | ||
@@ -78,7 +83,10 @@ "grunt-cli": "^1.3.2", | ||
"grunt-contrib-uglify": "^4.0.1", | ||
"jsdoc": "^3.6.6", | ||
"jsdoc-to-markdown": "^7.0.1", | ||
"load-grunt-tasks": "^5.1.0", | ||
"nodeunit": "^0.11.3", | ||
"webpack": "^5.31.0", | ||
"webpack-cli": "^4.6.0" | ||
"open-cli": "^6.0.1", | ||
"webpack": "^5.37.1", | ||
"webpack-cli": "^4.7.0" | ||
} | ||
} |
@@ -15,2 +15,4 @@ # ilib-env | ||
See the [full API documentation](./docs/ilibEnv.md). | ||
## Installation | ||
@@ -202,1 +204,19 @@ | ||
limitations under the License. | ||
## Release Notes | ||
### v1.0.1 | ||
- fixed some lint problems | ||
- added API documentation | ||
- now can test on web browsers automatically | ||
- Fixed various bugs parsing the platform locales in getLocale() | ||
* Locales with a script code such as "zh-Hans-CN" | ||
* The posix "C" default locale | ||
* Platforms where the region code is not upper-case | ||
* Platforms that don't use a dash to separate the components | ||
* Platforms that include a dot and a charset name after the specifier | ||
### v1.0.0 | ||
- Initial version |
102
src/index.js
@@ -158,2 +158,50 @@ /* | ||
/** | ||
* @private | ||
*/ | ||
function parseLocale(str) { | ||
if (!str) return str; | ||
// take care of the libc style locale with a dot + script at the end | ||
var dot = str.indexOf('.') | ||
if (dot > -1) { | ||
str = str.substring(0, dot); | ||
} | ||
// handle the posix default locale | ||
if (str === "C") return "en-US"; | ||
// full locale | ||
if (str.length >= 10) { | ||
return [ | ||
str.substring(0,2).toLowerCase(), | ||
str[3].toUpperCase() + str.substring(4,7).toLowerCase(), | ||
str.substring(8,10).toUpperCase() | ||
].join("-"); | ||
} | ||
// language + script | ||
if (str.length >= 7) { | ||
return [ | ||
str.substring(0,2).toLowerCase(), | ||
str[3].toUpperCase() + str.substring(4,7).toLowerCase() | ||
].join("-"); | ||
} | ||
// language + region | ||
if (str.length >= 5) { | ||
return [ | ||
str.substring(0,2).toLowerCase(), | ||
str.substring(3,5).toUpperCase() | ||
].join("-"); | ||
} | ||
// language only | ||
if (str.length < 3) { | ||
return str.toLowerCase(); | ||
} | ||
return str; | ||
} | ||
/** | ||
* Return the default locale for this platform, if there is one. | ||
@@ -166,2 +214,3 @@ * If not, it will default to the locale "en-US".<p> | ||
export function getLocale() { | ||
let lang, dot; | ||
if (typeof(locale) !== 'string') { | ||
@@ -173,3 +222,3 @@ const plat = getPlatform(); | ||
if(typeof(navigator.language) !== 'undefined') { | ||
locale = (navigator.language.length > 3) ? navigator.language.substring(0,3) + navigator.language.substring(3,5).toUpperCase() : navigator.language; // FF/Opera/Chrome/Webkit | ||
locale = parseLocale(navigator.language); // FF/Opera/Chrome/Webkit | ||
} | ||
@@ -185,8 +234,4 @@ if (!locale) { | ||
undefined)); | ||
if (typeof(lang) !== 'undefined' && lang) { | ||
// for some reason, MS uses lower case region tags | ||
locale = (lang.length > 3) ? lang.substring(0,3) + lang.substring(3,5).toUpperCase() : lang; | ||
} else { | ||
locale = undefined; | ||
} | ||
// for some reason, MS uses lower case region tags | ||
locale = parseLocale(lang); | ||
} | ||
@@ -200,5 +245,5 @@ break; | ||
PalmSystem.locales.UI.length > 0) { | ||
locale = PalmSystem.locales.UI; | ||
locale = parseLocale(PalmSystem.locales.UI); | ||
} else if (typeof(PalmSystem.locale) !== 'undefined') { | ||
locale = PalmSystem.locale; | ||
locale = parseLocale(PalmSystem.locale); | ||
} else { | ||
@@ -211,6 +256,7 @@ locale = undefined; | ||
// running under plain rhino | ||
locale = environment.user.language; | ||
var l = [environment.user.language]; | ||
if (typeof(environment.user.country) === 'string' && environment.user.country.length > 0) { | ||
locale += '-' + environment.user.country; | ||
l.push(environment.user.country); | ||
} | ||
locale = l.join("-"); | ||
} | ||
@@ -224,11 +270,3 @@ break; | ||
// an underscore. This translate it back to the BCP-47 form. | ||
if (lang && typeof(lang) !== 'undefined') { | ||
const dot = lang.indexOf('.'); | ||
if (dot > -1) { | ||
lang = lang.substring(0, dot); | ||
} | ||
locale = (lang.length > 3) ? lang.substring(0,2).toLowerCase() + '-' + lang.substring(3,5).toUpperCase() : lang; | ||
} else { | ||
locale = undefined; | ||
} | ||
locale = parseLocale(lang); | ||
break; | ||
@@ -241,11 +279,3 @@ case 'nodejs': | ||
// an underscore. This translate it back to the BCP-47 form. | ||
if (lang && typeof(lang) !== 'undefined') { | ||
const dot = lang.indexOf('.'); | ||
if (dot > -1) { | ||
lang = lang.substring(0, dot); | ||
} | ||
locale = (lang.length > 3) ? lang.substring(0,2).toLowerCase() + '-' + lang.substring(3,5).toUpperCase() : lang; | ||
} else { | ||
locale = undefined; | ||
} | ||
locale = parseLocale(lang); | ||
break; | ||
@@ -255,3 +285,3 @@ case 'qt': | ||
const locobj = Qt.locale(); | ||
locale = locobj.name && locobj.name.replace("_", "-") || "en-US"; | ||
locale = parseLocale(locobj.name || "en-US"); | ||
break; | ||
@@ -323,4 +353,16 @@ } | ||
/** | ||
* Used in unit testing to start afresh. | ||
* @private | ||
*/ | ||
export function clearCache() { | ||
platform = locale = browser = tz = undefined; | ||
}; | ||
/** | ||
* Used in unit testing to simulate a platform. | ||
* @private | ||
*/ | ||
export function setPlatform(plat) { | ||
platform = plat; | ||
}; |
Sorry, the diff of this file is not supported yet
75276
8
546
220
22