Advertisement
Guest User

Untitled

a guest
Feb 13th, 2015
228
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var funcC = function(x){
  2.     println('funcC');
  3.     function calcuStr(o, s){
  4.         var flag=true;
  5.         s = s.trim();
  6.         //数式の変数を文字列化
  7.         s = s.replace(/([a-zA-Z_][0-9]?)+/g, function(a, b){
  8.             if(!o.hasKey(b)){
  9.                 flag = false;
  10.             }else{
  11.                 return o[b];
  12.             }
  13.         });
  14.         //数式の場合のみevalを行う
  15.         if(flag && /^[\d\(\)-\+\*\/%\s]+$/.test(s)){
  16.             return eval(s);
  17.         }
  18.         return false;
  19.     }
  20.     var id = /zippyshare\.com\/v\/(\w+)\//.test(urlinfo.url) ? RegExp.$1 : null;
  21.     if(x.match("<script type=\"text/javascript\">([^<]+=\s*[\"']/d/" + id + "/[^<]+)</script>")){
  22.         var js = RegExp.$1;
  23.         //DL URLの取得(文字列+数式)
  24.         if(/=\s*(["']\/d\/\w+\/.+?);/.test(js)){
  25.             var durl = RegExp.$1;
  26.             var list = [];
  27.             //文字列と数式部分を分割
  28.             durl.replace(/(["'][^"']*["']|[a-zA-Z0-9\(\)]+(\s*[\+-\/\*%][a-zA-Z0-9\(\)\s]+)*)/g, function(a, b){
  29.                 list.add(b);
  30.             });
  31.             if(list.length){
  32.                 var o = {};
  33.                 var flag = true;
  34.                 var v;
  35.                 //変数名と値を取得
  36.                 js.replace(/var\s+(\w+)\s*=(.+?)\s*;/g, function(a, b, c){
  37.                     v = calcuStr(o, c);
  38.                     if(v) o[b] = v;
  39.                     else flag = false;
  40.                 });
  41.                 //数式部分を文字列化
  42.                 for(var i = 0; flag && i < list.length; i++){
  43.                     v = list[i];
  44.                     if(v[0] != '"' && v[0] != "'"){
  45.                         v = calcuStr(o, v);
  46.                         if(v) list[i] = v;
  47.                         else flag = false;
  48.                     }
  49.                 }
  50.                 if(flag){
  51.                     //文字列と文字列化した数式を結合し引用符を削除
  52.                     durl = list.join('').replace(/["']/g, '');
  53.                     return durl;
  54.                 }
  55.             }
  56.         }
  57.     }
  58.     return false;
  59. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement