ilib
Version:
iLib is a cross-engine library of internationalization (i18n) classes written in pure JS
2 lines • 1.34 kB
JavaScript
// !data ctype
var ilib=require("./ilib.js"),SearchUtils=require("./SearchUtils.js"),Utils=require("./Utils.js"),IString=require("./IString.js"),CType={_inRange:function(num,rangeName,obj){var range;if(num<0||!rangeName||!obj)return!1;if(!(range=obj[rangeName]))return!1;var compare=function(singlerange,target){return 1===singlerange.length?singlerange[0]-target:target<singlerange[0]?singlerange[0]-target:target>singlerange[1]?singlerange[1]-target:0},result=SearchUtils.bsearch(num,range,compare);return result<range.length&&0===compare(range[result],num)},withinRange:function(ch,rangeName){if(!rangeName)return!1;var num;switch(typeof ch){case"number":num=ch;break;case"string":num=IString.toCodePoint(ch,0);break;case"undefined":return!1;default:num=ch._toCodePoint(0)}return CType._inRange(num,rangeName.toLowerCase(),ilib.data.ctype)},_init:function(sync,loadParams,onLoad){CType._load("ctype",sync,loadParams,onLoad)},_load:function(name,sync,loadParams,onLoad){if(ilib.data[name])onLoad&&"function"==typeof onLoad&&onLoad(ilib.data[name]);else{var loadName=name?name+".json":"CType.json";Utils.loadData({object:"CType",name:loadName,locale:"-",nonlocale:!0,sync:sync,loadParams:loadParams,callback:ilib.bind(this,function(ct){ilib.data[name]=ct,onLoad&&"function"==typeof onLoad&&onLoad(ilib.data[name])})})}}};module.exports=CType;