Socket
Socket
Sign inDemoInstall

mockjs

Package Overview
Dependencies
Maintainers
1
Versions
10
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

mockjs - npm Package Compare versions

Comparing version 0.1.2 to 0.1.4

.spmignore

10

bower.json

@@ -17,6 +17,10 @@ {

"devDependencies": {
"jquery": "~2.0.3",
"bootstrap": "~3.0.3",
"codemirror": "~3.20.0"
"jquery": "~2.1.1",
"bootstrap": "",
"codemirror": "~3.20.0",
"highlightjs": "~8.0.0",
"kissy": "~1.4.3",
"seajs": "*",
"js-beautify": "~1.5.1"
}
}
# Changelog
### 2014.6.18 V0.1.4
1. [!] 修复 #14 0.1.1版本试了好像jq1.10可以,1.11下$.ajax拦截没反应
2. [!] 修复 #22 异步加载js文件的时候发现问题
3. [!] 修复 #23 Mock.mockjax 导致 $.getScript 不执行回调
4. [!] 修复 #24 Window Firefox 30.0 引用 占位符 抛错
5. [!] 修复 #25 改变了非函数属性的顺序,查找起来不方便
6. [!] 修复 #26 生成规则 支持 负数 number|-100-+100
7. [!] 修复 #27 数据模板编辑器 格式化(Tidy) 时会丢掉 函数属性
8. [+] 数据模板编辑器 增加了 编辑区 和 生成结果区 的同步滚动
9. [!] test/nodeuinit > test/nodeunit
### 2014.5.26 V0.1.3
1. [!] 修复 #21
### 2014.5.26 V0.1.2
1. [!] 重构 Mock.mockjax()
2. [!] 更新 package.json/devDependencies
3. [+] 增加 懒懒交流会 PPT
### 2014.5.9 V0.1.2

