ca0v

quicklib.js

Aug 15th, 2012
160
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var $ = {
  2.     crudify: function (store, query, crud)
  3.     {
  4.         if (null == crud)
  5.         {
  6.             crud = query;
  7.             query = store;
  8.             store = null;
  9.         }
  10.         if (store)
  11.         {
  12.             query = store.query(query);
  13.         }
  14.         query.observe(function (row, deleteIndex, insertIndex)
  15.         {
  16.             var del = (0 <= deleteIndex), ins = (0 <= insertIndex);
  17.             !del && ins && crud.c && crud.c(row);
  18.             del && ins && crud.u && crud.u(row);
  19.             del && !ins && crud.d && crud.d(row);
  20.         }, !!crud.u);
  21.     },
  22.  
  23.     get : function ( item, keys )
  24.     {
  25.         var i, j;
  26.         for ( i = 0, j = keys.length; i < j; i++ )
  27.         {
  28.             item = item[ keys[ i ] ];
  29.             if ( undefined === item )
  30.             {
  31.                 break;
  32.             }
  33.         }
  34.         return item;
  35.     },
  36.  
  37.     set : function ( item, keys, value )
  38.     {
  39.         var i, j, key;
  40.         for ( i = 0, j = keys.length - 1; i <= j; i++ )
  41.         {
  42.             key = keys[ i ];
  43.             item = item[ key ] = ( i === j ) ? value : ( item[ key ] || [] );
  44.         }
  45.         return value;
  46.     },
  47.  
  48.     delay : function ( timeout, id, callback )
  49.     {
  50.         this.delays = this.delays || [];
  51.         var delay = this.delays[ id ];
  52.         if ( delay )
  53.         {
  54.             clearTimeout ( delay );
  55.         }
  56.         delay = setTimeout ( callback, timeout );
  57.         this.delays[ id ] = delay;
  58.     },
  59.  
  60.     range : function ( min, max )
  61.     {
  62.         var result = [];
  63.         while ( min <= max )
  64.         {
  65.             result.push ( min++ );
  66.         }
  67.         return result;
  68.     }
  69. };
  70.  
  71. var array = {
  72.  
  73.     every: function (array, test)
  74.     {
  75.         for (var i = 0; i < array.length; i++)
  76.         {
  77.             if (!test(array[i], i, array))
  78.                 return false;
  79.         }
  80.         return true;
  81.     },
  82.  
  83.     filter: function (array, test)
  84.     {
  85.         var result = [];
  86.         for (var i = 0; i < array.length; i++)
  87.         {
  88.             test(array[i], i, array) && result.push(array[i]);
  89.         }
  90.         return result;
  91.     },
  92.  
  93.     map: function (array, mapper)
  94.     {
  95.         var result = [];
  96.         for (var i = 0; i < array.length; i++)
  97.         {
  98.             result.push(mapper(array[i], i, array));
  99.         }
  100.         return result;
  101.     },
  102.  
  103.     forEach: function (array, mapper)
  104.     {
  105.         for (var i = 0; i < array.length; i++)
  106.         {
  107.             mapper(array[i], i, array);
  108.         }
  109.     }
  110. };
  111.  
  112. var lang = {
  113.  
  114.     mixin: function (to, from)
  115.     {
  116.         for (var key in from)
  117.         {
  118.             if (from.hasOwnProperty(key))
  119.             {
  120.                 to[key] = from[key];
  121.             }
  122.         }
  123.         return to;
  124.     }
  125. };
  126.  
  127. var string = {
  128.  
  129.     substitute: function (pattern, map)
  130.     {
  131.         for (var key in map)
  132.         {
  133.             if (map.hasOwnProperty(key))
  134.             {
  135.                 pattern = pattern.replace("${" + key + "}", map[key]);
  136.             }
  137.         }
  138.         return pattern;
  139.     }
  140. };
RAW Paste Data