Advertisement
jargon

Glow JS 0-01 Associative Array (broken)

Aug 28th, 2016
520
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /** Glow JS 0-01 Associative Array by Timothy Robert Keal **/
  2.  
  3. function array_dump_this(element,index,array){
  4.     document.write('<font color="green">a[<font color="red">'+index+'</font>]="<font color="red">'+element+'</font>"</font><br>');
  5. }
  6.  
  7. function array_dump(array){
  8.     array.forEach(array_dump_this)
  9. }
  10. function addToArray(array) {
  11.     array.push(prompt("Add items to array or 'q' to stop"));
  12.     if (array[array.length-1] == 'q') {
  13.         array.pop();
  14.         array_dump(array);
  15.     }
  16.     else {
  17.         addToArray(array);
  18.     }
  19. }
  20.  addToArray([]);
  21.  
  22.  function addslashes(string) {
  23.     return string.replace(/\\/g, '\\\\').
  24.         replace(/\u0008/g, '\\b').
  25.         replace(/\t/g, '\\t').
  26.         replace(/\n/g, '\\n').
  27.         replace(/\f/g, '\\f').
  28.         replace(/\r/g, '\\r').
  29.         replace(/'/g, '\\\'').
  30.         replace(/"/g, '\\"');
  31. }
  32.  
  33. function unicode_toHex(label=''){
  34.     var ret='';
  35.     var unicode='';
  36.     for(var offset=0;offset<label.length;offset++){
  37.         unicode=parseInt(label.charCodeAt(offset),10).toString(16);
  38.         ret+=parseInt(unicode.length,10).toString(16)+unicode;
  39.     }
  40.     return ret;
  41. }
  42.  
  43.  function array_op(mode='set',array='aa',arg_label='',arg_value=1){
  44.     var label=unicode_toHex(arg_label);
  45.     var addr=array;
  46.     var addr_last='';
  47.     var i=0;
  48.     for(var offset=0;offset<label.length;offset++){
  49.         addr_last=addr;
  50.         addr+='['+parseInt(label.substring(offset,offset),16)+']';
  51.         if(eval(addr+'===undefined')
  52.             for(i=0;i<=16;i++)
  53.                 eval(addr_last+'.push(\'\');');
  54.     }
  55.     if(eval(addr+'[16]===undefined')
  56.         for(i=0;i<=16;i++)
  57.             eval(addr+'.push(\'\');');
  58.     addr+='[16]';
  59.     switch(mode){
  60.         case 'get':
  61.             return eval(addr);
  62.             break;
  63.         case 'set':
  64.             return eval(addr+'=\''+addslashes(arg_value)+'\'');
  65.             break;
  66.         case 'inc':
  67.             return eval(addr+'+='+arg_value);
  68.             break;
  69.         case 'dec':
  70.             return eval(addr+'-='+arg_value);
  71.         case 'append':
  72.             return eval(addr+'+=\''+addslashes(arg_value)+'\'');
  73.             break;
  74.         case 'seek':
  75.             return addr;
  76.             break;
  77.         default
  78.             return null;
  79.     }
  80. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement