Comparing version 0.2.9 to 0.3.0
62
m8.js
;!function( root, Name, PACKAGE ) { | ||
"use strict"; | ||
/*~ m8/src/vars.js ~*/ | ||
/*~ src/vars.js ~*/ | ||
// if ENV === commonjs we want root to be global | ||
@@ -54,3 +54,3 @@ typeof global == 'undefined' ? root : ( root = global ); | ||
/*~ m8/src/lib.js ~*/ | ||
/*~ src/lib.js ~*/ | ||
function __lib__( val ) { return val; } | ||
@@ -156,3 +156,5 @@ | ||
function got( obj, key ) { return arguments.length > 2 ? hasSome( got, obj, Array.coerce( arguments, 1 ) ) : key in Object( obj ); } | ||
function got( item, property ) { | ||
return String( property ) in Object( item ); | ||
} | ||
@@ -166,4 +168,5 @@ // credit for guid goes here: gist.github.com/2295777 | ||
function has( obj, key ) { return arguments.length > 2 ? hasSome( has, obj, Array.coerce( arguments, 1 ) ) : OP.hasOwnProperty.call( obj, key ); } | ||
function hasSome( test, obj, keys ) { return keys.some( function( key ) { return test( obj, key ); } ); } | ||
function has( item, property ) { | ||
return OP.hasOwnProperty.call( Object( item ), String( property ) ); | ||
} | ||
@@ -221,2 +224,31 @@ function id( item, prefix ) { return item ? got( item, 'id' ) && !empty( item.id ) ? item.id : ( item.id = id_create( prefix ) ) : id_create( prefix ); } | ||
function property_exists( test, item, property ) { | ||
var key; property = String( property ); | ||
if ( arguments.length > 3 ) { | ||
property = slice.call( arguments, 2 ); | ||
while ( key = property.shift() ) | ||
if ( property_exists( test, item, key ) ) | ||
return true; | ||
return false; | ||
} | ||
if ( !!~property.indexOf( '.' ) ) { | ||
property = property.split( '.' ); | ||
while ( key = property.shift() ) { | ||
if ( !property_exists( test, item, key ) ) | ||
return false; | ||
item = item[key]; | ||
} | ||
return true; | ||
} | ||
return test( item, property ); | ||
} | ||
function range( i, j ) { | ||
@@ -291,3 +323,3 @@ var a = [i]; | ||
/*~ m8/src/lib.x.js ~*/ | ||
/*~ src/lib.x.js ~*/ | ||
// Commonjs Modules 1.1.1: http://wiki.commonjs.org/wiki/Modules/1.1.1 | ||
@@ -319,3 +351,3 @@ // notes section: http://wiki.commonjs.org/wiki/Modules/ProposalForNativeExtension | ||
/*~ m8/src/nativex.js ~*/ | ||
/*~ src/nativex.js ~*/ | ||
x.cache( 'Array', function( Type ) { | ||
@@ -434,3 +466,3 @@ def( Type, 'coerce', function( a, i, j ) { | ||
/*~ m8/src/expose.js ~*/ | ||
/*~ src/expose.js ~*/ | ||
iter( PACKAGE ) || ( PACKAGE = ENV == 'commonjs' ? module : root ); | ||
@@ -440,10 +472,10 @@ | ||
// properties | ||
ENV : ENV, global : { value : root }, modes : { value : modes }, | ||
ENV : ENV, global : { value : root }, modes : { value : modes }, | ||
// methods | ||
bless : bless, coerce : coerce, copy : copy, def : def, defs : defs, | ||
describe : describe, empty : empty, exists : exists, expose : expose, got : got, | ||
guid : guid, has : has, id : id, iter : iter, len : len, | ||
merge : merge, nativeType : nativeType, noop : noop, obj : obj, range : range, | ||
remove : remove, tostr : tostr, type : type, update : update, valof : valof, | ||
x : x | ||
bless : bless, coerce : coerce, copy : copy, def : def, defs : defs, | ||
describe : describe, empty : empty, exists : exists, expose : expose, | ||
got : property_exists.bind( null, got ), guid : guid, has : property_exists.bind( null, has ), | ||
id : id, iter : iter, len : len, merge : merge, nativeType : nativeType, | ||
noop : noop, obj : obj, range : range, remove : remove, tostr : tostr, | ||
type : type, update : update, valof : valof, x : x | ||
}, 'w' ); | ||
@@ -450,0 +482,0 @@ |
@@ -1,1 +0,1 @@ | ||
!function(e,t,n){"use strict";function N(e){return e}function C(e,t){switch(st(e)){case"array":break;case"string":e=e.split(".");break;default:return k(t)}y.test(e[0])&&(t=N,e.shift());if(!e.length)return k(t);e[0].indexOf("^")||(t||e[0]=="^"?e.shift():e[0]=e[0].substring(1)),t=k(t);var n;while(n=e.shift())t=t[n]||(t[n]=G());return t}function k(t){return s=="commonjs"?t?W(t)?t.exports:t:module.exports:t||e}function L(e){var t=Number(e),n;return isNaN(t)?(n=String(e))in f?f[n]:e:t}function A(e,t,n){n=n===!0,t||(t=e,e=G());for(var r in t)!q(t,r)||n&&q(e,r)||(e[r]=t[r]);return e}function O(e,n,r){var i=E.call(arguments,3),s=j(e,n),o,u,a,f;switch(st(i[0])){case"string":u=d[i.shift()];break;case"object":u=i.shift();break;default:a=st(r),u=a!="object"&&s?Object.getOwnPropertyDescriptor(e,n):null,!u||(u=a=="function"?d.cw:d.cew)}return f=i.shift()===!0,o=i.shift()===!0,s&&!f?o&&new Error(t+".def cannot overwrite existing property: "+n+", in item type: "+ot(e)+"."):(a!="object"&&u&&(r=_(r,u)),(r.get||r.set)&&delete r.writable,Object.defineProperty(e,n,r)),N}function M(e,t,n,r,i){n||(n="cw");for(var s in t)!q(t,s)||O(e,s,t[s],n,r,i);return N}function _(e,t){return A(st(e)=="object"?e:{value:e},st(t)=="object"?t:d[String(t).toLowerCase()]||d.cew,!0)}function D(e){return!P(e)||!V(e)&&X(e)||!1}function P(e){return!(e===null||e===u||typeof e=="number"&&isNaN(e))}function H(t,n,i){typeof n!="string"&&t[r]&&(i=n,n=t[r]);if(s=="commonjs"&&W(i))i.exports=t;else{i||(i=e);var o=i[n],u=_({value:t},"ew");o&&X(o)?O(t=o,"__",u):O(i,n,u)}return i=G(),i[r]=n,i[__type__]="library",M(t,i,"w",!0),t}function B(e){return e.name||e.displayName||(String(e).match(b)||["",""])[1].trim()}function j(e,t){return arguments.length>2?R(j,e,Array.coerce(arguments,1)):t in Object(e)}function F(){return S.replace(g,I)}function I(e){var t=v()*16|0;return(e=="x"?t:t&3|8).toString(16)}function q(e,t){return arguments.length>2?R(q,e,Array.coerce(arguments,1)):o.hasOwnProperty.call(e,t)}function R(e,t,n){return n.some(function(n){return e(t,n)})}function U(e,t){return e?j(e,"id")&&!D(e.id)?e.id:e.id=z(t):z(t)}function z(e){return(e||p)+"-"+ ++h}function W(e){if(a===null)return!1;try{return e instanceof a}catch(t){return!1}}function X(e){return j(e,"length")||st(e)=="object"}function V(e){return("length"in(e=Object(e))?e:Object.keys(e)).length}function $(e,t){var n;if(!t)switch(n=st(e)){case"array":case"object":t=e,e=new(t.constructor||Object);break;default:return e}else n=st(t);switch(n){case"object":return Object.keys(t).reduce(K,{source:t,target:e}).target;case"array":return e.length=t.length,t.reduce(J,e);default:return t}}function J(e,t,n){return e[n]=st(e[n])===st(t)?$(e[n],t):$(t),e}function K(e,t){return e.target[t]=st(e.target[t])===st(e.source[t])?$(e.target[t],e.source[t]):$(e.source[t]),e}function Q(){}function G(e){var t=Object.create(null);return typeof e=="object"?A(t,e):t}function Y(e,t){var n=[e];while(++e<=t)n.push(e);return n}function Z(e,t){t=Array.isArray(t)?t:E.call(arguments,1);var n=Array.isArray(e)?et:tt;return t.forEach(n,e),e}function et(e){var t=this.indexOf(e);t=~t?t:!isNaN(e)&&e in this?e:t,t<0||this.splice(t,1)}function tt(e){delete this[e]}function nt(e){return o.toString.call(e)}function rt(e){return o.valueOf.call(e)}function it(e){return e==c?c:e==l||e=="nodelist"?l:!e.indexOf("htm")&&e.lastIndexOf("element")+7===e.length?"htmlelement":!1}function st(e){var t=nt(e);return t in x?x[t]:x[t]=t.split(" ")[1].split("]")[0].replace(w,"$1").toLowerCase()}function ot(e){return e===null||e===u?!1:j(e,__type__)?e[__type__]:Object.getPrototypeOf(e)===null?"nullobject":u}function ut(e,t){if(!t)return $(e);switch(st(t)){case"object":return Object.keys(t).reduce(ft,{source:t,target:e}).target;case"array":return t.reduce(at,e);default:return e}}function at(e,t,n){return e[n]=j(e,n)?st(e[n])==st(t)?ut(e[n],t):e[n]:$(t),e}function ft(e,t){return e.target[t]=j(e.target,t)?st(e.target[t])==st(e.source[t])?ut(e.target[t],e.source[t]):e.target[t]:$(e.source[t]),e}function lt(){return E.call(arguments).forEach(ht),N}function ct(e){e(this,N)}function ht(e){j(e,i)||O(e,i,0,"w");var t=T[e[r]||B(e)];if(!t)return;t.slice(e[i]).forEach(ct,e),e[i]=t.length}typeof global=="undefined"?e:e=global;var r="__name__",__type__="__type__",i="__xid__",s=typeof module!="undefined"&&"exports"in module&&typeof require=="function"?"commonjs":typeof navigator!="undefined"?"browser":"other",o=Object.prototype,u,a=s!="commonjs"?null:require("module"),f=[!1,NaN,null,!0,u].reduce(function(e,t){return e[String(t)]=t,e},G()),l="htmlcollection",c="htmldocument",h=999,p="anon",d=function(){var e={ce:"ec",cw:"wc",ew:"we",cew:"cwe ecw ewc wce wec".split(" ")},t="configurable enumerable writable".split(" "),n={c:[!0,!1,!1],ce:[!0,!0,!1],cew:[!0,!0,!0],cw:[!0,!1,!0],e:[!1,!0,!1],ew:[!1,!0,!0],r:[!1,!1,!1],w:[!1,!1,!0]},r=Object.keys(n).reduce(function(r,i){function s(e){r[e]=r[i]}var o=e[i];return r[i]=t.reduce(function(e,t,r){return e[t]=n[i][r],e},G()),!o||(Array.isArray(o)?o.forEach(s):s(o)),r},G());return delete r[u],r}(),v=Math.random,m=/global|window/i,g=/[xy]/g,y=new RegExp("^\\u005E?"+t),b=/[\s\(]*function([^\(]+).*/,w=/^[Ww]ebkit|[Mm]oz|O|[Mm]s|[Kk]html(.*)$/,E=Array.prototype.slice,S="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx",x={"[object Object]":"object"},T={Array:[],Boolean:[],Date:[],Function:[],Number:[],Object:[],RegExp:[],String:[]};O(lt,"cache",function(e,t){return typeof e=="string"||(e=e[r]||B(e)),T[e]||(T[e]=[]),T[e].push(t),N},"w"),lt.cache("Array",function(e){O(e,"coerce",function(e,t,n){return j(e,"length")?(t=ot(t)=="number"?t>0?t:0:0,n=ot(n)=="number"?n>t?n:n<=0?e.length+n:t+n:e.length,E.call(e,t,n)):[e]},"w"),O(e.prototype,"find",function(e,t){var n=-1,r=this.length>>>0;t||(t=this);while(++n<r)if(!!e.call(t,this[n],n,this))return this[n];return null},"w")}),lt.cache("Boolean",function(e){O(e,"coerce",function(e){switch(ot(e)){case"boolean":return e;case"nan":case!1:return!1;case"number":case"string":return e in f?!!f[e]:Number(e)!==0}return!0},"w")}),lt.cache("Function",function(e){function t(e){return!e||e in o}function n(){return this.toString()}function i(){return this}var s="__xname__",o={Anonymous:!0,anonymous:!0},u={mimic:function(e,t){var r=e.valueOf();return M(this,{displayName:t||B(r),toString:n.bind(r),valueOf:i.bind(r)},"c",!0),this}};u[r]={get:function(){if(!this[s]){var e=this.valueOf(),n=e!==this?t(e[r])?null:e[r]:null,i=n||B(this);!t(i)||t(this.displayName)||(i=this.displayName),O(this,s,i||"anonymous","w")}return this[s]}},M(e.prototype,u,"w"),O(e,"anon_list",{value:o},"w")}),lt.cache("Object",function(e){O(e.prototype,__type__,A({get:function(){var e,t=this,n=t.constructor,i=st(t),s=it(i)||(m.test(i)?"global":!1);return s?s:i=="number"?isNaN(t)?"nan":"number":i=="object"&&typeof n=="function"&&n[__type__]!="function"?(e=String(n[r]).toLowerCase(),!e||e=="anonymous"?n[__type__]||i:e):i}},d.r)),M(e,{key:function(t,n){return e.keys(e(t)).find(function(e){return t[e]===n})},reduce:function(t,n,r){return e.keys(e(t)).reduce(function(e,r,i){return e=n.call(t,e,t[r],r,t,i),e},r)},value:function(t,n){if(isNaN(n)){if(j(t,n))return t[n];if(!!~n.indexOf(".")){var r;n=n.split(".");while(r=n.shift())if((t=e.value(t,r))===u)break;return t}}return D(t)?u:P(t[n])?t[n]:typeof t.get=="function"?t.get(n):typeof t.getAttribute=="function"?t.getAttribute(n):u},values:function(t){return e.keys(Object(t)).map(function(e){return t[e]})}},"w")}),X(n)||(n=s=="commonjs"?module:e),M(N=H(N,t,n),{ENV:s,global:{value:e},modes:{value:d},bless:C,coerce:L,copy:A,def:O,defs:M,describe:_,empty:D,exists:P,expose:H,got:j,guid:F,has:q,id:U,iter:X,len:V,merge:$,nativeType:st,noop:Q,obj:G,range:Y,remove:Z,tostr:nt,type:ot,update:ut,valof:rt,x:lt},"w"),lt(Object,Array,Boolean,Function)}(this,"m8") | ||
!function(e,t,n){"use strict";function N(e){return e}function C(e,t){switch(st(e)){case"array":break;case"string":e=e.split(".");break;default:return k(t)}y.test(e[0])&&(t=N,e.shift());if(!e.length)return k(t);e[0].indexOf("^")||(t||e[0]=="^"?e.shift():e[0]=e[0].substring(1)),t=k(t);var n;while(n=e.shift())t=t[n]||(t[n]=Q());return t}function k(t){return s=="commonjs"?t?z(t)?t.exports:t:module.exports:t||e}function L(e){var t=Number(e),n;return isNaN(t)?(n=String(e))in f?f[n]:e:t}function A(e,t,n){n=n===!0,t||(t=e,e=Q());for(var r in t)!q(t,r)||n&&q(e,r)||(e[r]=t[r]);return e}function O(e,n,r){var i=E.call(arguments,3),s=j(e,n),o,u,a,f;switch(st(i[0])){case"string":u=d[i.shift()];break;case"object":u=i.shift();break;default:a=st(r),u=a!="object"&&s?Object.getOwnPropertyDescriptor(e,n):null,!u||(u=a=="function"?d.cw:d.cew)}return f=i.shift()===!0,o=i.shift()===!0,s&&!f?o&&new Error(t+".def cannot overwrite existing property: "+n+", in item type: "+ot(e)+"."):(a!="object"&&u&&(r=_(r,u)),(r.get||r.set)&&delete r.writable,Object.defineProperty(e,n,r)),N}function M(e,t,n,r,i){n||(n="cw");for(var s in t)!q(t,s)||O(e,s,t[s],n,r,i);return N}function _(e,t){return A(st(e)=="object"?e:{value:e},st(t)=="object"?t:d[String(t).toLowerCase()]||d.cew,!0)}function D(e){return!P(e)||!X(e)&&W(e)||!1}function P(e){return!(e===null||e===u||typeof e=="number"&&isNaN(e))}function H(t,n,i){typeof n!="string"&&t[r]&&(i=n,n=t[r]);if(s=="commonjs"&&z(i))i.exports=t;else{i||(i=e);var o=i[n],u=_({value:t},"ew");o&&W(o)?O(t=o,"__",u):O(i,n,u)}return i=Q(),i[r]=n,i[__type__]="library",M(t,i,"w",!0),t}function B(e){return e.name||e.displayName||(String(e).match(b)||["",""])[1].trim()}function j(e,t){return String(t)in Object(e)}function F(){return S.replace(g,I)}function I(e){var t=v()*16|0;return(e=="x"?t:t&3|8).toString(16)}function q(e,t){return o.hasOwnProperty.call(Object(e),String(t))}function R(e,t){return e?j(e,"id")&&!D(e.id)?e.id:e.id=U(t):U(t)}function U(e){return(e||p)+"-"+ ++h}function z(e){if(a===null)return!1;try{return e instanceof a}catch(t){return!1}}function W(e){return j(e,"length")||st(e)=="object"}function X(e){return("length"in(e=Object(e))?e:Object.keys(e)).length}function V(e,t){var n;if(!t)switch(n=st(e)){case"array":case"object":t=e,e=new(t.constructor||Object);break;default:return e}else n=st(t);switch(n){case"object":return Object.keys(t).reduce(J,{source:t,target:e}).target;case"array":return e.length=t.length,t.reduce($,e);default:return t}}function $(e,t,n){return e[n]=st(e[n])===st(t)?V(e[n],t):V(t),e}function J(e,t){return e.target[t]=st(e.target[t])===st(e.source[t])?V(e.target[t],e.source[t]):V(e.source[t]),e}function K(){}function Q(e){var t=Object.create(null);return typeof e=="object"?A(t,e):t}function G(e,t,n){var r;n=String(n);if(arguments.length>3){n=E.call(arguments,2);while(r=n.shift())if(G(e,t,r))return!0;return!1}if(!~n.indexOf("."))return e(t,n);n=n.split(".");while(r=n.shift()){if(!G(e,t,r))return!1;t=t[r]}return!0}function Y(e,t){var n=[e];while(++e<=t)n.push(e);return n}function Z(e,t){t=Array.isArray(t)?t:E.call(arguments,1);var n=Array.isArray(e)?et:tt;return t.forEach(n,e),e}function et(e){var t=this.indexOf(e);t=~t?t:!isNaN(e)&&e in this?e:t,t<0||this.splice(t,1)}function tt(e){delete this[e]}function nt(e){return o.toString.call(e)}function rt(e){return o.valueOf.call(e)}function it(e){return e==c?c:e==l||e=="nodelist"?l:!e.indexOf("htm")&&e.lastIndexOf("element")+7===e.length?"htmlelement":!1}function st(e){var t=nt(e);return t in x?x[t]:x[t]=t.split(" ")[1].split("]")[0].replace(w,"$1").toLowerCase()}function ot(e){return e===null||e===u?!1:j(e,__type__)?e[__type__]:Object.getPrototypeOf(e)===null?"nullobject":u}function ut(e,t){if(!t)return V(e);switch(st(t)){case"object":return Object.keys(t).reduce(ft,{source:t,target:e}).target;case"array":return t.reduce(at,e);default:return e}}function at(e,t,n){return e[n]=j(e,n)?st(e[n])==st(t)?ut(e[n],t):e[n]:V(t),e}function ft(e,t){return e.target[t]=j(e.target,t)?st(e.target[t])==st(e.source[t])?ut(e.target[t],e.source[t]):e.target[t]:V(e.source[t]),e}function lt(){return E.call(arguments).forEach(ht),N}function ct(e){e(this,N)}function ht(e){j(e,i)||O(e,i,0,"w");var t=T[e[r]||B(e)];if(!t)return;t.slice(e[i]).forEach(ct,e),e[i]=t.length}typeof global=="undefined"?e:e=global;var r="__name__",__type__="__type__",i="__xid__",s=typeof module!="undefined"&&"exports"in module&&typeof require=="function"?"commonjs":typeof navigator!="undefined"?"browser":"other",o=Object.prototype,u,a=s!="commonjs"?null:require("module"),f=[!1,NaN,null,!0,u].reduce(function(e,t){return e[String(t)]=t,e},Q()),l="htmlcollection",c="htmldocument",h=999,p="anon",d=function(){var e={ce:"ec",cw:"wc",ew:"we",cew:"cwe ecw ewc wce wec".split(" ")},t="configurable enumerable writable".split(" "),n={c:[!0,!1,!1],ce:[!0,!0,!1],cew:[!0,!0,!0],cw:[!0,!1,!0],e:[!1,!0,!1],ew:[!1,!0,!0],r:[!1,!1,!1],w:[!1,!1,!0]},r=Object.keys(n).reduce(function(r,i){function s(e){r[e]=r[i]}var o=e[i];return r[i]=t.reduce(function(e,t,r){return e[t]=n[i][r],e},Q()),!o||(Array.isArray(o)?o.forEach(s):s(o)),r},Q());return delete r[u],r}(),v=Math.random,m=/global|window/i,g=/[xy]/g,y=new RegExp("^\\u005E?"+t),b=/[\s\(]*function([^\(]+).*/,w=/^[Ww]ebkit|[Mm]oz|O|[Mm]s|[Kk]html(.*)$/,E=Array.prototype.slice,S="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx",x={"[object Object]":"object"},T={Array:[],Boolean:[],Date:[],Function:[],Number:[],Object:[],RegExp:[],String:[]};O(lt,"cache",function(e,t){return typeof e=="string"||(e=e[r]||B(e)),T[e]||(T[e]=[]),T[e].push(t),N},"w"),lt.cache("Array",function(e){O(e,"coerce",function(e,t,n){return j(e,"length")?(t=ot(t)=="number"?t>0?t:0:0,n=ot(n)=="number"?n>t?n:n<=0?e.length+n:t+n:e.length,E.call(e,t,n)):[e]},"w"),O(e.prototype,"find",function(e,t){var n=-1,r=this.length>>>0;t||(t=this);while(++n<r)if(!!e.call(t,this[n],n,this))return this[n];return null},"w")}),lt.cache("Boolean",function(e){O(e,"coerce",function(e){switch(ot(e)){case"boolean":return e;case"nan":case!1:return!1;case"number":case"string":return e in f?!!f[e]:Number(e)!==0}return!0},"w")}),lt.cache("Function",function(e){function t(e){return!e||e in o}function n(){return this.toString()}function i(){return this}var s="__xname__",o={Anonymous:!0,anonymous:!0},u={mimic:function(e,t){var r=e.valueOf();return M(this,{displayName:t||B(r),toString:n.bind(r),valueOf:i.bind(r)},"c",!0),this}};u[r]={get:function(){if(!this[s]){var e=this.valueOf(),n=e!==this?t(e[r])?null:e[r]:null,i=n||B(this);!t(i)||t(this.displayName)||(i=this.displayName),O(this,s,i||"anonymous","w")}return this[s]}},M(e.prototype,u,"w"),O(e,"anon_list",{value:o},"w")}),lt.cache("Object",function(e){O(e.prototype,__type__,A({get:function(){var e,t=this,n=t.constructor,i=st(t),s=it(i)||(m.test(i)?"global":!1);return s?s:i=="number"?isNaN(t)?"nan":"number":i=="object"&&typeof n=="function"&&n[__type__]!="function"?(e=String(n[r]).toLowerCase(),!e||e=="anonymous"?n[__type__]||i:e):i}},d.r)),M(e,{key:function(t,n){return e.keys(e(t)).find(function(e){return t[e]===n})},reduce:function(t,n,r){return e.keys(e(t)).reduce(function(e,r,i){return e=n.call(t,e,t[r],r,t,i),e},r)},value:function(t,n){if(isNaN(n)){if(j(t,n))return t[n];if(!!~n.indexOf(".")){var r;n=n.split(".");while(r=n.shift())if((t=e.value(t,r))===u)break;return t}}return D(t)?u:P(t[n])?t[n]:typeof t.get=="function"?t.get(n):typeof t.getAttribute=="function"?t.getAttribute(n):u},values:function(t){return e.keys(Object(t)).map(function(e){return t[e]})}},"w")}),W(n)||(n=s=="commonjs"?module:e),M(N=H(N,t,n),{ENV:s,global:{value:e},modes:{value:d},bless:C,coerce:L,copy:A,def:O,defs:M,describe:_,empty:D,exists:P,expose:H,got:G.bind(null,j),guid:F,has:G.bind(null,q),id:R,iter:W,len:X,merge:V,nativeType:st,noop:K,obj:Q,range:Y,remove:Z,tostr:nt,type:ot,update:ut,valof:rt,x:lt},"w"),lt(Object,Array,Boolean,Function)}(this,"m8") |
@@ -30,3 +30,3 @@ { | ||
}, | ||
"version" : "0.2.9" | ||
"version" : "0.3.0" | ||
} |
@@ -5,12 +5,12 @@ iter( PACKAGE ) || ( PACKAGE = ENV == 'commonjs' ? module : root ); | ||
// properties | ||
ENV : ENV, global : { value : root }, modes : { value : modes }, | ||
ENV : ENV, global : { value : root }, modes : { value : modes }, | ||
// methods | ||
bless : bless, coerce : coerce, copy : copy, def : def, defs : defs, | ||
describe : describe, empty : empty, exists : exists, expose : expose, got : got, | ||
guid : guid, has : has, id : id, iter : iter, len : len, | ||
merge : merge, nativeType : nativeType, noop : noop, obj : obj, range : range, | ||
remove : remove, tostr : tostr, type : type, update : update, valof : valof, | ||
x : x | ||
bless : bless, coerce : coerce, copy : copy, def : def, defs : defs, | ||
describe : describe, empty : empty, exists : exists, expose : expose, | ||
got : property_exists.bind( null, got ), guid : guid, has : property_exists.bind( null, has ), | ||
id : id, iter : iter, len : len, merge : merge, nativeType : nativeType, | ||
noop : noop, obj : obj, range : range, remove : remove, tostr : tostr, | ||
type : type, update : update, valof : valof, x : x | ||
}, 'w' ); | ||
x( Object, Array, Boolean, Function ); |
@@ -101,3 +101,5 @@ function __lib__( val ) { return val; } | ||
function got( obj, key ) { return arguments.length > 2 ? hasSome( got, obj, Array.coerce( arguments, 1 ) ) : key in Object( obj ); } | ||
function got( item, property ) { | ||
return String( property ) in Object( item ); | ||
} | ||
@@ -111,4 +113,5 @@ // credit for guid goes here: gist.github.com/2295777 | ||
function has( obj, key ) { return arguments.length > 2 ? hasSome( has, obj, Array.coerce( arguments, 1 ) ) : OP.hasOwnProperty.call( obj, key ); } | ||
function hasSome( test, obj, keys ) { return keys.some( function( key ) { return test( obj, key ); } ); } | ||
function has( item, property ) { | ||
return OP.hasOwnProperty.call( Object( item ), String( property ) ); | ||
} | ||
@@ -166,2 +169,31 @@ function id( item, prefix ) { return item ? got( item, 'id' ) && !empty( item.id ) ? item.id : ( item.id = id_create( prefix ) ) : id_create( prefix ); } | ||
function property_exists( test, item, property ) { | ||
var key; property = String( property ); | ||
if ( arguments.length > 3 ) { | ||
property = slice.call( arguments, 2 ); | ||
while ( key = property.shift() ) | ||
if ( property_exists( test, item, key ) ) | ||
return true; | ||
return false; | ||
} | ||
if ( !!~property.indexOf( '.' ) ) { | ||
property = property.split( '.' ); | ||
while ( key = property.shift() ) { | ||
if ( !property_exists( test, item, key ) ) | ||
return false; | ||
item = item[key]; | ||
} | ||
return true; | ||
} | ||
return test( item, property ); | ||
} | ||
function range( i, j ) { | ||
@@ -168,0 +200,0 @@ var a = [i]; |
@@ -144,2 +144,8 @@ typeof m8 !== 'undefined' || ( m8 = require( '../m8' ) ); | ||
expect( m8.got( new Test( 'val' ), 'foo', 'bam', 'val' ) ).to.equal( true ); | ||
expect( m8.got( { foo : { bar : 'baz' } }, 'foo.bar' ) ).to.equal( true ); | ||
expect( m8.got( { foo : { bar : 'baz' } }, 'foo.baz' ) ).to.equal( false ); | ||
expect( m8.got( { foo : { bar : 'baz' }, items : [{ foo : { bar : 'baz' } }] }, 'items.0.foo.bar' ) ).to.equal( true ); | ||
expect( m8.got( { foo : { bar : 'baz' }, items : [{ foo : { bar : 'baz' } }] }, 'zoo', 'goo.bar', 'items.0.foo.bar' ) ).to.equal( true ); | ||
expect( m8.got( { foo : { bar : 'baz' }, items : [{ foo : { bar : 'baz' } }] }, 'items.1.foo.bar' ) ).to.equal( false ); | ||
expect( m8.got( { foo : { bar : 'baz' }, items : [{ foo : { bar : 'baz' } }] }, 'zoo', 'goo.bar', 'items.1.foo.bar' ) ).to.equal( false ); | ||
@@ -159,2 +165,8 @@ done(); | ||
expect( m8.has( new Test( 'value' ), 'foo', 'bam', 'value' ) ).to.equal( true ); | ||
expect( m8.has( { foo : { bar : 'baz' } }, 'foo.bar' ) ).to.equal( true ); | ||
expect( m8.has( { foo : { bar : 'baz' } }, 'foo.baz' ) ).to.equal( false ); | ||
expect( m8.has( { foo : { bar : 'baz' }, items : [{ foo : { bar : 'baz' } }] }, 'items.0.foo.bar' ) ).to.equal( true ); | ||
expect( m8.has( { foo : { bar : 'baz' }, items : [{ foo : { bar : 'baz' } }] }, 'zoo', 'goo.bar', 'items.0.foo.bar' ) ).to.equal( true ); | ||
expect( m8.has( { foo : { bar : 'baz' }, items : [{ foo : { bar : 'baz' } }] }, 'items.1.foo.bar' ) ).to.equal( false ); | ||
expect( m8.has( { foo : { bar : 'baz' }, items : [{ foo : { bar : 'baz' } }] }, 'zoo', 'goo.bar', 'items.1.foo.bar' ) ).to.equal( false ); | ||
@@ -161,0 +173,0 @@ done(); |
96805
1135