UNPKG

music21j-port

Version:

A toolkit for computer-aided musicology, Javascript version

9 lines (8 loc) 10.2 kB
/** * jsonpickle.js 1.0.0 built on * 2016-09-02. * Copyright (c) 2013-2016 Michael Scott Cuthbert and cuthbertLab * * http://github.com/cuthbertLab/jsonpickleJS */ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):a.jsonpickle=b()}(this,function(){"use strict";var a={ID:"py/id",OBJECT:"py/object",TYPE:"py/type",REPR:"py/repr",REF:"py/ref",TUPLE:"py/tuple",SET:"py/set",SEQ:"py/seq",STATE:"py/state",JSON_KEY:"json://"};a.RESERVED=[a.ID,a.OBJECT,a.TYPE,a.REPR,a.REF,a.TUPLE,a.SET,a.SEQ,a.STATE,a.JSON_KEY],a.PY_CLASS="_py_class";var b="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol?"symbol":typeof a},c=function(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")},d=function(){function a(a,b){for(var c=0;c<b.length;c++){var d=b[c];d.enumerable=d.enumerable||!1,d.configurable=!0,"value"in d&&(d.writable=!0),Object.defineProperty(a,d.key,d)}}return function(b,c,d){return c&&a(b.prototype,c),d&&a(b,d),b}}(),e={};e.merge=function(a,b){if(void 0===b)return a;for(var c in b)({}).hasOwnProperty.call(b,c)&&(a[c]=b[c]);return a},e.PRIMITIVES=["string","number","boolean"],e.is_type=function(a){return!1},e.is_object=function(a){return e.is_dictionary(a)},e.is_primitive=function(a){return void 0===a||null==a||e.PRIMITIVES.indexOf("undefined"==typeof a?"undefined":b(a))!==-1},e.is_dictionary=function(a){return"object"===("undefined"==typeof a?"undefined":b(a))&&null!==a},e.is_sequence=function(a){return e.is_list(a)||e.is_set(a)||e.is_tuple(a)},e.is_list=function(a){return a instanceof Array},e.is_set=function(a){return!1},e.is_tuple=function(a){return!1},e.is_dictionary_subclass=function(a){return!1},e.is_sequence_subclass=function(a){return!1},e.is_noncomplex=function(a){return!1},e.is_function=function(a){return"function"==typeof a},e.is_module=function(a){return!1},e.is_picklable=function(b,c){return a.RESERVED.indexOf(b)===-1&&!e.is_function(c)},e.is_installed=function(a){return!0},e.is_list_like=function(a){return e.is_list(a)};var f={"fractions.Fraction":{restore:function(a){return a._numerator/a._denominator}}},g={};g.decode=function(a,b,c){var d={keys:!1,safe:!1,reset:!0,backend:JSON};e.merge(d,c);var h={};e.merge(h,f),e.merge(h,b);var i=void 0;if(void 0===d.context){var j={keys:d.keys,backend:d.backend,safe:d.safe};i=new g.Unpickler(j,h)}else i=d.context;var k=d.backend.parse(a);return i.restore(k,d.reset)};var h=function(){function b(a,d){c(this,b);var f={keys:!1,safe:!1};e.merge(f,a),this.keys=f.keys,this.safe=f.safe,this.handlers=d,this._namestack=[],this._obj_to_idx={},this._objs=[]}return d(b,[{key:"reset",value:function(){this._namestack=[],this._obj_to_idx={},this._objs=[]}},{key:"restore",value:function(a,b){return b&&this.reset(),this._restore(a)}},{key:"_restore",value:function(b){var c=g.has_tag,d=function(a){return a};return c(b,a.ID)?d=this._restore_id.bind(this):c(b,a.REF)||(c(b,a.TYPE)?d=this._restore_type.bind(this):c(b,a.REPR)||(c(b,a.OBJECT)?d=this._restore_object.bind(this):c(b,a.TUPLE)?d=this._restore_tuple.bind(this):c(b,a.SET)?d=this._restore_set.bind(this):e.is_list(b)?d=this._restore_list.bind(this):e.is_dictionary(b)&&(d=this._restore_dict.bind(this)))),d(b)}},{key:"_restore_id",value:function(b){return this._objs[b[a.ID]]}},{key:"_restore_type",value:function(b){var c=g.loadclass(b[a.TYPE]);return void 0===c?b:c}},{key:"_restore_object",value:function(b){var c=b[a.OBJECT],d=this.handlers[c];if(void 0!==d&&void 0!==d.restore){var e=d.restore(b);return e[a.PY_CLASS]=c,this._mkref(e)}var f=g.loadclass(c);if(void 0===f)return b[a.PY_CLASS]=c,this._mkref(b);var h=this._restore_object_instance(b,f);return h[a.PY_CLASS]=c,void 0!==d&&void 0!==d.post_restore?d.post_restore(h):h}},{key:"_loadfactory",value:function(a){var b=a.default_factory;return void 0===b?void 0:(a.default_factory=void 0,this._restore(b))}},{key:"_restore_object_instance",value:function(a,b){var c=g.getargs(a);c.length>0&&(c=this._restore(c));var d=g.construct(b,c);return this._mkref(d),this._restore_object_instance_variables(a,d)}},{key:"_restore_object_instance_variables",value:function(b,c){var d=g.has_tag,e=this._restore_key_fn(),f=[];for(var h in b)({}).hasOwnProperty.call(b,h)&&f.push(h);f.sort();for(var i=0;i<f.length;i++){var j=f[i];if(a.RESERVED.indexOf(j)===-1){var k=b[j];this._namestack.push(j),j=e(j);var l=void 0;void 0!==k&&null!==k&&(l=this._restore(k)),c[j]=l,this._namestack.pop()}}if(d(b,a.SEQ)&&void 0!==c.push)for(var m in b[a.SEQ])({}).hasOwnProperty.call(b[a.SEQ],m)&&c.push(this._restore(m));return d(b,a.STATE)&&(c=this._restore_state(b,c)),c}},{key:"_restore_state",value:function(b,c){if(void 0!==c.__setstate__){var d=this._restore(b[a.STATE]);c.__setstate__(d)}else c=this._restore_object_instance_variables(b[a.STATE],c);return c}},{key:"_restore_list",value:function(a){var b=[];this._mkref(b);for(var c=[],d=0;d<a.length;d++){var e=a[d],f=this._restore(e);c.push(f)}return b.push.apply(b,c),b}},{key:"_restore_tuple",value:function(b){for(var c=[],d=b[a.TUPLE],e=0;e<d.length;e++)c.push(this._restore(d[e]));return c}},{key:"_restore_set",value:function(b){for(var c=[],d=b[a.SET],e=0;e<d.length;e++)c.push(this._restore(d[e]));return c}},{key:"_restore_dict",value:function(a){var b={},c=[];for(var d in a)({}).hasOwnProperty.call(a,d)&&c.push(d);c.sort();for(var e=0;e<c.length;e++){var f=c[e],g=a[f];this._namestack.push(f),b[f]=this._restore(g),this._namestack.pop()}return b}},{key:"_restore_key_fn",value:function(){var b=this;return this.keys?function(c){return 0===c.indexOf(a.JSON_KEY)?c=g.decode(c.slice(a.JSON_KEY.length),b.handlers,{context:b,keys:b.keys,reset:!1}):c}:function(a){return a}}},{key:"_mkref",value:function(a){return this._objs.push(a),a}}]),b}();g.Unpickler=h,g.getargs=function(b){var c=b[a.SEQ],d=b[a.OBJECT];if(void 0===c||void 0===d)return[];var e=g.loadclass(d);return void 0===e?[]:void 0!==e._fields&&e._fields.length===c.length?c:[]},g.loadclass=function(a){var b="__main__.";0===a.indexOf(b)&&(a=a.slice(b.length));for(var c=window,d=a.split("."),e=0;e<d.length;e++){var f=d[e];if(c=c[f],void 0===c)return c}return c},g.has_tag=function(a,c){return"object"===("undefined"==typeof a?"undefined":b(a))&&null!==a&&void 0!==a[c]},g.construct=function(a,b){function c(){return a.apply(this,b)}return c.prototype=a.prototype,new c};var i={};i.encode=function(a,b){var c={unpicklable:!1,make_refs:!0,keys:!1,max_depth:void 0,reset:!0,backend:void 0,context:void 0};if(e.merge(c,b),void 0===c.context){var d={unpicklable:c.unpicklable,make_refs:c.make_refs,keys:c.keys,backend:c.backend,max_depth:c.max_depth};c.context=new i.Pickler(d);var f=c.context.flatten(a,c.reset);return JSON.stringify(f)}};var j=function(){function g(a){c(this,g);var b={unpicklable:!0,make_refs:!0,max_depth:void 0,backend:void 0,keys:!1};e.merge(b,a),this.unpicklable=b.unpicklable,this.make_refs=b.make_refs,this.backend=b.backend,this.keys=b.keys,this._depth=-1,this._max_depth=b.max_depth,this._objs=[],this._seen=[]}return d(g,[{key:"reset",value:function(){this._objs=[],this._depth=-1,this._seen=[]}},{key:"_push",value:function(){this._depth+=1}},{key:"_pop",value:function(a){return this._depth-=1,this._depth===-1&&this.reset(),a}},{key:"_mkref",value:function(a){var b=this._get_id_in_objs(a);return b===-1&&(this._objs.push(a),!0)}},{key:"_get_id_in_objs",value:function(a){for(var b=this._objs.length,c=0;c<b;c++)if(a===this._objs[c])return c;return-1}},{key:"_getref",value:function(b){var c={};return c[a.ID]=this._get_id_in_objs(b),c}},{key:"flatten",value:function(a,b){void 0===b&&(b=!0),b&&this.reset();var c=this._flatten(a);return console.log(this._objs),c}},{key:"_flatten",value:function(a){return this._push(),this._pop(this._flatten_obj(a))}},{key:"_flatten_obj",value:function(a){this._seen.push(a);var b=this._depth===this._max_depth;if(b||this.make_refs===!1&&this._get_id_in_objs(a)!==-1)return toString(a);var c=this._get_flattener(a);return c.call(this,a)}},{key:"_list_recurse",value:function(a){for(var b=[],c=0;c<a.length;c++)b.push(this._flatten(a[c]));return b}},{key:"_get_flattener",value:function(c){var d=this;return e.is_primitive(c)?function(a){return a}:e.is_list(c)?this._mkref(c)?this._list_recurse:(this._push(),this._getref):e.is_tuple(c)?this.unpicklable?function(b){var c={};c[a.TUPLE]=d._list_recurse(b)}:this._list_recurse:e.is_set(c)?this.unpicklable?function(b){var c={};c[a.SET]=d._list_recurse(b)}:this._list_recurse:e.is_object(c)?this._ref_obj_instance:void console.log("no flattener for ",c," of type ","undefined"==typeof c?"undefined":b(c))}},{key:"_ref_obj_instance",value:function(a){return this._mkref(a)?this._flatten_obj_instance(a):this._getref(a)}},{key:"_flatten_obj_instance",value:function(b){var c={},d=void 0!==b[a.PY_CLASS],g=!0,h=void 0!==b.__getstate__;if(d&&e.is_module(b)===!1){var j=i._getclassdetail(b);this.unpicklable&&(c[a.OBJECT]=j,console.log(c));var k=f[j];void 0!==k&&k.flatten(b,c)}if(e.is_module(b),e.is_dictionary_subclass(b),g)return e.is_sequence_subclass(b),h?this._getstate(b,c):this._flatten_dict_obj(b,c)}},{key:"_flatten_dict_obj",value:function(b,c){void 0===c&&(c=new b.prototype.constructor);var d=[];for(var e in b)({}).hasOwnProperty.call(b,e)&&d.push(e);for(var f=0;f<d.length;f++){var g=d[f],h=b[g];g!==a.PY_CLASS&&this._flatten_key_value_pair(g,h,c)}return c}},{key:"_flatten_key_value_pair",value:function(a,b,c){return e.is_picklable(a,b)===!1?c:(c[a]=this._flatten(b),c)}},{key:"_getstate",value:function(b,c){var d=this._flatten_obj(b.__getstate__());return this.unpicklable?c[a.STATE]=d:c=d,c}},{key:"_getclassdetail",value:function(b){return b[a.PY_CLASS]}}]),g}();i.Pickler=j;var k={};return k.pickler=i,k.unpickler=g,k.util=e,k.tags=a,k.handlers=f,k.encode=function(a,b,c,d,e,f){void 0===b&&(b=!0),void 0===c&&(c=!0),void 0===d&&(d=!1);var g={unpicklable:b,make_refs:c,keys:d,max_depth:e,backend:f};return i.encode(a,g)},k.decode=function(a,b,c){return void 0===c&&(c=!1),g.decode(a,b,c)},window.jsonpickle={},k}); //# sourceMappingURL=jsonpickle.min.js.map