@@ -4,0 +26,0 @@ 1. [+] 支持 [`Mock.mock(rurl, rtype, template)`](http://mockjs.com/#mock)

@@ -1,3 +0,3 @@

/*! mockjs 13-05-2014 19:33:58 */
(function(undefined){var Mock={version:"0.1.2",_mocked:{}},Util=function(){var a={};return a.extend=function(){var b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length;for(1===i&&(g=this,h=0);i>h;h++)if(b=arguments[h])for(c in b)d=g[c],e=b[c],g!==e&&e!==undefined&&(a.isArray(e)||a.isObject(e)?(a.isArray(e)&&(f=d&&a.isArray(d)?d:[]),a.isObject(e)&&(f=d&&a.isObject(d)?d:{}),g[c]=a.extend(f,e)):g[c]=e);return g},a.each=function(a,b,c){var d,e;if("number"===this.type(a))for(d=0;a>d;d++)b(d,d);else if(a.length===+a.length)for(d=0;d<a.length&&b.call(c,a[d],d,a)!==!1;d++);else for(e in a)if(b.call(c,a[e],e,a)===!1)break},a.type=function(a){return null===a||a===undefined?String(a):Object.prototype.toString.call(a).match(/\[object (\w+)\]/)[1].toLowerCase()},a.each("String Object Array RegExp Function".split(" "),function(b){a["is"+b]=function(c){return a.type(c)===b.toLowerCase()}}),a.isObjectOrArray=function(b){return a.isObject(b)||a.isArray(b)},a.isNumeric=function(a){return!isNaN(parseFloat(a))&&isFinite(a)},a.keys=function(a){var b=[];for(var c in a)a.hasOwnProperty(c)&&b.push(c);return b},a.values=function(a){var b=[];for(var c in a)a.hasOwnProperty(c)&&b.push(a[c]);return b},a.heredoc=function(a){return a.toString().replace(/^[^\/]+\/\*!?/,"").replace(/\*\/[^\/]+$/,"").replace(/^[\s\xA0]+/,"").replace(/[\s\xA0]+$/,"")},a.noop=function(){},a}(),Random=function(){var a={extend:Util.extend};return a.extend({"boolean":function(a,b,c){return c!==undefined?(a="undefined"==typeof a||isNaN(a)?1:parseInt(a,10),b="undefined"==typeof b||isNaN(b)?1:parseInt(b,10),Math.random()>1/(a+b)*a?!c:c):Math.random()>=.5},bool:function(a,b,c){return this.boolean(a,b,c)},natural:function(a,b){return a="undefined"!=typeof a?parseInt(a,10):0,b="undefined"!=typeof b?parseInt(b,10):9007199254740992,Math.round(Math.random()*(b-a))+a},integer:function(a,b){return a="undefined"!=typeof a?parseInt(a,10):-9007199254740992,b="undefined"!=typeof b?parseInt(b,10):9007199254740992,Math.round(Math.random()*(b-a))+a},"int":function(a,b){return this.integer(a,b)},"float":function(a,b,c,d){c=c===undefined?0:c,c=Math.max(Math.min(c,17),0),d=d===undefined?17:d,d=Math.max(Math.min(d,17),0);for(var e=this.integer(a,b)+".",f=0,g=this.natural(c,d);g>f;f++)e+=this.character("number");return parseFloat(e,10)},character:function(b){var c={lower:"abcdefghijklmnopqrstuvwxyz",upper:"ABCDEFGHIJKLMNOPQRSTUVWXYZ",number:"0123456789",symbol:"!@#$%^&*()[]"};return c.alpha=c.lower+c.upper,c.undefined=c.lower+c.upper+c.number+c.symbol,b=c[(""+b).toLowerCase()]||b,b.charAt(a.natural(0,b.length-1))},"char":function(a){return this.character(a)},string:function(b,c,d){var e;3===arguments.length&&(e=a.natural(c,d)),2===arguments.length&&("string"==typeof arguments[0]?e=c:(e=a.natural(b,c),b=undefined)),1===arguments.length&&(e=b,b=undefined),0===arguments.length&&(e=a.natural(3,7));for(var f="",g=0;e>g;g++)f+=a.character(b);return f},str:function(a,b,c){return this.string(a,b,c)},range:function(a,b,c){arguments.length<=1&&(b=a||0,a=0),c=arguments[2]||1,a=+a,b=+b,c=+c;for(var d=Math.max(Math.ceil((b-a)/c),0),e=0,f=new Array(d);d>e;)f[e++]=a,a+=c;return f}}),a.extend({patternLetters:{yyyy:"getFullYear",yy:function(a){return(""+a.getFullYear()).slice(2)},y:"yy",MM:function(a){var b=a.getMonth()+1;return 10>b?"0"+b:b},M:function(a){return a.getMonth()+1},dd:function(a){var b=a.getDate();return 10>b?"0"+b:b},d:"getDate",HH:function(a){var b=a.getHours();return 10>b?"0"+b:b},H:"getHours",hh:function(a){var b=a.getHours()%12;return 10>b?"0"+b:b},h:function(a){return a.getHours()%12},mm:function(a){var b=a.getMinutes();return 10>b?"0"+b:b},m:"getMinutes",ss:function(a){var b=a.getSeconds();return 10>b?"0"+b:b},s:"getSeconds",SS:function(a){var b=a.getMilliseconds();return 10>b&&"00"+b||100>b&&"0"+b||b},S:"getMilliseconds",A:function(a){return a.getHours()<12?"AM":"PM"},a:function(a){return a.getHours()<12?"am":"pm"},T:"getTime"}}),a.extend({rformat:new RegExp(function(){var b=[];for(var c in a.patternLetters)b.push(c);return"("+b.join("|")+")"}(),"g"),format:function(b,c){var d=a.patternLetters,e=a.rformat;return c.replace(e,function(a,c){return"function"==typeof d[c]?d[c](b):d[c]in d?arguments.callee(a,d[c]):b[d[c]]()})},randomDate:function(a,b){return a=a===undefined?new Date(0):a,b=b===undefined?new Date:b,new Date(Math.random()*(b.getTime()-a.getTime()))},date:function(a){return a=a||"yyyy-MM-dd",this.format(this.randomDate(),a)},time:function(a){return a=a||"HH:mm:ss",this.format(this.randomDate(),a)},datetime:function(a){return a=a||"yyyy-MM-dd HH:mm:ss",this.format(this.randomDate(),a)},now:function(a,b){1===arguments.length&&(/year|month|week|day|hour|minute|second|week/.test(a)||(b=a,a="")),a=(a||"").toLowerCase(),b=b||"yyyy-MM-dd HH:mm:ss";var c=new Date;switch(a){case"year":c.setMonth(0);case"month":c.setDate(1);case"week":case"day":c.setHours(0);case"hour":c.setMinutes(0);case"minute":c.setSeconds(0);case"second":c.setMilliseconds(0)}switch(a){case"week":c.setDate(c.getDate()-c.getDay())}return this.format(c,b)}}),a.extend({ad_size:["300x250","250x250","240x400","336x280","180x150","720x300","468x60","234x60","88x31","120x90","120x60","120x240","125x125","728x90","160x600","120x600","300x600"],screen_size:["320x200","320x240","640x480","800x480","800x480","1024x600","1024x768","1280x800","1440x900","1920x1200","2560x1600"],video_size:["720x480","768x576","1280x720","1920x1080"],image:function(a,b,c,d,e){return 4===arguments.length&&(e=d,d=undefined),3===arguments.length&&(e=c,c=undefined),a||(a=this.pick(this.ad_size)),b&&~b.indexOf("#")&&(b=b.slice(1)),c&&~c.indexOf("#")&&(c=c.slice(1)),"http://dummyimage.com/"+a+(b?"/"+b:"")+(c?"/"+c:"")+(d?"."+d:"")+(e?"&text="+e:"")},img:function(){return this.image.apply(this,arguments)}}),a.extend({brandColors:{"4ormat":"#fb0a2a","500px":"#02adea","About.me (blue)":"#00405d","About.me (yellow)":"#ffcc33",Addvocate:"#ff6138",Adobe:"#ff0000",Aim:"#fcd20b",Amazon:"#e47911",Android:"#a4c639","Angie's List":"#7fbb00",AOL:"#0060a3",Atlassian:"#003366",Behance:"#053eff","Big Cartel":"#97b538",bitly:"#ee6123",Blogger:"#fc4f08",Boeing:"#0039a6","Booking.com":"#003580",Carbonmade:"#613854",Cheddar:"#ff7243","Code School":"#3d4944",Delicious:"#205cc0",Dell:"#3287c1",Designmoo:"#e54a4f",Deviantart:"#4e6252","Designer News":"#2d72da",Devour:"#fd0001",DEWALT:"#febd17","Disqus (blue)":"#59a3fc","Disqus (orange)":"#db7132",Dribbble:"#ea4c89",Dropbox:"#3d9ae8",Drupal:"#0c76ab",Dunked:"#2a323a",eBay:"#89c507",Ember:"#f05e1b",Engadget:"#00bdf6",Envato:"#528036",Etsy:"#eb6d20",Evernote:"#5ba525","Fab.com":"#dd0017",Facebook:"#3b5998",Firefox:"#e66000","Flickr (blue)":"#0063dc","Flickr (pink)":"#ff0084",Forrst:"#5b9a68",Foursquare:"#25a0ca",Garmin:"#007cc3",GetGlue:"#2d75a2",Gimmebar:"#f70078",GitHub:"#171515","Google Blue":"#0140ca","Google Green":"#16a61e","Google Red":"#dd1812","Google Yellow":"#fcca03","Google+":"#dd4b39",Grooveshark:"#f77f00",Groupon:"#82b548","Hacker News":"#ff6600",HelloWallet:"#0085ca","Heroku (light)":"#c7c5e6","Heroku (dark)":"#6567a5",HootSuite:"#003366",Houzz:"#73ba37",HTML5:"#ec6231",IKEA:"#ffcc33",IMDb:"#f3ce13",Instagram:"#3f729b",Intel:"#0071c5",Intuit:"#365ebf",Kickstarter:"#76cc1e",kippt:"#e03500",Kodery:"#00af81",LastFM:"#c3000d",LinkedIn:"#0e76a8",Livestream:"#cf0005",Lumo:"#576396",Mixpanel:"#a086d3",Meetup:"#e51937",Nokia:"#183693",NVIDIA:"#76b900",Opera:"#cc0f16",Path:"#e41f11","PayPal (dark)":"#1e477a","PayPal (light)":"#3b7bbf",Pinboard:"#0000e6",Pinterest:"#c8232c",PlayStation:"#665cbe",Pocket:"#ee4056",Prezi:"#318bff",Pusha:"#0f71b4",Quora:"#a82400","QUOTE.fm":"#66ceff",Rdio:"#008fd5",Readability:"#9c0000","Red Hat":"#cc0000",Resource:"#7eb400",Rockpack:"#0ba6ab",Roon:"#62b0d9",RSS:"#ee802f",Salesforce:"#1798c1",Samsung:"#0c4da2",Shopify:"#96bf48",Skype:"#00aff0",Snagajob:"#f47a20",Softonic:"#008ace",SoundCloud:"#ff7700","Space Box":"#f86960",Spotify:"#81b71a",Sprint:"#fee100",Squarespace:"#121212",StackOverflow:"#ef8236",Staples:"#cc0000","Status Chart":"#d7584f",Stripe:"#008cdd",StudyBlue:"#00afe1",StumbleUpon:"#f74425","T-Mobile":"#ea0a8e",Technorati:"#40a800","The Next Web":"#ef4423",Treehouse:"#5cb868",Trulia:"#5eab1f",Tumblr:"#34526f","Twitch.tv":"#6441a5",Twitter:"#00acee",TYPO3:"#ff8700",Ubuntu:"#dd4814",Ustream:"#3388ff",Verizon:"#ef1d1d",Vimeo:"#86c9ef",Vine:"#00a478",Virb:"#06afd8","Virgin Media":"#cc0000",Wooga:"#5b009c","WordPress (blue)":"#21759b","WordPress (orange)":"#d54e21","WordPress (grey)":"#464646",Wunderlist:"#2b88d9",XBOX:"#9bc848",XING:"#126567","Yahoo!":"#720e9e",Yandex:"#ffcc00",Yelp:"#c41200",YouTube:"#c4302b",Zalongo:"#5498dc",Zendesk:"#78a300",Zerply:"#9dcc7a",Zootool:"#5e8b1d"},brands:function(){var a=[];for(var b in this.brandColors)a.push(b);return a},dataImage:function(a,b){var c="undefined"!=typeof document&&document.createElement("canvas"),d=c&&c.getContext&&c.getContext("2d");if(!c||!d)return"";a||(a=this.pick(this.ad_size)),b=b!==undefined?b:a,a=a.split("x");var e=parseInt(a[0],10),f=parseInt(a[1],10),g=this.brandColors[this.pick(this.brands())],h="#FFF",i=14,j="sans-serif";return c.width=e,c.height=f,d.textAlign="center",d.textBaseline="middle",d.fillStyle=g,d.fillRect(0,0,e,f),d.fillStyle=h,d.font="bold "+i+"px "+j,d.fillText(b,e/2,f/2,e),c.toDataURL("image/png")}}),a.extend({color:function(){var a=Math.floor(16777215*Math.random()).toString(16);return a="#"+("000000"+a).slice(-6)}}),a.extend({capitalize:function(a){return(a+"").charAt(0).toUpperCase()+(a+"").substr(1)},upper:function(a){return(a+"").toUpperCase()},lower:function(a){return(a+"").toLowerCase()},pick:function(a){return a=a||[],a[this.natural(0,a.length-1)]},shuffle:function(a){a=a||[];for(var b=a.slice(0),c=[],d=0,e=b.length,f=0;e>f;f++)d=this.natural(0,b.length-1),c.push(b[d]),b.splice(d,1);return c}}),a.extend({paragraph:function(b,c){var d;0===arguments.length&&(d=a.natural(3,7)),1===arguments.length&&(d=c=b),2===arguments.length&&(b=parseInt(b,10),c=parseInt(c,10),d=a.natural(b,c));for(var e=[],f=0;d>f;f++)e.push(a.sentence());return e.join(" ")},sentence:function(b,c){var d;0===arguments.length&&(d=a.natural(12,18)),1===arguments.length&&(d=c=b),2===arguments.length&&(b=parseInt(b,10),c=parseInt(c,10),d=a.natural(b,c));for(var e=[],f=0;d>f;f++)e.push(a.word());return a.capitalize(e.join(" "))+"."},word:function(b,c){var d;0===arguments.length&&(d=a.natural(3,10)),1===arguments.length&&(d=c=b),2===arguments.length&&(b=parseInt(b,10),c=parseInt(c,10),d=a.natural(b,c));for(var e="",f=0;d>f;f++)e+=a.character("lower");return e},title:function(b,c){var d,e=[];0===arguments.length&&(d=a.natural(3,7)),1===arguments.length&&(d=c=b),2===arguments.length&&(b=parseInt(b,10),c=parseInt(c,10),d=a.natural(b,c));for(var f=0;d>f;f++)e.push(this.capitalize(this.word()));return e.join(" ")}}),a.extend({first:function(){var a=["James","John","Robert","Michael","William","David","Richard","Charles","Joseph","Thomas","Christopher","Daniel","Paul","Mark","Donald","George","Kenneth","Steven","Edward","Brian","Ronald","Anthony","Kevin","Jason","Matthew","Gary","Timothy","Jose","Larry","Jeffrey","Frank","Scott","Eric"].concat(["Mary","Patricia","Linda","Barbara","Elizabeth","Jennifer","Maria","Susan","Margaret","Dorothy","Lisa","Nancy","Karen","Betty","Helen","Sandra","Donna","Carol","Ruth","Sharon","Michelle","Laura","Sarah","Kimberly","Deborah","Jessica","Shirley","Cynthia","Angela","Melissa","Brenda","Amy","Anna"]);return this.pick(a)},last:function(){var a=["Smith","Johnson","Williams","Brown","Jones","Miller","Davis","Garcia","Rodriguez","Wilson","Martinez","Anderson","Taylor","Thomas","Hernandez","Moore","Martin","Jackson","Thompson","White","Lopez","Lee","Gonzalez","Harris","Clark","Lewis","Robinson","Walker","Perez","Hall","Young","Allen"];return this.pick(a)},name:function(a){return this.first()+" "+(a?this.first()+" ":"")+this.last()}}),a.extend({url:function(){return"http://"+this.domain()+"/"+this.word()},domain:function(a){return this.word()+"."+(a||this.tld())},email:function(a){return this.character("lower")+"."+this.last().toLowerCase()+"@"+this.last().toLowerCase()+"."+this.tld()},ip:function(){return this.natural(0,255)+"."+this.natural(0,255)+"."+this.natural(0,255)+"."+this.natural(0,255)},tlds:["com","org","edu","gov","co.uk","net","io"],tld:function(){return this.pick(this.tlds)}}),a.extend({areas:["东北","华北","华东","华中","华南","西南","西北"],area:function(){return this.pick(this.areas)},regions:["110000 北京市","120000 天津市","130000 河北省","140000 山西省","150000 内蒙古自治区","210000 辽宁省","220000 吉林省","230000 黑龙江省","310000 上海市","320000 江苏省","330000 浙江省","340000 安徽省","350000 福建省","360000 江西省","370000 山东省","410000 河南省","420000 湖北省","430000 湖南省","440000 广东省","450000 广西壮族自治区","460000 海南省","500000 重庆市","510000 四川省","520000 贵州省","530000 云南省","540000 西藏自治区","610000 陕西省","620000 甘肃省","630000 青海省","640000 宁夏回族自治区","650000 新疆维吾尔自治区","650000 新疆维吾尔自治区","710000 台湾省","810000 香港特别行政区","820000 澳门特别行政区"],region:function(){return this.pick(this.regions).split(" ")[1]},address:function(){},city:function(){},phone:function(){},areacode:function(){},street:function(){},street_suffixes:function(){},street_suffix:function(){},states:function(){},state:function(){},zip:function(a){for(var b="",c=0;(a||6)>c;c++)b+=this.natural(0,9);return b}}),a.extend({todo:function(){return"todo"}}),a.extend({d4:function(){return this.natural(1,4)},d6:function(){return this.natural(1,6)},d8:function(){return this.natural(1,8)},d12:function(){return this.natural(1,12)},d20:function(){return this.natural(1,20)},d100:function(){return this.natural(1,100)},guid:function(){var a="ABCDEF1234567890",b=this.string(a,8)+"-"+this.string(a,4)+"-"+this.string(a,4)+"-"+this.string(a,4)+"-"+this.string(a,12);return b},id:function(){var a,b=0,c=["7","9","10","5","8","4","2","1","6","3","7","9","10","5","8","4","2"],d=["1","0","X","9","8","7","6","5","4","3","2"];a=this.pick(this.regions).split(" ")[0]+this.date("yyyyMMdd")+this.string("number",3);for(var e=0;e<a.length;e++)b+=a[e]*c[e];return a+=d[b%11]},autoIncrementInteger:0,increment:function(a){return this.autoIncrementInteger+=+a||1},inc:function(a){return this.increment(a)}}),a}(),rkey=/(.+)\|(?:\+(\d+)|(\d+-?\d*)?(?:\.(\d+-?\d*))?)/,rrange=/(\d+)-?(\d+)?/,rplaceholder=/\\*@([^@#%&()\?\s\/\.]+)(?:\((.*?)\))?/g;Mock.extend=Util.extend,Mock.mock=function(a,b,c){return 1===arguments.length?Handle.gen(a):(2===arguments.length&&(c=b,b=undefined),Mock._mocked[a+(b||"")]={rurl:a,rtype:b,template:c},Mock)};var Handle={extend:Util.extend};Handle.rule=function(a){a=(a||"")+"";var b=(a||"").match(rkey),c=b&&b[3]&&b[3].match(rrange),d=c&&parseInt(c[1],10),e=c&&parseInt(c[2],10),f=c?!c[2]&&parseInt(c[1],10)||Random.integer(d,e):1,g=b&&b[4]&&b[4].match(rrange),h=g&&parseInt(g[1],10),i=g&&parseInt(g[2],10),j=g?!g[2]&&parseInt(g[1],10)||Random.integer(h,i):0,k=b&&b[4];return{parameters:b,range:c,min:d,max:e,count:f,decimal:g,dmin:h,dmax:i,dcount:j,point:k}},Handle.gen=function(a,b,c){b=b=(b||"")+"",c=c||{},c={path:c.path||[],templatePath:c.templatePath||[],currentContext:c.currentContext,templateCurrentContext:c.templateCurrentContext||a,root:c.root,templateRoot:c.templateRoot};var d=Handle.rule(b),e=Util.type(a);return Handle[e]?Handle[e]({type:e,template:a,name:b,parsedName:b?b.replace(rkey,"$1"):b,rule:d,context:c}):a},Handle.extend({array:function(a){var b,c,d=[];if(a.rule.parameters)if(1===a.rule.count&&a.template.length>1)a.context.path.push(a.name),d=Random.pick(Handle.gen(a.template,undefined,{currentContext:d,templateCurrentContext:a.template,path:a.context.path})),a.context.path.pop();else for(b=0;b<a.rule.count;b++){c=0;do d.push(Handle.gen(a.template[c++]));while(c<a.template.length)}else for(b=0;b<a.template.length;b++)a.context.path.push(b),d.push(Handle.gen(a.template[b],b,{currentContext:d,templateCurrentContext:a.template,path:a.context.path})),a.context.path.pop();return d},object:function(a){var b,c,d,e,f,g={};if(a.rule.min)for(b=Util.keys(a.template),b=Random.shuffle(b),b=b.slice(0,a.rule.count),f=0;f<b.length;f++)c=b[f],d=c.replace(rkey,"$1"),a.context.path.push(d),g[d]=Handle.gen(a.template[c],c,{currentContext:g,templateCurrentContext:a.template,path:a.context.path}),a.context.path.pop();else for(c in a.template)d=c.replace(rkey,"$1"),a.context.path.push(d),g[d]=Handle.gen(a.template[c],c,{currentContext:g,templateCurrentContext:a.template,path:a.context.path}),a.context.path.pop(),e=c.match(rkey),e&&e[2]&&"number"===Util.type(a.template[c])&&(a.template[c]+=parseInt(e[2],10));return g},number:function(a){var b,c,d;if(a.rule.point){for(a.template+="",c=a.template.split("."),c[0]=a.rule.range?a.rule.count:c[0],c[1]=(c[1]||"").slice(0,a.rule.dcount),d=0;c[1].length<a.rule.dcount;d++)c[1]+=Random.character("number");b=parseFloat(c.join("."),10)}else b=a.rule.range&&!a.rule.parameters[2]?a.rule.count:a.template;return b},"boolean":function(a){var b;return b=a.rule.parameters?Random.bool(a.rule.min,a.rule.max,a.template):a.template},string:function(a){var b,c,d,e,f="";if(a.template.length){for(b=0;b<a.rule.count;b++)f+=a.template;for(c=f.match(rplaceholder)||[],b=0;b<c.length;b++)if(d=c[b],/^\\/.test(d))c.splice(b--,1);else{if(e=Handle.placeholder(d,a.context.currentContext,a.context.templateCurrentContext),1===c.length&&d===f&&typeof e!=typeof f){f=e;break}f=f.replace(d,e)}}else f=a.rule.range?Random.string(a.rule.count):a.template;return f},"function":function(a){return a.template.call(a.context.currentContext)}}),Handle.extend({_all:function(){var a={};for(var b in Random)a[b.toLowerCase()]=b;return a},placeholder:function(placeholder,obj,templateContext){rplaceholder.exec("");var parts=rplaceholder.exec(placeholder),key=parts&&parts[1],lkey=key&&key.toLowerCase(),okey=this._all()[lkey],params=parts&&parts[2]||"";try{eval("!function(){ params = [].splice.call(arguments, 0 ) }("+params+")")}catch(e){params=parts[2].split(/,\s*/)}if(obj&&key in obj)return obj[key];if(templateContext&&"object"==typeof templateContext&&key in templateContext&&placeholder!==templateContext[key])return templateContext[key]=Handle.gen(templateContext[key],key,{currentContext:obj,templateCurrentContext:templateContext}),templateContext[key];if(!(key in Random||lkey in Random||okey in Random))return placeholder;for(var i=0;i<params.length;i++)rplaceholder.exec(""),rplaceholder.test(params[i])&&(params[i]=Handle.placeholder(params[i],obj));var handle=Random[key]||Random[lkey]||Random[okey];switch(Util.type(handle)){case"array":return Random.pick(handle);case"function":var re=handle.apply(Random,params);return re===undefined&&(re=""),re}}}),Mock.mockjax=function(a){function b(){return{open:a.noop,send:a.noop,getAllResponseHeaders:a.noop,readyState:4,status:200}}function c(b,c){return function(){return a.isFunction(b.template)?b.template(c):Mock.mock(b.template)}}function d(d){function e(b,c){return"string"===a.type(b)?b===c:"regexp"===a.type(b)?b.test(c):void 0}for(var f in Mock._mocked){var g=Mock._mocked[f];if(!(g.rurl&&!e(g.rurl,d.url)||g.rtype&&!e(g.rtype,d.type.toLowerCase()))){d.dataFilter=c(g,d),d.converters["text json"]=c(g,d),d.converters["text jsonp"]=c(g,d),d.xhr=b;break}}}return a.ajaxPrefilter("json",d),a.ajaxPrefilter("jsonp",d),Mock},"undefined"!=typeof jQuery&&Mock.mockjax(jQuery),"undefined"!=typeof Zepto&&(Mock.mockjax=function(a){var b=a.ajax,c={readyState:4,responseText:"",responseXML:null,state:2,status:200,statusText:"success",timeoutTimer:null};a.ajax=function(d){for(var e in Mock._mocked){var f=Mock._mocked[e];if(("string"!==a.type(f.rurl)||f.rurl===d.url)&&("regexp"!==a.type(f.rurl)||f.rurl.test(d.url))){console.log("[mock]",d.url,">",f.rurl);var g=Mock.mock(f.template);return console.log("[mock]",g),d.success&&d.success(g,c,d),d.complete&&d.complete(c.status,c,d),c}}return b.call(a,d)}},Mock.mockjax(Zepto)),"undefined"!=typeof KISSY&&KISSY.add&&(Mock.mockjax=function(a){var b=a.io,c={readyState:4,responseText:"",responseXML:null,state:2,status:200,statusText:"success",timeoutTimer:null};a.io=function(d){for(var e in Mock._mocked){var f=Mock._mocked[e];if(("string"!==a.type(f.rurl)||f.rurl===d.url)&&("regexp"!==a.type(f.rurl)||f.rurl.test(d.url))){console.log("[mock]",d.url,">",f.rurl);var g=Mock.mock(f.template);return console.log("[mock]",g),d.success&&d.success(g,"success",c),d.complete&&d.complete(g,"success",c),a}}return b.apply(this,arguments)};for(var d in b)a.io[d]=b[d]}),Mock.Util=Util,Mock.Random=Random,Mock.heredoc=Util.heredoc,"object"==typeof module&&module.exports?module.exports=Mock:"function"==typeof define&&define.amd?define(function(){return Mock}):"function"==typeof define&&define.cmd&&define(function(){return Mock}),this.Mock=Mock,this.Random=Random,"undefined"!=typeof KISSY&&Util.each(["mock","components/mock/index","mock/dist/mock","gallery/Mock/0.1.1/index","gallery/Mock/0.1.2/index"],function(a){KISSY.add(a,function(a){return Mock.mockjax(a),Mock},{requires:["ajax"]})}),function(a){var b={version:"0.0.1"};this.Mock||(module.exports=b),Mock.tpl=function(a,c,d,e){return b.mock(a,c,d,e)},Mock.parse=function(a){return Handlebars.parse(a)},b.mock=function(a,b,d,e){return d=d?Util.extend({},d,Handlebars.helpers):Handlebars.helpers,e=e?Util.extend({},e,Handlebars.partials):Handlebars.partials,c.gen(a,null,b,d,e)};var c={debug:b.debug||!1,extend:Util.extend};c.gen=function(a,d,e,f,g){if(Util.isString(a)){var h=Handlebars.parse(a);e=c.parseOptions(a,e);var i=c.gen(h,d,e,f,g);return i}if(d=d||[{}],e=e||{},this[a.type]!==Util.noop){e.__path=e.__path||[],(b.debug||c.debug)&&(console.log(),console.group("["+a.type+"]",JSON.stringify(a)),console.log("[options]",e.__path.length,JSON.stringify(e)));var j=e.__path.length;return this[a.type](a,d,e,f,g),e.__path.splice(j),(b.debug||c.debug)&&console.groupEnd(),d[d.length-1]}},c.parseOptions=function(a,b){var c,d,e,f=/<!--\s*\n*Mock\s*\n*([\w\W]+?)\s*\n*-->/g,g=a.match(f),h={};for(c=0;g&&c<g.length;c++)f.lastIndex=0,d=f.exec(g[c]),d&&(e=new Function("return "+d[1]),e=e(),Util.extend(h,e));return Util.extend(h,b)},c.val=function(d,e,f,g){if(d!==e.__path[e.__path.length-1])throw new Error(d+"!=="+e.__path);if((b.debug||c.debug)&&console.log("[options]",d,e.__path),g!==a&&(g=Mock.mock(g)),e){var h=Mock.mock(e);if(Util.isString(h))return h;if(d in h)return h[d]}return Util.isArray(f[0])?{}:g!==a?g:d||Random.word()},c.program=function(a,b,c,d,e){for(var f=0;f<a.statements.length;f++)this.gen(a.statements[f],b,c,d,e)},c.mustache=function(a,b,c,d,e){var f,g=b[0],h=b.length;if("array"===Util.type(g)&&(g.push({}),g=g[g.length-1],b.unshift(g)),a.isHelper||d&&d[a.id.string]){if(0===a.params.length);else for(f=0;f<a.params.length;f++)this.gen(a.params[f],b,c,d,e);a.hash&&this.gen(a.hash,b,c,d,e)}else this.gen(a.id,b,c,d,e);b.length>h&&b.splice(0,b.length-h)},c.block=function(a,b,c,e,f){var g,h,i,j,k,l=a.mustache.id.parts,m=b[0],n=b.length;if(a.inverse,a.mustache.isHelper||e&&e[a.mustache.id.string])k=l[0],j=(d[k]||d.custom).apply(this,arguments),m=b[0];else for(g=0;g<l.length;g++)c.__path.push(l[g]),i=l[g],j=this.val(i,c,b,{}),m[i]=Util.isArray(j)&&[]||j,k=Util.type(m[i]),("object"===k||"array"===k)&&(m=m[i],b.unshift(m));if(a.program)if("array"===Util.type(m))for(h=j.length||Random.integer(3,7),g=0;h>g;g++)m.push("undefined"!=typeof j[g]?j[g]:{}),c.__path.push("[]"),b.unshift(m[m.length-1]),this.gen(a.program,b,c,e,f),c.__path.pop(),b.shift();else this.gen(a.program,b,c,e,f);b.length>n&&b.splice(0,b.length-n)},c.hash=function(a,b,c,d,e){var f,g,h,i=a.pairs;for(g=0;g<i.length;g++)for(f=i[g],h=1;h<f.length;h++)this.gen(f[h],b,c,d,e)},c.ID=function(a,b,c){var d,e,f,g,h,i,j,k,l,m=a.parts,n=b[a.depth],o=b.length;if(Util.isArray(n)&&(n=b[a.depth+1]),m.length)for(d=0,e=m.length;e>d;d++)c.__path.push(m[d]),f=m[d],g=m[d-1],l=c[g],h=d===e-1?n[f]:{},i=this.val(f,c,b,h),j=Util.type(n[f]),k=Util.type(i),"undefined"===j?n[f]=e-1>d&&"object"!==k&&"array"!==k?{}:Util.isArray(i)&&[]||i:e-1>d&&"object"!==j&&"array"!==j&&(n[f]=Util.isArray(i)&&[]||{}),j=Util.type(n[f]),("object"===j||"array"===j)&&(n=n[f],b.unshift(n));else;b.length>o&&b.splice(0,b.length-o)},c.partial=function(a,b,d,e,f){var g=a.partialName.name,h=f&&f[g],i=b.length;h&&c.gen(h,b,d,e,f),b.length>i&&b.splice(0,b.length-i)},c.content=Util.noop,c.PARTIAL_NAME=Util.noop,c.DATA=Util.noop,c.STRING=Util.noop,c.INTEGER=Util.noop,c.BOOLEAN=Util.noop,c.comment=Util.noop;var d={};d.each=function(a,b,c){var d,e,f,g,h,i,j,k=b[0];for(h=a.mustache.params[0].parts,d=0,e=h.length;e>d;d++)c.__path.push(h[d]),f=h[d],i=d===e-1?[]:{},g=this.val(f,c,b,i),k[f]=Util.isArray(g)&&[]||g,j=Util.type(k[f]),("object"===j||"array"===j)&&(k=k[f],b.unshift(k));return g},d["if"]=d.unless=function(a,b,c){var d,e,f,g,h,i,j,k=a.mustache.params,l=b[0];for(d=0;d<k.length;d++)for(h=k[d].parts,e=0;e<h.length;e++)0===d&&c.__path.push(h[e]),f=h[e],i=e===h.length-1?"@BOOL(2,1,true)":{},g=this.val(f,c,b,i),e===h.length-1&&(g="true"===g?!0:"false"===g?!1:g),l[f]=Util.isArray(g)?[]:g,j=Util.type(l[f]),("object"===j||"array"===j)&&(l=l[f],b.unshift(l));return g},d["with"]=function(a,b,c){var d,e,f,g,h,i=b[0];for(g=a.mustache.params[0].parts,d=0;d<g.length;d++)c.__path.push(g[d]),e=g[d],h={},f=this.val(e,c,b,h),i=i[e]=f,b.unshift(i);return f},d.log=function(){},d.custom=function(a,b,c){var d,e,f,g,h,i,j,k=b[0];if(0!==a.mustache.params.length){for(h=a.mustache.params[0].parts,d=0,e=h.length;e>d;d++)c.__path.push(h[d]),f=h[d],i=d===e-1?[]:{},g=this.val(f,c,b,i),k[f]=Util.isArray(g)&&[]||g,j=Util.type(k[f]),("object"===j||"array"===j)&&(k=k[f],b.unshift(k));return g}}}.call(this),function(a){if("undefined"!=typeof KISSY){var b,c={debug:!1};KISSY.use("xtemplate",function(a,c){b=c}),this.Mock||(module.exports=c),Mock.xtpl=function(a,b,d,e){return c.mock(a,b,d,e)},Mock.xparse=function(a){return b.compiler.parse(a)},c.mock=function(a,c,d,e){return d=d?Util.extend({},d,b.RunTime.commands):b.RunTime.commands,e=e?Util.extend({},e,b.RunTime.subTpls):b.RunTime.subTpls,this.gen(a,null,c,d,e,{})},c.parse=function(a){return b.compiler.parse(a)},c.gen=function(a,b,d,e,f,g){if("string"==typeof a){c.debug&&console.log("[tpl ]\n",a);var h=this.parse(a);d=this.parseOptions(a,d);var i=this.gen(h,b,d,e,f,g);return i}if(b=b||[{}],d=d||{},a.type=a.type,this[a.type]!==Util.noop){d.__path=d.__path||[],c.debug&&(console.log(),console.group("["+a.type+"]",JSON.stringify(a)),console.log("[context]","[before]",b.length,JSON.stringify(b)),console.log("[options]","[before]",d.__path.length,JSON.stringify(d)),console.log("[other ]","[before]",JSON.stringify(g)));var j=d.__path.length;return this[a.type](a,b,d,e,f,g),c.debug&&console.log("[__path ]","[after ]",d.__path),(!g.hold||"function"==typeof g.hold&&!g.hold(a,d,b))&&d.__path.splice(j),c.debug&&(console.log("[context]","[after ]",b.length,JSON.stringify(b)),console.groupEnd()),b[b.length-1]}},c.parseOptions=function(a,b){var c,d,e,f=/<!--\s*\n*Mock\s*\n*([\w\W]+?)\s*\n*-->/g,g=a.match(f),h={};for(c=0;g&&c<g.length;c++)f.lastIndex=0,d=f.exec(g[c]),d&&(e=new Function("return "+d[1]),e=e(),Util.extend(h,e));return Util.extend(h,b)},c.parseVal=function(a,b){function c(a,b){if("object"==typeof b&&a in b)return[b[a]];for(var c=[],d=0;d<b.length;d++)c.push.apply(c,e(a,[b[d]]));return c}function d(a,b){if("object"==typeof b&&a in b)return[b[a]];var c=[];for(var d in b)c.push.apply(c,e(a,[b[d]]));return c}function e(a,b){for(var e=[],f=0;f<b.length;f++)"object"==typeof b[f]&&(a in b[f]?e.push(b[f][a]):e.push.apply(e,Util.isArray(b[f])?c(a,b[f]):d(a,b[f])));return e}function f(a,b){for(var c="string"==typeof a?a.split("."):a.slice(0),d=[b];c.length;)d=e(c.shift(),d);return d}return f(a,b)},c.val=function(b,d,e,f){if(b!==d.__path[d.__path.length-1])throw new Error(b+"!=="+d.__path);if(f!==a&&(f=Mock.mock(f)),d){var g=Mock.mock(d);if(Util.isString(g))return g;var h=c.parseVal(d.__path,g);if(h.length>0)return h[0];if(b in g)return g[b]}return Util.isArray(e[0])?{}:f!==a?f:b},c.program=function(a,b,c,d,e,f){for(var g=0;g<a.statements.length;g++)this.gen(a.statements[g],b,c,d,e,f);for(var h=0;a.inverse&&h<a.inverse.length;h++)this.gen(a.inverse[h],b,c,d,e,f)},c.block=function(b,c,d,e,f,g){var h=c.length;this.gen(b.tpl,c,d,e,f,Util.extend({},g,{def:{},hold:!0}));var i,j,k,l=c[0];if("array"===Util.type(l))for(i=this.val(d.__path[d.__path.length-1],d,c),k=i&&i.length||Random.integer(3,7),j=0;k>j;j++)l.push(i&&i[j]!==a?i[j]:{}),d.__path.push(j),c.unshift(l[l.length-1]),this.gen(b.program,c,d,e,f,g),d.__path.pop(),c.shift();else this.gen(b.program,c,d,e,f,g);(!g.hold||"function"==typeof g.hold&&!g.hold(b,d,c))&&c.splice(0,c.length-h)},c.tpl=function(a,b,c,d,e,f){if(a.params&&a.params.length){f=Util.extend({},f,{def:{each:[],"if":"@BOOL(2,1,true)",unless:"@BOOL(2,1,false)","with":{}}[a.path.string],hold:{each:!0,"if":function(a,b,c,d,e){return"object"==typeof e},unless:function(a,b,c,d,e){return"object"==typeof e},"with":!0,include:!1}[a.path.string]});for(var g,h=0;h<a.params.length;h++)g="include"===a.path.string?e&&e[a.params[h].value]:a.params[h],g&&this.gen(g,b,c,d,e,f);a.hash&&this.gen(a.hash,b,c,d,e,f)}else this.gen(a.path,b,c,d,e,f)},c.tplExpression=function(a,b,c,d,e,f){this.gen(a.expression,b,c,d,e,f)},c.content=Util.noop,c.unaryExpression=Util.noop,c.multiplicativeExpression=c.additiveExpression=function(b,c,d,e,f,g){this.gen(b.op1,c,d,e,f,Util.extend({},g,{def:function(){return"number"===b.op2.type?b.op2.value.indexOf(".")>-1?Random.float(-Math.pow(10,10),Math.pow(10,10),1,Math.pow(10,6)):Random.integer():a}()})),this.gen(b.op2,c,d,e,f,Util.extend({},g,{def:function(){return"number"===b.op1.type?b.op1.value.indexOf(".")>-1?Random.float(-Math.pow(10,10),Math.pow(10,10),1,Math.pow(10,6)):Random.integer():a}()}))},c.relationalExpression=function(a,b,c,d,e,f){this.gen(a.op1,b,c,d,e,f),this.gen(a.op2,b,c,d,e,f)},c.equalityExpression=Util.noop,c.conditionalAndExpression=Util.noop,c.conditionalOrExpression=Util.noop,c.string=Util.noop,c.number=Util.noop,c.boolean=Util.noop,c.hash=function(a,b,c,d,e,f){var g,h=a.value;for(g in h)this.gen(h[g],b,c,d,e,f)},c.id=function(b,d,e,f,g,h){function i(a,b,c,d,e){var f=Util.type(a[d]),g=Util.type(e);return e="true"===e?!0:"false"===e?!1:e,"undefined"===f?a[d]=c-1>b&&!Util.isObjectOrArray(e)?{}:Util.isArray(e)&&[]||e:c-1>b&&"object"!==f&&"array"!==f?a[d]=Util.isArray(e)&&[]||{}:"object"!==f&&"array"!==f&&"object"!==g&&"array"!==g&&(a[d]=e),a[d]}var j,k,l,m,n,o=d.length,p=b.parts,q=d[b.depth];for(Util.isArray(q)&&(q=d[b.depth+1]),j=0,k=p.length;k>j;j++)(0!==j||"this"!==p[j])&&(/^(xindex|xcount|xkey)$/.test(p[j])||0===j&&1===k&&p[j]in f||(e.__path.push(p[j]),l=p[j],m=j===k-1?h.def!==a?h.def:d[0][l]:{},n=this.val(l,e,d,m),c.debug&&(console.log("[def ]",JSON.stringify(m)),console.log("[val ]",JSON.stringify(n))),n=i(q,j,k,l,n),Util.isObjectOrArray(q[l])&&d.unshift(q=q[l])));(!h.hold||"function"==typeof h.hold&&!h.hold(b,e,d,l,n))&&d.splice(0,d.length-o)}}}.call(this)}).call(this);
/*! mockjs 18-06-2014 04:36:07 */
(function(undefined){function find(a){function b(a,b){return"string"===Util.type(a)?a===b:"regexp"===Util.type(a)?a.test(b):void 0}for(var c in Mock._mocked){var d=Mock._mocked[c];if(!(d.rurl&&!b(d.rurl,a.url)||d.rtype&&!b(d.rtype,a.type.toLowerCase())))return d}}function convert(a,b){return Util.isFunction(a.template)?a.template(b):Mock.mock(a.template)}var Mock={version:"0.1.2",_mocked:{}},Util=function(){var a={};return a.extend=function(){var b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length;for(1===i&&(g=this,h=0);i>h;h++)if(b=arguments[h])for(c in b)d=g[c],e=b[c],g!==e&&e!==undefined&&(a.isArray(e)||a.isObject(e)?(a.isArray(e)&&(f=d&&a.isArray(d)?d:[]),a.isObject(e)&&(f=d&&a.isObject(d)?d:{}),g[c]=a.extend(f,e)):g[c]=e);return g},a.each=function(a,b,c){var d,e;if("number"===this.type(a))for(d=0;a>d;d++)b(d,d);else if(a.length===+a.length)for(d=0;d<a.length&&b.call(c,a[d],d,a)!==!1;d++);else for(e in a)if(b.call(c,a[e],e,a)===!1)break},a.type=function(a){return null===a||a===undefined?String(a):Object.prototype.toString.call(a).match(/\[object (\w+)\]/)[1].toLowerCase()},a.each("String Object Array RegExp Function".split(" "),function(b){a["is"+b]=function(c){return a.type(c)===b.toLowerCase()}}),a.isObjectOrArray=function(b){return a.isObject(b)||a.isArray(b)},a.isNumeric=function(a){return!isNaN(parseFloat(a))&&isFinite(a)},a.keys=function(a){var b=[];for(var c in a)a.hasOwnProperty(c)&&b.push(c);return b},a.values=function(a){var b=[];for(var c in a)a.hasOwnProperty(c)&&b.push(a[c]);return b},a.heredoc=function(a){return a.toString().replace(/^[^\/]+\/\*!?/,"").replace(/\*\/[^\/]+$/,"").replace(/^[\s\xA0]+/,"").replace(/[\s\xA0]+$/,"")},a.noop=function(){},a}(),Random=function(){var a={extend:Util.extend};return a.extend({"boolean":function(a,b,c){return c!==undefined?(a="undefined"==typeof a||isNaN(a)?1:parseInt(a,10),b="undefined"==typeof b||isNaN(b)?1:parseInt(b,10),Math.random()>1/(a+b)*a?!c:c):Math.random()>=.5},bool:function(a,b,c){return this.boolean(a,b,c)},natural:function(a,b){return a="undefined"!=typeof a?parseInt(a,10):0,b="undefined"!=typeof b?parseInt(b,10):9007199254740992,Math.round(Math.random()*(b-a))+a},integer:function(a,b){return a="undefined"!=typeof a?parseInt(a,10):-9007199254740992,b="undefined"!=typeof b?parseInt(b,10):9007199254740992,Math.round(Math.random()*(b-a))+a},"int":function(a,b){return this.integer(a,b)},"float":function(a,b,c,d){c=c===undefined?0:c,c=Math.max(Math.min(c,17),0),d=d===undefined?17:d,d=Math.max(Math.min(d,17),0);for(var e=this.integer(a,b)+".",f=0,g=this.natural(c,d);g>f;f++)e+=this.character("number");return parseFloat(e,10)},character:function(b){var c={lower:"abcdefghijklmnopqrstuvwxyz",upper:"ABCDEFGHIJKLMNOPQRSTUVWXYZ",number:"0123456789",symbol:"!@#$%^&*()[]"};return c.alpha=c.lower+c.upper,c.undefined=c.lower+c.upper+c.number+c.symbol,b=c[(""+b).toLowerCase()]||b,b.charAt(a.natural(0,b.length-1))},"char":function(a){return this.character(a)},string:function(b,c,d){var e;3===arguments.length&&(e=a.natural(c,d)),2===arguments.length&&("string"==typeof arguments[0]?e=c:(e=a.natural(b,c),b=undefined)),1===arguments.length&&(e=b,b=undefined),0===arguments.length&&(e=a.natural(3,7));for(var f="",g=0;e>g;g++)f+=a.character(b);return f},str:function(a,b,c){return this.string(a,b,c)},range:function(a,b,c){arguments.length<=1&&(b=a||0,a=0),c=arguments[2]||1,a=+a,b=+b,c=+c;for(var d=Math.max(Math.ceil((b-a)/c),0),e=0,f=new Array(d);d>e;)f[e++]=a,a+=c;return f}}),a.extend({patternLetters:{yyyy:"getFullYear",yy:function(a){return(""+a.getFullYear()).slice(2)},y:"yy",MM:function(a){var b=a.getMonth()+1;return 10>b?"0"+b:b},M:function(a){return a.getMonth()+1},dd:function(a){var b=a.getDate();return 10>b?"0"+b:b},d:"getDate",HH:function(a){var b=a.getHours();return 10>b?"0"+b:b},H:"getHours",hh:function(a){var b=a.getHours()%12;return 10>b?"0"+b:b},h:function(a){return a.getHours()%12},mm:function(a){var b=a.getMinutes();return 10>b?"0"+b:b},m:"getMinutes",ss:function(a){var b=a.getSeconds();return 10>b?"0"+b:b},s:"getSeconds",SS:function(a){var b=a.getMilliseconds();return 10>b&&"00"+b||100>b&&"0"+b||b},S:"getMilliseconds",A:function(a){return a.getHours()<12?"AM":"PM"},a:function(a){return a.getHours()<12?"am":"pm"},T:"getTime"}}),a.extend({rformat:new RegExp(function(){var b=[];for(var c in a.patternLetters)b.push(c);return"("+b.join("|")+")"}(),"g"),format:function(b,c){var d=a.patternLetters,e=a.rformat;return c.replace(e,function(a,c){return"function"==typeof d[c]?d[c](b):d[c]in d?arguments.callee(a,d[c]):b[d[c]]()})},randomDate:function(a,b){return a=a===undefined?new Date(0):a,b=b===undefined?new Date:b,new Date(Math.random()*(b.getTime()-a.getTime()))},date:function(a){return a=a||"yyyy-MM-dd",this.format(this.randomDate(),a)},time:function(a){return a=a||"HH:mm:ss",this.format(this.randomDate(),a)},datetime:function(a){return a=a||"yyyy-MM-dd HH:mm:ss",this.format(this.randomDate(),a)},now:function(a,b){1===arguments.length&&(/year|month|week|day|hour|minute|second|week/.test(a)||(b=a,a="")),a=(a||"").toLowerCase(),b=b||"yyyy-MM-dd HH:mm:ss";var c=new Date;switch(a){case"year":c.setMonth(0);case"month":c.setDate(1);case"week":case"day":c.setHours(0);case"hour":c.setMinutes(0);case"minute":c.setSeconds(0);case"second":c.setMilliseconds(0)}switch(a){case"week":c.setDate(c.getDate()-c.getDay())}return this.format(c,b)}}),a.extend({ad_size:["300x250","250x250","240x400","336x280","180x150","720x300","468x60","234x60","88x31","120x90","120x60","120x240","125x125","728x90","160x600","120x600","300x600"],screen_size:["320x200","320x240","640x480","800x480","800x480","1024x600","1024x768","1280x800","1440x900","1920x1200","2560x1600"],video_size:["720x480","768x576","1280x720","1920x1080"],image:function(a,b,c,d,e){return 4===arguments.length&&(e=d,d=undefined),3===arguments.length&&(e=c,c=undefined),a||(a=this.pick(this.ad_size)),b&&~b.indexOf("#")&&(b=b.slice(1)),c&&~c.indexOf("#")&&(c=c.slice(1)),"http://dummyimage.com/"+a+(b?"/"+b:"")+(c?"/"+c:"")+(d?"."+d:"")+(e?"&text="+e:"")},img:function(){return this.image.apply(this,arguments)}}),a.extend({brandColors:{"4ormat":"#fb0a2a","500px":"#02adea","About.me (blue)":"#00405d","About.me (yellow)":"#ffcc33",Addvocate:"#ff6138",Adobe:"#ff0000",Aim:"#fcd20b",Amazon:"#e47911",Android:"#a4c639","Angie's List":"#7fbb00",AOL:"#0060a3",Atlassian:"#003366",Behance:"#053eff","Big Cartel":"#97b538",bitly:"#ee6123",Blogger:"#fc4f08",Boeing:"#0039a6","Booking.com":"#003580",Carbonmade:"#613854",Cheddar:"#ff7243","Code School":"#3d4944",Delicious:"#205cc0",Dell:"#3287c1",Designmoo:"#e54a4f",Deviantart:"#4e6252","Designer News":"#2d72da",Devour:"#fd0001",DEWALT:"#febd17","Disqus (blue)":"#59a3fc","Disqus (orange)":"#db7132",Dribbble:"#ea4c89",Dropbox:"#3d9ae8",Drupal:"#0c76ab",Dunked:"#2a323a",eBay:"#89c507",Ember:"#f05e1b",Engadget:"#00bdf6",Envato:"#528036",Etsy:"#eb6d20",Evernote:"#5ba525","Fab.com":"#dd0017",Facebook:"#3b5998",Firefox:"#e66000","Flickr (blue)":"#0063dc","Flickr (pink)":"#ff0084",Forrst:"#5b9a68",Foursquare:"#25a0ca",Garmin:"#007cc3",GetGlue:"#2d75a2",Gimmebar:"#f70078",GitHub:"#171515","Google Blue":"#0140ca","Google Green":"#16a61e","Google Red":"#dd1812","Google Yellow":"#fcca03","Google+":"#dd4b39",Grooveshark:"#f77f00",Groupon:"#82b548","Hacker News":"#ff6600",HelloWallet:"#0085ca","Heroku (light)":"#c7c5e6","Heroku (dark)":"#6567a5",HootSuite:"#003366",Houzz:"#73ba37",HTML5:"#ec6231",IKEA:"#ffcc33",IMDb:"#f3ce13",Instagram:"#3f729b",Intel:"#0071c5",Intuit:"#365ebf",Kickstarter:"#76cc1e",kippt:"#e03500",Kodery:"#00af81",LastFM:"#c3000d",LinkedIn:"#0e76a8",Livestream:"#cf0005",Lumo:"#576396",Mixpanel:"#a086d3",Meetup:"#e51937",Nokia:"#183693",NVIDIA:"#76b900",Opera:"#cc0f16",Path:"#e41f11","PayPal (dark)":"#1e477a","PayPal (light)":"#3b7bbf",Pinboard:"#0000e6",Pinterest:"#c8232c",PlayStation:"#665cbe",Pocket:"#ee4056",Prezi:"#318bff",Pusha:"#0f71b4",Quora:"#a82400","QUOTE.fm":"#66ceff",Rdio:"#008fd5",Readability:"#9c0000","Red Hat":"#cc0000",Resource:"#7eb400",Rockpack:"#0ba6ab",Roon:"#62b0d9",RSS:"#ee802f",Salesforce:"#1798c1",Samsung:"#0c4da2",Shopify:"#96bf48",Skype:"#00aff0",Snagajob:"#f47a20",Softonic:"#008ace",SoundCloud:"#ff7700","Space Box":"#f86960",Spotify:"#81b71a",Sprint:"#fee100",Squarespace:"#121212",StackOverflow:"#ef8236",Staples:"#cc0000","Status Chart":"#d7584f",Stripe:"#008cdd",StudyBlue:"#00afe1",StumbleUpon:"#f74425","T-Mobile":"#ea0a8e",Technorati:"#40a800","The Next Web":"#ef4423",Treehouse:"#5cb868",Trulia:"#5eab1f",Tumblr:"#34526f","Twitch.tv":"#6441a5",Twitter:"#00acee",TYPO3:"#ff8700",Ubuntu:"#dd4814",Ustream:"#3388ff",Verizon:"#ef1d1d",Vimeo:"#86c9ef",Vine:"#00a478",Virb:"#06afd8","Virgin Media":"#cc0000",Wooga:"#5b009c","WordPress (blue)":"#21759b","WordPress (orange)":"#d54e21","WordPress (grey)":"#464646",Wunderlist:"#2b88d9",XBOX:"#9bc848",XING:"#126567","Yahoo!":"#720e9e",Yandex:"#ffcc00",Yelp:"#c41200",YouTube:"#c4302b",Zalongo:"#5498dc",Zendesk:"#78a300",Zerply:"#9dcc7a",Zootool:"#5e8b1d"},brands:function(){var a=[];for(var b in this.brandColors)a.push(b);return a},dataImage:function(a,b){var c="undefined"!=typeof document&&document.createElement("canvas"),d=c&&c.getContext&&c.getContext("2d");if(!c||!d)return"";a||(a=this.pick(this.ad_size)),b=b!==undefined?b:a,a=a.split("x");var e=parseInt(a[0],10),f=parseInt(a[1],10),g=this.brandColors[this.pick(this.brands())],h="#FFF",i=14,j="sans-serif";return c.width=e,c.height=f,d.textAlign="center",d.textBaseline="middle",d.fillStyle=g,d.fillRect(0,0,e,f),d.fillStyle=h,d.font="bold "+i+"px "+j,d.fillText(b,e/2,f/2,e),c.toDataURL("image/png")}}),a.extend({color:function(){var a=Math.floor(16777215*Math.random()).toString(16);return a="#"+("000000"+a).slice(-6)}}),a.extend({capitalize:function(a){return(a+"").charAt(0).toUpperCase()+(a+"").substr(1)},upper:function(a){return(a+"").toUpperCase()},lower:function(a){return(a+"").toLowerCase()},pick:function(a){return a=a||[],a[this.natural(0,a.length-1)]},shuffle:function(a){a=a||[];for(var b=a.slice(0),c=[],d=0,e=b.length,f=0;e>f;f++)d=this.natural(0,b.length-1),c.push(b[d]),b.splice(d,1);return c}}),a.extend({paragraph:function(b,c){var d;0===arguments.length&&(d=a.natural(3,7)),1===arguments.length&&(d=c=b),2===arguments.length&&(b=parseInt(b,10),c=parseInt(c,10),d=a.natural(b,c));for(var e=[],f=0;d>f;f++)e.push(a.sentence());return e.join(" ")},sentence:function(b,c){var d;0===arguments.length&&(d=a.natural(12,18)),1===arguments.length&&(d=c=b),2===arguments.length&&(b=parseInt(b,10),c=parseInt(c,10),d=a.natural(b,c));for(var e=[],f=0;d>f;f++)e.push(a.word());return a.capitalize(e.join(" "))+"."},word:function(b,c){var d;0===arguments.length&&(d=a.natural(3,10)),1===arguments.length&&(d=c=b),2===arguments.length&&(b=parseInt(b,10),c=parseInt(c,10),d=a.natural(b,c));for(var e="",f=0;d>f;f++)e+=a.character("lower");return e},title:function(b,c){var d,e=[];0===arguments.length&&(d=a.natural(3,7)),1===arguments.length&&(d=c=b),2===arguments.length&&(b=parseInt(b,10),c=parseInt(c,10),d=a.natural(b,c));for(var f=0;d>f;f++)e.push(this.capitalize(this.word()));return e.join(" ")}}),a.extend({first:function(){var a=["James","John","Robert","Michael","William","David","Richard","Charles","Joseph","Thomas","Christopher","Daniel","Paul","Mark","Donald","George","Kenneth","Steven","Edward","Brian","Ronald","Anthony","Kevin","Jason","Matthew","Gary","Timothy","Jose","Larry","Jeffrey","Frank","Scott","Eric"].concat(["Mary","Patricia","Linda","Barbara","Elizabeth","Jennifer","Maria","Susan","Margaret","Dorothy","Lisa","Nancy","Karen","Betty","Helen","Sandra","Donna","Carol","Ruth","Sharon","Michelle","Laura","Sarah","Kimberly","Deborah","Jessica","Shirley","Cynthia","Angela","Melissa","Brenda","Amy","Anna"]);return this.pick(a)},last:function(){var a=["Smith","Johnson","Williams","Brown","Jones","Miller","Davis","Garcia","Rodriguez","Wilson","Martinez","Anderson","Taylor","Thomas","Hernandez","Moore","Martin","Jackson","Thompson","White","Lopez","Lee","Gonzalez","Harris","Clark","Lewis","Robinson","Walker","Perez","Hall","Young","Allen"];return this.pick(a)},name:function(a){return this.first()+" "+(a?this.first()+" ":"")+this.last()}}),a.extend({url:function(){return"http://"+this.domain()+"/"+this.word()},domain:function(a){return this.word()+"."+(a||this.tld())},email:function(a){return this.character("lower")+"."+this.last().toLowerCase()+"@"+this.last().toLowerCase()+"."+this.tld()},ip:function(){return this.natural(0,255)+"."+this.natural(0,255)+"."+this.natural(0,255)+"."+this.natural(0,255)},tlds:["com","org","edu","gov","co.uk","net","io"],tld:function(){return this.pick(this.tlds)}}),a.extend({areas:["东北","华北","华东","华中","华南","西南","西北"],area:function(){return this.pick(this.areas)},regions:["110000 北京市","120000 天津市","130000 河北省","140000 山西省","150000 内蒙古自治区","210000 辽宁省","220000 吉林省","230000 黑龙江省","310000 上海市","320000 江苏省","330000 浙江省","340000 安徽省","350000 福建省","360000 江西省","370000 山东省","410000 河南省","420000 湖北省","430000 湖南省","440000 广东省","450000 广西壮族自治区","460000 海南省","500000 重庆市","510000 四川省","520000 贵州省","530000 云南省","540000 西藏自治区","610000 陕西省","620000 甘肃省","630000 青海省","640000 宁夏回族自治区","650000 新疆维吾尔自治区","650000 新疆维吾尔自治区","710000 台湾省","810000 香港特别行政区","820000 澳门特别行政区"],region:function(){return this.pick(this.regions).split(" ")[1]},address:function(){},city:function(){},phone:function(){},areacode:function(){},street:function(){},street_suffixes:function(){},street_suffix:function(){},states:function(){},state:function(){},zip:function(a){for(var b="",c=0;(a||6)>c;c++)b+=this.natural(0,9);return b}}),a.extend({todo:function(){return"todo"}}),a.extend({d4:function(){return this.natural(1,4)},d6:function(){return this.natural(1,6)},d8:function(){return this.natural(1,8)},d12:function(){return this.natural(1,12)},d20:function(){return this.natural(1,20)},d100:function(){return this.natural(1,100)},guid:function(){var a="ABCDEF1234567890",b=this.string(a,8)+"-"+this.string(a,4)+"-"+this.string(a,4)+"-"+this.string(a,4)+"-"+this.string(a,12);return b},id:function(){var a,b=0,c=["7","9","10","5","8","4","2","1","6","3","7","9","10","5","8","4","2"],d=["1","0","X","9","8","7","6","5","4","3","2"];a=this.pick(this.regions).split(" ")[0]+this.date("yyyyMMdd")+this.string("number",3);for(var e=0;e<a.length;e++)b+=a[e]*c[e];return a+=d[b%11]},autoIncrementInteger:0,increment:function(a){return this.autoIncrementInteger+=+a||1},inc:function(a){return this.increment(a)}}),a}(),rkey=/(.+)\|(?:\+(\d+)|([\+\-]?\d+-?[\+\-]?\d*)?(?:\.(\d+-?\d*))?)/,rrange=/([\+\-]?\d+)-?([\+\-]?\d+)?/,rplaceholder=/\\*@([^@#%&()\?\s\/\.]+)(?:\((.*?)\))?/g;Mock.extend=Util.extend,Mock.mock=function(a,b,c){return 1===arguments.length?Handle.gen(a):(2===arguments.length&&(c=b,b=undefined),Mock._mocked[a+(b||"")]={rurl:a,rtype:b,template:c},Mock)};var Handle={extend:Util.extend};Handle.rule=function(a){a=(a||"")+"";var b=(a||"").match(rkey),c=b&&b[3]&&b[3].match(rrange),d=c&&parseInt(c[1],10),e=c&&parseInt(c[2],10),f=c?!c[2]&&parseInt(c[1],10)||Random.integer(d,e):1,g=b&&b[4]&&b[4].match(rrange),h=g&&parseInt(g[1],10),i=g&&parseInt(g[2],10),j=g?!g[2]&&parseInt(g[1],10)||Random.integer(h,i):0,k=b&&b[4];return{parameters:b,range:c,min:d,max:e,count:f,decimal:g,dmin:h,dmax:i,dcount:j,point:k}},Handle.gen=function(a,b,c){b=b=(b||"")+"",c=c||{},c={path:c.path||[],templatePath:c.templatePath||[],currentContext:c.currentContext,templateCurrentContext:c.templateCurrentContext||a,root:c.root,templateRoot:c.templateRoot};var d=Handle.rule(b),e=Util.type(a);return Handle[e]?Handle[e]({type:e,template:a,name:b,parsedName:b?b.replace(rkey,"$1"):b,rule:d,context:c}):a},Handle.extend({array:function(a){var b,c,d=[];if(a.rule.parameters)if(1===a.rule.count&&a.template.length>1)a.context.path.push(a.name),d=Random.pick(Handle.gen(a.template,undefined,{currentContext:d,templateCurrentContext:a.template,path:a.context.path})),a.context.path.pop();else for(b=0;b<a.rule.count;b++){c=0;do d.push(Handle.gen(a.template[c++]));while(c<a.template.length)}else for(b=0;b<a.template.length;b++)a.context.path.push(b),d.push(Handle.gen(a.template[b],b,{currentContext:d,templateCurrentContext:a.template,path:a.context.path})),a.context.path.pop();return d},object:function(a){var b,c,d,e,f,g,h={};if(a.rule.min)for(b=Util.keys(a.template),b=Random.shuffle(b),b=b.slice(0,a.rule.count),g=0;g<b.length;g++)d=b[g],e=d.replace(rkey,"$1"),a.context.path.push(e),h[e]=Handle.gen(a.template[d],d,{currentContext:h,templateCurrentContext:a.template,path:a.context.path}),a.context.path.pop();else{b=[],c=[];for(d in a.template)("function"==typeof a.template[d]?c:b).push(d);for(b=b.concat(c),g=0;g<b.length;g++)d=b[g],e=d.replace(rkey,"$1"),a.context.path.push(e),h[e]=Handle.gen(a.template[d],d,{currentContext:h,templateCurrentContext:a.template,path:a.context.path}),a.context.path.pop(),f=d.match(rkey),f&&f[2]&&"number"===Util.type(a.template[d])&&(a.template[d]+=parseInt(f[2],10))}return h},number:function(a){var b,c,d;if(a.rule.point){for(a.template+="",c=a.template.split("."),c[0]=a.rule.range?a.rule.count:c[0],c[1]=(c[1]||"").slice(0,a.rule.dcount),d=0;c[1].length<a.rule.dcount;d++)c[1]+=Random.character("number");b=parseFloat(c.join("."),10)}else b=a.rule.range&&!a.rule.parameters[2]?a.rule.count:a.template;return b},"boolean":function(a){var b;return b=a.rule.parameters?Random.bool(a.rule.min,a.rule.max,a.template):a.template},string:function(a){var b,c,d,e,f="";if(a.template.length){for(b=0;b<a.rule.count;b++)f+=a.template;for(c=f.match(rplaceholder)||[],b=0;b<c.length;b++)if(d=c[b],/^\\/.test(d))c.splice(b--,1);else{if(e=Handle.placeholder(d,a.context.currentContext,a.context.templateCurrentContext),1===c.length&&d===f&&typeof e!=typeof f){f=e;break}f=f.replace(d,e)}}else f=a.rule.range?Random.string(a.rule.count):a.template;return f},"function":function(a){return a.template.call(a.context.currentContext)}}),Handle.extend({_all:function(){var a={};for(var b in Random)a[b.toLowerCase()]=b;return a},placeholder:function(placeholder,obj,templateContext){rplaceholder.exec("");var parts=rplaceholder.exec(placeholder),key=parts&&parts[1],lkey=key&&key.toLowerCase(),okey=this._all()[lkey],params=parts&&parts[2]||"";try{params=eval("(function(){ return [].splice.call(arguments, 0 ) })("+params+")")}catch(error){params=parts[2].split(/,\s*/)}if(obj&&key in obj)return obj[key];if(templateContext&&"object"==typeof templateContext&&key in templateContext&&placeholder!==templateContext[key])return templateContext[key]=Handle.gen(templateContext[key],key,{currentContext:obj,templateCurrentContext:templateContext}),templateContext[key];if(!(key in Random||lkey in Random||okey in Random))return placeholder;for(var i=0;i<params.length;i++)rplaceholder.exec(""),rplaceholder.test(params[i])&&(params[i]=Handle.placeholder(params[i],obj));var handle=Random[key]||Random[lkey]||Random[okey];switch(Util.type(handle)){case"array":return Random.pick(handle);case"function":var re=handle.apply(Random,params);return re===undefined&&(re=""),re}}}),Mock.mockjax=function(a){function b(){return{readyState:4,status:200,statusText:"",open:a.noop,send:function(){this.onload()},setRequestHeader:a.noop,getAllResponseHeaders:a.noop,getResponseHeader:a.noop,statusCode:a.noop,abort:a.noop}}function c(a,c){var d=find(a);return d&&(a.dataFilter=a.converters["text json"]=a.converters["text jsonp"]=a.converters["text script"]=a.converters["script json"]=function(){return convert(d,a)},a.xhr=b,"script"!==c.dataType)?"json":void 0}return a.ajaxPrefilter("json jsonp script",c),Mock},"undefined"!=typeof jQuery&&Mock.mockjax(jQuery),"undefined"!=typeof Zepto&&(Mock.mockjax=function(a){var b=a.ajax,c={readyState:4,responseText:"",responseXML:null,state:2,status:200,statusText:"success",timeoutTimer:null};a.ajax=function(d){var e=find(d);if(e){var f=Mock.mock(e.template);return d.success&&d.success(f,c,d),d.complete&&d.complete(c.status,c,d),c}return b.call(a,d)}},Mock.mockjax(Zepto)),"undefined"!=typeof KISSY&&KISSY.add&&(Mock.mockjax=function(a){var b=a.io,c={readyState:4,responseText:"",responseXML:null,state:2,status:200,statusText:"success",timeoutTimer:null};a.io=function(a){var d=find(a);if(d){var e=Mock.mock(d.template);return a.success&&a.success(e,c,a),a.complete&&a.complete(c.status,c,a),c}return b.apply(this,arguments)};for(var d in b)a.io[d]=b[d]}),Mock.Util=Util,Mock.Random=Random,Mock.heredoc=Util.heredoc,"object"==typeof module&&module.exports?module.exports=Mock:"function"==typeof define&&define.amd?define(function(){return Mock}):"function"==typeof define&&define.cmd&&define(function(){return Mock}),this.Mock=Mock,this.Random=Random,"undefined"!=typeof KISSY&&Util.each(["mock","components/mock/","mock/dist/mock","gallery/Mock/0.1.1/","gallery/Mock/0.1.2/","gallery/Mock/0.1.3/"],function(a){KISSY.add(a,function(a){return Mock.mockjax(a),Mock},{requires:["ajax"]})}),function(a){var b={version:"0.0.1"};this.Mock||(module.exports=b),Mock.tpl=function(a,c,d,e){return b.mock(a,c,d,e)},Mock.parse=function(a){return Handlebars.parse(a)},b.mock=function(a,b,d,e){return d=d?Util.extend({},d,Handlebars.helpers):Handlebars.helpers,e=e?Util.extend({},e,Handlebars.partials):Handlebars.partials,c.gen(a,null,b,d,e)};var c={debug:b.debug||!1,extend:Util.extend};c.gen=function(a,d,e,f,g){if(Util.isString(a)){var h=Handlebars.parse(a);e=c.parseOptions(a,e);var i=c.gen(h,d,e,f,g);return i}if(d=d||[{}],e=e||{},this[a.type]!==Util.noop){e.__path=e.__path||[],(b.debug||c.debug)&&(console.log(),console.group("["+a.type+"]",JSON.stringify(a)),console.log("[options]",e.__path.length,JSON.stringify(e)));var j=e.__path.length;return this[a.type](a,d,e,f,g),e.__path.splice(j),(b.debug||c.debug)&&console.groupEnd(),d[d.length-1]}},c.parseOptions=function(a,b){var c,d,e,f=/<!--\s*\n*Mock\s*\n*([\w\W]+?)\s*\n*-->/g,g=a.match(f),h={};for(c=0;g&&c<g.length;c++)f.lastIndex=0,d=f.exec(g[c]),d&&(e=new Function("return "+d[1]),e=e(),Util.extend(h,e));return Util.extend(h,b)},c.val=function(d,e,f,g){if(d!==e.__path[e.__path.length-1])throw new Error(d+"!=="+e.__path);if((b.debug||c.debug)&&console.log("[options]",d,e.__path),g!==a&&(g=Mock.mock(g)),e){var h=Mock.mock(e);if(Util.isString(h))return h;if(d in h)return h[d]}return Util.isArray(f[0])?{}:g!==a?g:d||Random.word()},c.program=function(a,b,c,d,e){for(var f=0;f<a.statements.length;f++)this.gen(a.statements[f],b,c,d,e)},c.mustache=function(a,b,c,d,e){var f,g=b[0],h=b.length;if("array"===Util.type(g)&&(g.push({}),g=g[g.length-1],b.unshift(g)),a.isHelper||d&&d[a.id.string]){if(0===a.params.length);else for(f=0;f<a.params.length;f++)this.gen(a.params[f],b,c,d,e);a.hash&&this.gen(a.hash,b,c,d,e)}else this.gen(a.id,b,c,d,e);b.length>h&&b.splice(0,b.length-h)},c.block=function(a,b,c,e,f){var g,h,i,j,k,l=a.mustache.id.parts,m=b[0],n=b.length;if(a.inverse,a.mustache.isHelper||e&&e[a.mustache.id.string])k=l[0],j=(d[k]||d.custom).apply(this,arguments),m=b[0];else for(g=0;g<l.length;g++)c.__path.push(l[g]),i=l[g],j=this.val(i,c,b,{}),m[i]=Util.isArray(j)&&[]||j,k=Util.type(m[i]),("object"===k||"array"===k)&&(m=m[i],b.unshift(m));if(a.program)if("array"===Util.type(m))for(h=j.length||Random.integer(3,7),g=0;h>g;g++)m.push("undefined"!=typeof j[g]?j[g]:{}),c.__path.push("[]"),b.unshift(m[m.length-1]),this.gen(a.program,b,c,e,f),c.__path.pop(),b.shift();else this.gen(a.program,b,c,e,f);b.length>n&&b.splice(0,b.length-n)},c.hash=function(a,b,c,d,e){var f,g,h,i=a.pairs;for(g=0;g<i.length;g++)for(f=i[g],h=1;h<f.length;h++)this.gen(f[h],b,c,d,e)},c.ID=function(a,b,c){var d,e,f,g,h,i,j,k,l,m=a.parts,n=b[a.depth],o=b.length;if(Util.isArray(n)&&(n=b[a.depth+1]),m.length)for(d=0,e=m.length;e>d;d++)c.__path.push(m[d]),f=m[d],g=m[d-1],l=c[g],h=d===e-1?n[f]:{},i=this.val(f,c,b,h),j=Util.type(n[f]),k=Util.type(i),"undefined"===j?n[f]=e-1>d&&"object"!==k&&"array"!==k?{}:Util.isArray(i)&&[]||i:e-1>d&&"object"!==j&&"array"!==j&&(n[f]=Util.isArray(i)&&[]||{}),j=Util.type(n[f]),("object"===j||"array"===j)&&(n=n[f],b.unshift(n));else;b.length>o&&b.splice(0,b.length-o)},c.partial=function(a,b,d,e,f){var g=a.partialName.name,h=f&&f[g],i=b.length;h&&c.gen(h,b,d,e,f),b.length>i&&b.splice(0,b.length-i)},c.content=Util.noop,c.PARTIAL_NAME=Util.noop,c.DATA=Util.noop,c.STRING=Util.noop,c.INTEGER=Util.noop,c.BOOLEAN=Util.noop,c.comment=Util.noop;var d={};d.each=function(a,b,c){var d,e,f,g,h,i,j,k=b[0];for(h=a.mustache.params[0].parts,d=0,e=h.length;e>d;d++)c.__path.push(h[d]),f=h[d],i=d===e-1?[]:{},g=this.val(f,c,b,i),k[f]=Util.isArray(g)&&[]||g,j=Util.type(k[f]),("object"===j||"array"===j)&&(k=k[f],b.unshift(k));return g},d["if"]=d.unless=function(a,b,c){var d,e,f,g,h,i,j,k=a.mustache.params,l=b[0];for(d=0;d<k.length;d++)for(h=k[d].parts,e=0;e<h.length;e++)0===d&&c.__path.push(h[e]),f=h[e],i=e===h.length-1?"@BOOL(2,1,true)":{},g=this.val(f,c,b,i),e===h.length-1&&(g="true"===g?!0:"false"===g?!1:g),l[f]=Util.isArray(g)?[]:g,j=Util.type(l[f]),("object"===j||"array"===j)&&(l=l[f],b.unshift(l));return g},d["with"]=function(a,b,c){var d,e,f,g,h,i=b[0];for(g=a.mustache.params[0].parts,d=0;d<g.length;d++)c.__path.push(g[d]),e=g[d],h={},f=this.val(e,c,b,h),i=i[e]=f,b.unshift(i);return f},d.log=function(){},d.custom=function(a,b,c){var d,e,f,g,h,i,j,k=b[0];if(0!==a.mustache.params.length){for(h=a.mustache.params[0].parts,d=0,e=h.length;e>d;d++)c.__path.push(h[d]),f=h[d],i=d===e-1?[]:{},g=this.val(f,c,b,i),k[f]=Util.isArray(g)&&[]||g,j=Util.type(k[f]),("object"===j||"array"===j)&&(k=k[f],b.unshift(k));return g}}}.call(this),function(a){if("undefined"!=typeof KISSY){var b,c={debug:!1};KISSY.use("xtemplate",function(a,c){b=c}),this.Mock||(module.exports=c),Mock.xtpl=function(a,b,d,e){return c.mock(a,b,d,e)},Mock.xparse=function(a){return b.compiler.parse(a)},c.mock=function(a,c,d,e){return d=d?Util.extend({},d,b.RunTime.commands):b.RunTime.commands,e=e?Util.extend({},e,b.RunTime.subTpls):b.RunTime.subTpls,this.gen(a,null,c,d,e,{})},c.parse=function(a){return b.compiler.parse(a)},c.gen=function(a,b,d,e,f,g){if("string"==typeof a){c.debug&&console.log("[tpl ]\n",a);var h=this.parse(a);d=this.parseOptions(a,d);var i=this.gen(h,b,d,e,f,g);return i}if(b=b||[{}],d=d||{},a.type=a.type,this[a.type]!==Util.noop){d.__path=d.__path||[],c.debug&&(console.log(),console.group("["+a.type+"]",JSON.stringify(a)),console.log("[context]","[before]",b.length,JSON.stringify(b)),console.log("[options]","[before]",d.__path.length,JSON.stringify(d)),console.log("[other ]","[before]",JSON.stringify(g)));var j=d.__path.length;return this[a.type](a,b,d,e,f,g),c.debug&&console.log("[__path ]","[after ]",d.__path),(!g.hold||"function"==typeof g.hold&&!g.hold(a,d,b))&&d.__path.splice(j),c.debug&&(console.log("[context]","[after ]",b.length,JSON.stringify(b)),console.groupEnd()),b[b.length-1]}},c.parseOptions=function(a,b){var c,d,e,f=/<!--\s*\n*Mock\s*\n*([\w\W]+?)\s*\n*-->/g,g=a.match(f),h={};for(c=0;g&&c<g.length;c++)f.lastIndex=0,d=f.exec(g[c]),d&&(e=new Function("return "+d[1]),e=e(),Util.extend(h,e));return Util.extend(h,b)},c.parseVal=function(a,b){function c(a,b){if("object"==typeof b&&a in b)return[b[a]];for(var c=[],d=0;d<b.length;d++)c.push.apply(c,e(a,[b[d]]));return c}function d(a,b){if("object"==typeof b&&a in b)return[b[a]];var c=[];for(var d in b)c.push.apply(c,e(a,[b[d]]));return c}function e(a,b){for(var e=[],f=0;f<b.length;f++)"object"==typeof b[f]&&(a in b[f]?e.push(b[f][a]):e.push.apply(e,Util.isArray(b[f])?c(a,b[f]):d(a,b[f])));return e}function f(a,b){for(var c="string"==typeof a?a.split("."):a.slice(0),d=[b];c.length;)d=e(c.shift(),d);return d}return f(a,b)},c.val=function(b,d,e,f){if(b!==d.__path[d.__path.length-1])throw new Error(b+"!=="+d.__path);if(f!==a&&(f=Mock.mock(f)),d){var g=Mock.mock(d);if(Util.isString(g))return g;var h=c.parseVal(d.__path,g);if(h.length>0)return h[0];if(b in g)return g[b]}return Util.isArray(e[0])?{}:f!==a?f:b},c.program=function(a,b,c,d,e,f){for(var g=0;g<a.statements.length;g++)this.gen(a.statements[g],b,c,d,e,f);for(var h=0;a.inverse&&h<a.inverse.length;h++)this.gen(a.inverse[h],b,c,d,e,f)},c.block=function(b,c,d,e,f,g){var h=c.length;this.gen(b.tpl,c,d,e,f,Util.extend({},g,{def:{},hold:!0}));var i,j,k,l=c[0];if("array"===Util.type(l))for(i=this.val(d.__path[d.__path.length-1],d,c),k=i&&i.length||Random.integer(3,7),j=0;k>j;j++)l.push(i&&i[j]!==a?i[j]:{}),d.__path.push(j),c.unshift(l[l.length-1]),this.gen(b.program,c,d,e,f,g),d.__path.pop(),c.shift();else this.gen(b.program,c,d,e,f,g);(!g.hold||"function"==typeof g.hold&&!g.hold(b,d,c))&&c.splice(0,c.length-h)},c.tpl=function(a,b,c,d,e,f){if(a.params&&a.params.length){f=Util.extend({},f,{def:{each:[],"if":"@BOOL(2,1,true)",unless:"@BOOL(2,1,false)","with":{}}[a.path.string],hold:{each:!0,"if":function(a,b,c,d,e){return"object"==typeof e},unless:function(a,b,c,d,e){return"object"==typeof e},"with":!0,include:!1}[a.path.string]});for(var g,h=0;h<a.params.length;h++)g="include"===a.path.string?e&&e[a.params[h].value]:a.params[h],g&&this.gen(g,b,c,d,e,f);a.hash&&this.gen(a.hash,b,c,d,e,f)}else this.gen(a.path,b,c,d,e,f)},c.tplExpression=function(a,b,c,d,e,f){this.gen(a.expression,b,c,d,e,f)},c.content=Util.noop,c.unaryExpression=Util.noop,c.multiplicativeExpression=c.additiveExpression=function(b,c,d,e,f,g){this.gen(b.op1,c,d,e,f,Util.extend({},g,{def:function(){return"number"===b.op2.type?b.op2.value.indexOf(".")>-1?Random.float(-Math.pow(10,10),Math.pow(10,10),1,Math.pow(10,6)):Random.integer():a}()})),this.gen(b.op2,c,d,e,f,Util.extend({},g,{def:function(){return"number"===b.op1.type?b.op1.value.indexOf(".")>-1?Random.float(-Math.pow(10,10),Math.pow(10,10),1,Math.pow(10,6)):Random.integer():a}()}))},c.relationalExpression=function(a,b,c,d,e,f){this.gen(a.op1,b,c,d,e,f),this.gen(a.op2,b,c,d,e,f)},c.equalityExpression=Util.noop,c.conditionalAndExpression=Util.noop,c.conditionalOrExpression=Util.noop,c.string=Util.noop,c.number=Util.noop,c.boolean=Util.noop,c.hash=function(a,b,c,d,e,f){var g,h=a.value;for(g in h)this.gen(h[g],b,c,d,e,f)},c.id=function(b,d,e,f,g,h){function i(a,b,c,d,e){var f=Util.type(a[d]),g=Util.type(e);return e="true"===e?!0:"false"===e?!1:e,"undefined"===f?a[d]=c-1>b&&!Util.isObjectOrArray(e)?{}:Util.isArray(e)&&[]||e:c-1>b&&"object"!==f&&"array"!==f?a[d]=Util.isArray(e)&&[]||{}:"object"!==f&&"array"!==f&&"object"!==g&&"array"!==g&&(a[d]=e),a[d]}var j,k,l,m,n,o=d.length,p=b.parts,q=d[b.depth];for(Util.isArray(q)&&(q=d[b.depth+1]),j=0,k=p.length;k>j;j++)(0!==j||"this"!==p[j])&&(/^(xindex|xcount|xkey)$/.test(p[j])||0===j&&1===k&&p[j]in f||(e.__path.push(p[j]),l=p[j],m=j===k-1?h.def!==a?h.def:d[0][l]:{},n=this.val(l,e,d,m),c.debug&&(console.log("[def ]",JSON.stringify(m)),console.log("[val ]",JSON.stringify(n))),n=i(q,j,k,l,n),Util.isObjectOrArray(q[l])&&d.unshift(q=q[l])));(!h.hold||"function"==typeof h.hold&&!h.hold(b,e,d,l,n))&&d.splice(0,d.length-o)}}}.call(this)}).call(this);
//# sourceMappingURL=dist/mock-min.map

@@ -34,3 +34,3 @@ <!-- ## Mock.js -->

<a href="./dist/mock.js" class="btn btn-success w250">
Development Version (0.1.2)
Development Version (0.1.4)
</a> - <i>71kB, Uncompressed</i>

@@ -40,3 +40,3 @@ </p>

<a href="./dist/mock-min.js" class="btn btn-primary w250">
Production Version (0.1.2)
Production Version (0.1.4)
</a> - <i>31kB, Minified</i>

@@ -59,2 +59,6 @@ </p>

## 分享文档
* [懒懒交流会 2014.5.30](/doc/lanlan.html)
## 用法

@@ -61,0 +65,0 @@

@@ -34,3 +34,3 @@ <!-- ## Mock.js -->

<a href="./dist/mock.js" class="btn btn-success w250">
Development Version (0.1.2)
Development Version (0.1.4)
</a> - <i>71kB, Uncompressed</i>

@@ -40,3 +40,3 @@ </p>

<a href="./dist/mock-min.js" class="btn btn-primary w250">
Production Version (0.1.2)
Production Version (0.1.4)
</a> - <i>31kB, Minified</i>

@@ -59,2 +59,6 @@ </p>

## 分享文档
* [懒懒交流会 2014.5.30](/doc/lanlan.html)
## 用法

@@ -61,0 +65,0 @@

@@ -90,7 +90,8 @@ // UI

function stringify(tpl) {
tpl = tpl.replace(/^([\r\n]*)/i, '')
.replace(/([\r\n]*$)/i, '')
tpl = new Function('return ' + tpl)
tpl = tpl() || ''
tpl = JSON.stringify(tpl, null, tabSize)
tpl = js_beautify(tpl)
// tpl = tpl.replace(/^([\r\n]*)/i, '')
// .replace(/([\r\n]*$)/i, '')
// tpl = new Function('return ' + tpl)
// tpl = tpl() || ''
// tpl = JSON.stringify(tpl, null, tabSize)
tplEditor.setValue(tpl)

@@ -109,4 +110,9 @@ }

var data = Mock.mock(tpl) || ''
data = JSON.stringify(data, null, tabSize)
var data
try {
data = Mock.mock(tpl) || ''
data = JSON.stringify(data, null, tabSize)
} catch (error) {
data = error.toString()
}
$('textarea[name=data]').val(data)

@@ -124,4 +130,5 @@ dataEditor.setValue(data)

// Editor
var tplTextarea = $('textarea[name=tpl]')
var tplEditor = CodeMirror
.fromTextArea($('textarea[name=tpl]').get(0), {
.fromTextArea(tplTextarea.get(0), {
tabSize: tabSize,

@@ -140,3 +147,12 @@ tabMode: 'spaces', // or 'shift'

})
tplEditor.on('scroll', function(instance) {
var scrollInfo = tplEditor.getScrollInfo()
var percent = scrollInfo.top / (scrollInfo.height - scrollInfo.clientHeight)
var dataEditorScrollInfo = dataEditor.getScrollInfo()
var dataEditorTop = (dataEditorScrollInfo.height - dataEditorScrollInfo.clientHeight) * percent
dataEditor.scrollTo(dataEditorScrollInfo.left, dataEditorTop)
})
var dataEditor = CodeMirror

@@ -198,8 +214,11 @@ .fromTextArea($('textarea[name=data]').get(0), {

boolean2: '@BOOLEAN(1, 9, true)',
natural1: '@NATURAL',
natural2: '@NATURAL(10000)',
natural3: '@NATURAL(60, 100)',
integer1: '@INTEGER',
integer2: '@INTEGER(10000)',
integer3: '@INTEGER(60, 100)',
float1: '@FLOAT',

@@ -210,2 +229,3 @@ float2: '@FLOAT(0)',

float5: '@FLOAT(60, 100, 3, 5)',
character1: '@CHARACTER',

@@ -217,2 +237,3 @@ character2: '@CHARACTER("lower")',

character6: '@CHARACTER("aeiou")',
string1: '@STRING',

@@ -223,2 +244,3 @@ string2: '@STRING(5)',

string5: '@STRING("aeiou", 1, 3)',
range1: '@RANGE(10)',

@@ -228,4 +250,6 @@ range2: '@RANGE(3, 7)',

range4: '@RANGE(1, 10, 3)',
date: '@DATE',
time: '@TIME',
datetime1: '@DATETIME',

@@ -237,2 +261,3 @@ datetime2: '@DATETIME("yyyy-MM-dd A HH:mm:ss")',

datetime6: '@DATETIME("y-M-d H:m:s")',
now: '@NOW',

@@ -254,2 +279,3 @@ nowYear: '@NOW("year")',

image5: '@IMAGE("100x200", "#000", "#FFF", "png", "hello")',
dataImage1: '@DATAIMAGE',

@@ -269,8 +295,11 @@ dataImage2: '@DATAIMAGE("200x100")',

title3: '@TITLE(3, 5)',
word1: '@WORD',
word2: '@WORD(5)',
word3: '@WORD(3, 5)',
sentence1: '@SENTENCE',
sentence2: '@SENTENCE(5)',
sentence3: '@SENTENCE(3, 5)',
paragraph1: '@PARAGRAPH',

@@ -310,9 +339,13 @@ paragraph2: '@PARAGRAPH(2)',

capitalize2: '@CAPITALIZE("hello")',
upper1: '@UPPER',
upper2: '@UPPER("hello")',
lower1: '@LOWER',
lower2: '@LOWER("HELLO")',
pick1: '@PICK',
pick2: '@PICK("abc")',
pick3: '@PICK(["a", "b", "c"])',
shuffle1: '@SHUFFLE',

@@ -319,0 +352,0 @@ shuffle2: '@SHUFFLE(["a", "b", "c"])'

'use strict';
var Mock = require('./dist/mock.js')
// http://www.network-science.de/ascii/ doom
console.log(Mock.heredoc(function() {
/*
___ ___ _ _
| \/ | | | (_)
| . . | ___ ___ | | __ _ ___
| |\/| | / _ \ / __|| |/ / | |/ __|
| | | || (_) || (__ | < _ | |\__ \
\_| |_/ \___/ \___||_|\_\(_)| ||___/
_/ |
|__/
*/
}))
module.exports = function(grunt) {

@@ -11,2 +28,3 @@

files: ['Gruntfile.js', 'package.json', 'src/**/*.js', 'test/**/*.js',
'!src/xhr.js',
'!**/*-prefix.js', '!**/*-suffix.js'

@@ -20,11 +38,9 @@ ],

files: [
'test/mock.html', 'test/mock-*.html',
'test/mock4tpl.html', 'test/mock4tpl-*.html',
'test/mock4xtpl.html', 'test/mock4xtpl-*.html',
'test/**/*.html',
'!test/mock4xtpl.html'
'!test/mock4xtpl.html',
'!test/**/noop.*'
]
},
nodeunit: {
all: ['test/nodeuinit/*.js']
all: ['test/nodeunit/*.js' , '!test/**/noop.*']
},

@@ -38,3 +54,3 @@ watch: {

files: ['Gruntfile.js', 'doc/**/*.md', 'doc/template.html', '!doc/index.md'],
tasks: ['concat:doc', 'markdown:doc', 'copy:doc']
tasks: ['concat:doc', 'markdown:doc', 'cleaver', 'copy:doc']
},

@@ -135,2 +151,11 @@ build: {}

},
cleaver: {
lanlan: {
expand: true,
cwd: 'doc/',
src: ['lanlan.md'],
dest: 'doc/',
ext: '.htm'
}
},
copy: {

@@ -151,3 +176,3 @@ demo: {

expand: true,
src: ['dist/**', 'demo/**',
src: ['dist/**', 'demo/**', 'doc/**',
'node_modules/jquery/tmp/**',

@@ -203,3 +228,4 @@ 'node_modules/codemirror/**',

grunt.loadNpmTasks('grunt-exec')
grunt.loadNpmTasks('grunt-markdown');
grunt.loadNpmTasks('grunt-markdown')
grunt.loadNpmTasks('grunt-cleaver')

@@ -213,3 +239,3 @@ grunt.registerTask('base', [

grunt.registerTask('default', ['base', 'connect', 'watch:dev'])
grunt.registerTask('doc-base', ['concat:doc', 'markdown:doc', 'copy:doc', 'copy:kissy'])
grunt.registerTask('doc-base', ['concat:doc', 'markdown:doc', 'cleaver', 'copy:doc', 'copy:kissy'])
grunt.registerTask('doc', ['doc-base', 'connect', 'watch:doc'])

@@ -216,0 +242,0 @@

@@ -5,3 +5,3 @@ {

"description": "模拟请求 & 模拟数据",
"version": "0.1.2",
"version": "0.1.4",
"homepage": "http://mockjs.com/",

@@ -29,3 +29,3 @@ "keywords": [

"grunt-exec": "~0.4.2",
"jquery": "~1.8.3",
"jquery": "~2.1.1",
"handlebars": "~1.0.12",

@@ -41,3 +41,6 @@ "underscore": "~1.5.1",

"zepto": "0.0.4",
"time-grunt": "~0.3.1"
"time-grunt": "~0.3.1",
"grunt-cleaver": "~0.3.2",
"jsdom": "~0.10.5",
"xmlhttprequest": "~1.6.0"
},

@@ -60,3 +63,6 @@ "repository": {

}
]
],
"spm": {
"main": "dist/mock.js"
}
}

@@ -6,2 +6,3 @@ # Mock.js

[![NPM version](https://badge.fury.io/js/mockjs.png)](http://badge.fury.io/js/mockjs)
[![spm package](http://spmjs.io/badge/mockjs)](http://spmjs.io/package/mockjs)
[![Dependency Status](https://gemnasium.com/nuysoft/Mock.png)](https://gemnasium.com/nuysoft/Mock)

@@ -8,0 +9,0 @@ [![Bower version](https://badge.fury.io/bo/mockjs.png)](http://badge.fury.io/bo/mockjs)

@@ -38,3 +38,2 @@ /*

if (typeof KISSY != 'undefined') {
/*

@@ -46,5 +45,6 @@ KISSY.use('components/mock/index', function(S, Mock) {

Util.each([
'mock', 'components/mock/index', 'mock/dist/mock',
'gallery/Mock/0.1.1/index',
'gallery/Mock/0.1.2/index'
'mock', 'components/mock/', 'mock/dist/mock',
'gallery/Mock/0.1.1/',
'gallery/Mock/0.1.2/',
'gallery/Mock/0.1.3/',
], function register(name) {

@@ -51,0 +51,0 @@ KISSY.add(name, function(S) {

@@ -27,5 +27,7 @@ var Random = require('./random'),

[正则查看工具](http://www.regexper.com/)
#26 生成规则 支持 负数,例如 number|-100-100
*/
var rkey = /(.+)\|(?:\+(\d+)|(\d+-?\d*)?(?:\.(\d+-?\d*))?)/,
rrange = /(\d+)-?(\d+)?/,
var rkey = /(.+)\|(?:\+(\d+)|([\+\-]?\d+-?[\+\-]?\d*)?(?:\.(\d+-?\d*))?)/,
rrange = /([\+\-]?\d+)-?([\+\-]?\d+)?/,
rplaceholder = /\\*@([^@#%&()\?\s\/\.]+)(?:\((.*?)\))?/g; // (^(?:.|\r|\n)*?)

@@ -198,3 +200,4 @@

object: function(options) {
var result = {}, keys, key, parsedKey, inc, i;
var result = {},
keys, fnKeys, key, parsedKey, inc, i;

@@ -220,3 +223,23 @@ // 'obj|min-max': {}

// 'obj': {}
keys = []
fnKeys = [] // #25 改变了非函数属性的顺序,查找起来不方便
for (key in options.template) {
(typeof options.template[key] === 'function' ? fnKeys : keys).push(key)
}
keys = keys.concat(fnKeys)
/*
会改变非函数属性的顺序
keys = Util.keys(options.template)
keys.sort(function(a, b) {
var afn = typeof options.template[a] === 'function'
var bfn = typeof options.template[b] === 'function'
if (afn === bfn) return 0
if (afn && !bfn) return 1
if (!afn && bfn) return -1
})
*/
for (i = 0; i < keys.length; i++) {
key = keys[i]
parsedKey = key.replace(rkey, '$1')

@@ -330,9 +353,21 @@ options.context.path.push(parsedKey)

// 解析占位符的参数
try {
// 1. 尝试保持参数的类型
/*
#24 [Window Firefox 30.0 引用 占位符 抛错](https://github.com/nuysoft/Mock/issues/24)
[BX9056: 各浏览器下 window.eval 方法的执行上下文存在差异](http://www.w3help.org/zh-cn/causes/BX9056)
应该属于 Window Firefox 30.0 的 BUG
*/
/* jshint -W061 */
eval('!function(){ params = [].splice.call(arguments, 0 ) }(' + params + ')')
} catch (e) {
params = parts[2].split(/,\s*/);
params = eval('(function(){ return [].splice.call(arguments, 0 ) })(' + params + ')')
} catch (error) {
// 2. 如果失败,只能解析为字符串
// console.error(error)
// if (error instanceof ReferenceError) params = parts[2].split(/,\s*/);
// else throw error
params = parts[2].split(/,\s*/)
}
// 占位符优先引用数据模板中的属性
if (obj && (key in obj)) return obj[key]

@@ -339,0 +374,0 @@

@@ -6,4 +6,2 @@ var KISSY = require('kissy'),

// KISSY.Config.debug = false
// BEGIN(BROWSER)

@@ -115,3 +113,4 @@ (function(undefined) {

var comments = input.match(rComment),
ret = {}, i, ma, option;
ret = {},
i, ma, option;
for (i = 0; comments && i < comments.length; i++) {

@@ -155,8 +154,8 @@ rComment.lastIndex = 0

for (var i = 0; i < set.length; i++) {
if (typeof set[i] !== 'object') continue
if (prop in set[i]) ret.push(set[i][prop])
if (typeof set [i] !== 'object') continue
if (prop in set [i]) ret.push(set [i][prop])
else {
ret.push.apply(ret, Util.isArray(set[i]) ?
queryArray(prop, set[i]) :
queryObject(prop, set[i]))
ret.push.apply(ret, Util.isArray(set [i]) ?
queryArray(prop, set [i]) :
queryObject(prop, set [i]))
}

@@ -381,3 +380,3 @@ }

TODO 过滤掉 this、内置占位符(xindex、xcount、xkey)、helper,
然而万全之策是先检查 options 中是否存在对应的配置,如果没有则忽略,如果有责生成。
然而万全之策是先检查 options 中是否存在对应的配置,如果没有则忽略,如果有则生成。
不过,在应用中不建议覆盖内置占位符。

@@ -384,0 +383,0 @@ TODO 遇到 xindex、xcount 要修正为数组

var Mock = require('./mock');
var Util = require('./util')
// BEGIN(BROWSER)
function find(options) {
for (var sUrlType in Mock._mocked) {
var item = Mock._mocked[sUrlType]
if (
(!item.rurl || match(item.rurl, options.url)) &&
(!item.rtype || match(item.rtype, options.type.toLowerCase()))
) {
// console.log('[mock]', options.url, '>', item.rurl)
return item
}
}
function match(expected, actual) {
if (Util.type(expected) === 'string') {
return expected === actual
}
if (Util.type(expected) === 'regexp') {
return expected.test(actual)
}
}
}
function convert(item, options) {
return Util.isFunction(item.template) ?
item.template(options) : Mock.mock(item.template)
}
/*

@@ -15,45 +46,36 @@ ### Mock.mockjax(library)

return {
readyState: 4,
status: 200,
statusText: '',
open: jQuery.noop,
send: jQuery.noop,
send: function() {
this.onload()
},
setRequestHeader: jQuery.noop,
getAllResponseHeaders: jQuery.noop,
readyState: 4,
status: 200
getResponseHeader: jQuery.noop,
statusCode: jQuery.noop,
abort: jQuery.noop
}
}
function convert(item, options) {
return function() {
return jQuery.isFunction(item.template) ?
item.template(options) : Mock.mock(item.template)
}
}
function prefilter(options, originalOptions, jqXHR) {
function match(expected, actual) {
if (jQuery.type(expected) === 'string') {
return expected === actual
var item = find(options)
if (item) {
options.dataFilter =
options.converters['text json'] =
options.converters['text jsonp'] =
options.converters['text script'] =
options.converters['script json'] = function() {
return convert(item, options)
}
if (jQuery.type(expected) === 'regexp') {
return expected.test(actual)
}
}
options.xhr = mockxhr
for (var sUrlType in Mock._mocked) {
var item = Mock._mocked[sUrlType]
if (
(!item.rurl || match(item.rurl, options.url)) &&
(!item.rtype || match(item.rtype, options.type.toLowerCase()))
) {
options.dataFilter = convert(item, options)
options.converters['text json'] = convert(item, options)
options.converters['text jsonp'] = convert(item, options)
options.xhr = mockxhr
break
}
if (originalOptions.dataType !== 'script') return 'json'
}
}
jQuery.ajaxPrefilter("json", prefilter)
jQuery.ajaxPrefilter("jsonp", prefilter)
// #22 步加载js文件的时候发现问题
// #23 Mock.mockjax 导致 $.getScript 不执行回调
jQuery.ajaxPrefilter('json jsonp script', prefilter)

@@ -78,24 +100,10 @@ return Mock

status: 200,
statusText: "success",
statusText: 'success',
timeoutTimer: null
}
/**
* @param options
* return xhr
*/
Zepto.ajax = function(options) {
for (var surl in Mock._mocked) {
var mock = Mock._mocked[surl]
if (Zepto.type(mock.rurl) === 'string') {
if (mock.rurl !== options.url) continue
}
if (Zepto.type(mock.rurl) === 'regexp') {
if (!mock.rurl.test(options.url)) continue
}
console.log('[mock]', options.url, '>', mock.rurl)
var data = Mock.mock(mock.template)
console.log('[mock]', data)
var item = find(options)
if (item) {
var data = Mock.mock(item.template)
if (options.success) options.success(data, xhr, options)

@@ -105,3 +113,2 @@ if (options.complete) options.complete(xhr.status, xhr, options)

}
return __original_ajax.call(Zepto, options)

@@ -119,3 +126,3 @@ }

// @白汀 提交:次对象用于模拟kissy的io响应之后的传给success方法的xhr对象,只构造了部分属性,不包含实际KISSY中的完整对象。
// @白汀 提交:此对象用于模拟 KISSY.io 响应之后的传给 success 方法的 xhr 对象,只构造了部分属性,不包含实际 KISSY 中的完整对象。
var xhr = {

@@ -127,25 +134,14 @@ readyState: 4,

status: 200,
statusText: "success",
statusText: 'success',
timeoutTimer: null
};
KISSY.io = function(options) {
// if (options.dataType === 'json') {
for (var surl in Mock._mocked) {
var mock = Mock._mocked[surl];
if (KISSY.type(mock.rurl) === 'string') {
if (mock.rurl !== options.url) continue
}
if (KISSY.type(mock.rurl) === 'regexp') {
if (!mock.rurl.test(options.url)) continue
}
console.log('[mock]', options.url, '>', mock.rurl)
var data = Mock.mock(mock.template)
console.log('[mock]', data)
if (options.success) options.success(data, 'success', xhr)
if (options.complete) options.complete(data, 'success', xhr)
return KISSY
var item = find(options)
if (item) {
var data = Mock.mock(item.template)
if (options.success) options.success(data, xhr, options)
if (options.complete) options.complete(xhr.status, xhr, options)
return xhr
}
// }
return _original_ajax.apply(this, arguments)

@@ -158,4 +154,5 @@ }

}
}
}
// END(BROWSER)
module('mock')
test('array', function() {
function t(name, min, max) {
var tpl = {}
tpl[name] = [{}]
function t(name, min, max) {
var tpl = {}
tpl[name] = [{}]
var data = Mock.mock(tpl)
ok(data.list.length >= min && data.list.length <= max, name)
}
t('list|1', 1, 1)
t('list|10', 10, 10)
t('list|5-10', 5, 10)
var data = Mock.mock(tpl)
ok(data.list.length >= min && data.list.length <= max, name)
}
t('list|1', 1, 1)
t('list|10', 10, 10)
t('list|5-10', 5, 10)
})
test('float', function() {
function t(name, value, min, max, dmin, dmax) {
var tpl = {}
tpl[name] = value
function t(name, value, min, max, dmin, dmax) {
var tpl = {}
tpl[name] = value
var data = Mock.mock(tpl)
ok(data.float >= min && data.float < max, name)
var data = Mock.mock(tpl)
ok(data.float >= min && data.float < max, name + ' ' + data.float)
var sfloat = data.float + '',
decimal = sfloat.slice(sfloat.indexOf('.') + 1);
ok(decimal.length >= dmin && decimal.length <= dmax, name)
}
var sfloat = data.float + '',
decimal = sfloat.slice(sfloat.indexOf('.') + 1);
ok(decimal.length >= dmin && decimal.length <= dmax, name)
}
t('float|.1-10', 10, 10, 11, 1, 10)
t('float|.3-10', 123.123, 123, 124, 3, 10)
t('float|20-100.1-10', 10, 20, 100, 1, 10)
t('float|99.1-10', 10, 99, 100, 1, 10)
t('float|.1-10', 10, 10, 11, 1, 10)
t('float|.3-10', 123.123, 123, 124, 3, 10)
t('float|20-100.1-10', 10, 20, 100, 1, 10)
t('float|99.1-10', 10, 99, 100, 1, 10)
})
test('integer', function() {
function t(name, value, min, max) {
var tpl = {}
tpl[name] = value
function t(name, value, min, max) {
var tpl = {}
tpl[name] = value
var data = Mock.mock(tpl)
ok(data.integer != value && data.integer >= min && data.integer <= max, name)
}
var data = Mock.mock(tpl)
ok(data.integer != value && data.integer >= min && data.integer <= max, name)
}
t('integer|2-100', 1, 2, 100)
t('integer|100-2', 1, 2, 100)
t('integer|2-2', 1, 2, 2)
t('integer|2-100', 1, 2, 100)
t('integer|100-2', 1, 2, 100)
t('integer|2-2', 1, 2, 2)
})
test('string', function() {
function t(name, value, min, max) {
var tpl = {}
tpl[name] = value
function t(name, value, min, max) {
var tpl = {}
tpl[name] = value
var data = Mock.mock(tpl)
ok(data.string.length >= min && data.string.length <= max, name)
}
var data = Mock.mock(tpl)
ok(data.string.length >= min && data.string.length <= max, name)
}
t('string|1-10', '★号', 2, 20)
t('string|10', '★号', 20, 20)
t('string|1-10', '★号', 2, 20)
t('string|10', '★号', 20, 20)
})
test('boolen', function() {
var data = Mock.mock({
'bool|0-1': false
});
ok(data.bool === true || data.bool === false);
var data = Mock.mock({
'bool|0-1': false
});
ok(data.bool === true || data.bool === false);
})
test('holder', function() {
function t(value) {
var tpl = {
holder: value
function t(value) {
var tpl = {
holder: value
}
var data = Mock.mock(tpl)
ok(data)
// console.log(value, data.holder)
}
var data = Mock.mock(tpl)
ok(data)
// console.log(value, data.holder)
}
t('@EMAIL')
t('@DATE')
t('@TIME')
t('@DATETIME')
t('@EMAIL')
t('@DATE')
t('@TIME')
t('@DATETIME')
})
test('ajax', function() {
Mock.mock(/\.json/, {
'list|1-10': [{
'id|+1': 1
}]
})
stop()
$.ajax({
url: 'data.json',
dataType: 'json',
success: function(data) {
// console.log(arguments)
ok(data.list.length >= 1, 'data.json')
},
fail: function() {
ok(false, 'data.json')
},
complete: function() {
start()
Mock.mock(/\.json/, {
'list|1-10': [{
'id|+1': 1
}]
})
stop()
if (window.$) {
$.ajax({
url: 'data.json',
dataType: 'json',
success: function(data) {
// console.log(arguments)
ok(data.list.length >= 1, 'data.json')
},
fail: function() {
ok(false, 'data.json')
},
complete: function() {
start()
}
})
} else {
expect(0)
start()
}
})
})
// @麦少 提供的 TC
test('jsonp', function() {
Mock.mock(/\.json/, {
'list|1-10': [{
'id|+1': 1
}]
})
stop()
if (window.$) {
$.ajax({
url: 'data.json',
dataType: 'jsonp',
success: function(data) {
ok(data.list.length >= 1, 'data.json')
},
fail: function() {
ok(false, 'data.json')
},
complete: function() {
start()
}
})
} else {
expect(0)
start()
}
})

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc