123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722 |
- define("dojo/_base/lang", ["./kernel", "../has", "./sniff"], function(dojo, has){
-
-
-
-
- has.add("bug-for-in-skips-shadowed", function(){
-
- for(var i in {toString: 1}){
- return 0;
- }
- return 1;
- });
- var _extraNames =
- has("bug-for-in-skips-shadowed") ?
- "hasOwnProperty.valueOf.isPrototypeOf.propertyIsEnumerable.toLocaleString.toString.constructor".split(".") : [],
- _extraLen = _extraNames.length,
- _mixin = function(dest, source, copyFunc){
- var name, s, i, empty = {};
- for(name in source){
-
-
-
- s = source[name];
- if(!(name in dest) || (dest[name] !== s && (!(name in empty) || empty[name] !== s))){
- dest[name] = copyFunc ? copyFunc(s) : s;
- }
- }
- if(has("bug-for-in-skips-shadowed")){
- if(source){
- for(i = 0; i < _extraLen; ++i){
- name = _extraNames[i];
- s = source[name];
- if(!(name in dest) || (dest[name] !== s && (!(name in empty) || empty[name] !== s))){
- dest[name] = copyFunc ? copyFunc(s) : s;
- }
- }
- }
- }
- return dest;
- },
- mixin = function(dest, sources){
- if(!dest){ dest = {}; }
- for(var i = 1, l = arguments.length; i < l; i++){
- lang._mixin(dest, arguments[i]);
- }
- return dest;
- },
- getProp = function(/*Array*/parts, /*Boolean*/create, /*Object*/context){
- if(!context){
- if(parts[0] && dojo.scopeMap[parts[0]]) {
-
-
- context = dojo.scopeMap[parts.shift()][1];
- }else{
- context = dojo.global;
- }
- }
- try{
- for(var i = 0; i < parts.length; i++){
- var p = parts[i];
-
- if (p === '__proto__' || p === 'constructor') {
- return;
- }
- if(!(p in context)){
- if(create){
- context[p] = {};
- }else{
- return;
- }
- }
- context = context[p];
- }
- return context;
- }catch(e){
-
-
- }
- },
- setObject = function(name, value, context){
- var parts = name.split("."), p = parts.pop(), obj = getProp(parts, true, context);
- return obj && p ? (obj[p] = value) : undefined;
- },
- getObject = function(name, create, context){
- return !name ? context : getProp(name.split("."), create, context);
- },
- exists = function(name, obj){
- return lang.getObject(name, false, obj) !== undefined;
- },
- opts = Object.prototype.toString,
-
- isString = function(it){
- return (typeof it == "string" || it instanceof String);
- },
- isArray = function(it){
- return it && (it instanceof Array || typeof it == "array");
- },
- isFunction = function(it){
- return opts.call(it) === "[object Function]";
- },
- isObject = function(it){
- return it !== undefined &&
- (it === null || typeof it == "object" || lang.isArray(it) || lang.isFunction(it));
- },
- isArrayLike = function(it){
- return it && it !== undefined &&
-
-
- !lang.isString(it) && !lang.isFunction(it) &&
- !(it.tagName && it.tagName.toLowerCase() == 'form') &&
- (lang.isArray(it) || isFinite(it.length));
- },
- isAlien = function(it){
- return it && !lang.isFunction(it) && /\{\s*\[native code\]\s*\}/.test(String(it));
- },
- extend = function(constructor, props){
- for(var i=1, l=arguments.length; i<l; i++){
- lang._mixin(constructor.prototype, arguments[i]);
- }
- return constructor; // Object
- },
- _hitchArgs = function(scope, method){
- var pre = _toArray(arguments, 2);
- var named = lang.isString(method);
- return function(){
-
- var args = _toArray(arguments);
-
- var f = named ? (scope||dojo.global)[method] : method;
-
- return f && f.apply(scope || this, pre.concat(args));
- };
- },
- hitch = function(scope, method){
- if(arguments.length > 2){
- return lang._hitchArgs.apply(dojo, arguments);
- }
- if(!method){
- method = scope;
- scope = null;
- }
- if(lang.isString(method)){
- scope = scope || dojo.global;
- if(!scope[method]){ throw(['dojo.hitch: scope["', method, '"] is null (scope="', scope, '")'].join('')); }
- return function(){ return scope[method].apply(scope, arguments || []); };
- }
- return !scope ? method : function(){ return method.apply(scope, arguments || []); };
- },
- delegate = (function(){
-
- function TMP(){}
- return function(obj, props){
- TMP.prototype = obj;
- var tmp = new TMP();
- TMP.prototype = null;
- if(props){
- lang._mixin(tmp, props);
- }
- return tmp;
- };
- })(),
- efficient = function(obj, offset, startWith){
- return (startWith||[]).concat(Array.prototype.slice.call(obj, offset||0));
- },
- _toArray =
- has("ie") ?
- (function(){
- function slow(obj, offset, startWith){
- var arr = startWith||[];
- for(var x = offset || 0; x < obj.length; x++){
- arr.push(obj[x]);
- }
- return arr;
- }
- return function(obj){
- return ((obj.item) ? slow : efficient).apply(this, arguments);
- };
- })() : efficient,
- partial = function(/*Function|String*/method /*, ...*/){
- var arr = [ null ];
- return lang.hitch.apply(dojo, arr.concat(lang._toArray(arguments)));
- },
- clone = function(/*anything*/ src){
- if(!src || typeof src != "object" || lang.isFunction(src)){
-
- return src;
- }
- if(src.nodeType && "cloneNode" in src){
-
- return src.cloneNode(true);
- }
- if(src instanceof Date){
-
- return new Date(src.getTime());
- }
- if(src instanceof RegExp){
-
- return new RegExp(src);
- }
- var r, i, l;
- if(lang.isArray(src)){
-
- r = [];
- for(i = 0, l = src.length; i < l; ++i){
- if(i in src){
- r.push(clone(src[i]));
- }
- }
-
-
-
-
- }else{
-
- r = src.constructor ? new src.constructor() : {};
- }
- return lang._mixin(r, src, clone);
- },
- trim = String.prototype.trim ?
- function(str){ return str.trim(); } :
- function(str){ return str.replace(/^\s\s*/, '').replace(/\s\s*$/, ''); },
- _pattern = /\{([^\}]+)\}/g,
- replace = function(tmpl, map, pattern){
- return tmpl.replace(pattern || _pattern, lang.isFunction(map) ?
- map : function(_, k){ return getObject(k, false, map); });
- },
- lang = {
- _extraNames:_extraNames,
- _mixin:_mixin,
- mixin:mixin,
- setObject:setObject,
- getObject:getObject,
- exists:exists,
- isString:isString,
- isArray:isArray,
- isFunction:isFunction,
- isObject:isObject,
- isArrayLike:isArrayLike,
- isAlien:isAlien,
- extend:extend,
- _hitchArgs:_hitchArgs,
- hitch:hitch,
- delegate:delegate,
- _toArray:_toArray,
- partial:partial,
- clone:clone,
- trim:trim,
- replace:replace
- };
- 1 && mixin(dojo, lang);
- return lang;
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- });
|