Advertisement
cosname

Javascript Object InputOutputter

Nov 14th, 2013
299
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var someObject = {
  2.     'part1' : {
  3.         'name': 'Part 1',
  4.         'size': '20',
  5.         'qty' : '50'
  6.     },
  7.     'part2' : {
  8.         'name': 'Part 2',
  9.         'size': '15',
  10.         'qty' : '60'
  11.     },
  12.     'part3' : [
  13.         {
  14.             'name': 'Part 3A РУКУ!!!',
  15.             'size': '10',
  16.             'qty' : '20'
  17.         }, {
  18.             'name': 'Part 3B',
  19.             'size': '5',
  20.             'qty' : '20'
  21.         }, {
  22.             'name': 'Part 3C',
  23.             'size': '7.5',
  24.             'qty' : '20'
  25.         }
  26.     ]
  27. };
  28.  
  29. //var o = {}, c = window.Configure = {}, seperator = '.';
  30.  
  31. var c = function(){
  32.     this.o = {};
  33.     this.seperator = ".";
  34.     this.set = function(obj){
  35.         this.o = obj;
  36.     }
  37.     this.write = function(p, d) {
  38.         p = p.replace(/\[(\w+)\]/g, '.$1'); // convert indexes to properties
  39.         p = p.replace(/^\./, ''); // strip leading dot
  40.         // Split the path to an array and assaign the object
  41.         // to a local variable
  42.         var ps = p.split(this.seperator), co = this.o;
  43.  
  44.         // Iterate over the paths, skipping the last one
  45.         for(var i = 0; i < ps.length - 1; i++)
  46.         {
  47.             // Grab the next path's value, creating an empty
  48.             // object if it does not exist
  49.             co = (co[ps[i]])? co[ps[i]] : co[ps[i]] = {};
  50.         }
  51.  
  52.         // Assign the value to the object's last path
  53.         co[ps[ps.length - 1]] = d;
  54.     }
  55.     this.read = function(p) {
  56.         p = p.replace(/\[(\w+)\]/g, '.$1'); // convert indexes to properties
  57.         p = p.replace(/^\./, ''); // strip leading dot
  58.         var ps = p.split(this.seperator), co = this.o;
  59.         /*
  60.         for(var i = 0; i < ps.length; i++)
  61.         {
  62.             co = (co[ps[i]])? co[ps[i]] : co[ps[i]] = {};
  63.         }
  64.         */
  65.         while (ps.length) {
  66.             var n = ps.shift();
  67.             if (n in co) {
  68.                 co = co[n];
  69.             } else {
  70.                 return;
  71.             }
  72.         }
  73.         return co;
  74.     }
  75.    
  76. };
  77.  
  78. var n = new c();
  79. n.set(someObject);
  80. console.log('whas');
  81. console.log('n.read part.name', n.read('part1.name'));
  82. n.write('part3[0].name', "custom var");
  83. console.log('part1.name now changed');
  84. n.write('part1.name', "tmp");
  85. console.log('n.read part.name', n.read('part1.name'));
  86. console.log('----');
  87. console.log('before', someObject);
  88. console.log('someObject.part1.name', someObject.part1.name);
  89. console.log('someObject.part3[0].name', someObject.part3[0].name);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement