12345 |
- // -- Sammy.js -- /plugins/sammy.nested_params.js
- // http://sammyjs.org
- // Version: 0.7.6
- // Built: 2014-08-26 10:45:33 +0300
- (function(factory){if(typeof define==="function"&&define.amd){define(["jquery","sammy"],factory)}else{(window.Sammy=window.Sammy||{}).NestedParams=factory(window.jQuery,window.Sammy)}})(function($,Sammy){function parseValue(value){value=unescape(value);if(value==="true"){return true}else if(value==="false"){return false}else{return value}}function parseNestedParam(params,field_name,field_value){var match,name,rest;if(field_name.match(/^[^\[]+$/)){params[field_name]=parseValue(field_value)}else if(match=field_name.match(/^([^\[]+)\[\](.*)$/)){name=match[1];rest=match[2];if(params[name]&&!$.isArray(params[name])){throw"400 Bad Request"}if(rest){match=rest.match(/^\[([^\]]+)\](.*)$/);if(!match){throw"400 Bad Request"}if(params[name]){if(params[name][params[name].length-1][match[1]]){params[name].push(parseNestedParam({},match[1]+match[2],field_value))}else{$.extend(true,params[name][params[name].length-1],parseNestedParam({},match[1]+match[2],field_value))}}else{params[name]=[parseNestedParam({},match[1]+match[2],field_value)]}}else{if(params[name]){params[name].push(parseValue(field_value))}else{params[name]=[parseValue(field_value)]}}}else if(match=field_name.match(/^([^\[]+)\[([^\[]+)\](.*)$/)){name=match[1];rest=match[2]+match[3];if(params[name]&&$.isArray(params[name])){throw"400 Bad Request"}if(params[name]){$.extend(true,params[name],parseNestedParam(params[name],rest,field_value))}else{params[name]=parseNestedParam({},rest,field_value)}}return params}Sammy.NestedParams=function(app){app._parseParamPair=parseNestedParam};return Sammy.NestedParams});
|