Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var funcC = function(x){
- println('funcC');
- function calcuStr(o, s){
- var flag=true;
- s = s.trim();
- //数式の変数を文字列化
- s = s.replace(/([a-zA-Z_][0-9]?)+/g, function(a, b){
- if(!o.hasKey(b)){
- flag = false;
- }else{
- return o[b];
- }
- });
- //数式の場合のみevalを行う
- if(flag && /^[\d\(\)-\+\*\/%\s]+$/.test(s)){
- return eval(s);
- }
- return false;
- }
- var id = /zippyshare\.com\/v\/(\w+)\//.test(urlinfo.url) ? RegExp.$1 : null;
- if(x.match("<script type=\"text/javascript\">([^<]+=\s*[\"']/d/" + id + "/[^<]+)</script>")){
- var js = RegExp.$1;
- //DL URLの取得(文字列+数式)
- if(/=\s*(["']\/d\/\w+\/.+?);/.test(js)){
- var durl = RegExp.$1;
- var list = [];
- //文字列と数式部分を分割
- durl.replace(/(["'][^"']*["']|[a-zA-Z0-9\(\)]+(\s*[\+-\/\*%][a-zA-Z0-9\(\)\s]+)*)/g, function(a, b){
- list.add(b);
- });
- if(list.length){
- var o = {};
- var flag = true;
- var v;
- //変数名と値を取得
- js.replace(/var\s+(\w+)\s*=(.+?)\s*;/g, function(a, b, c){
- v = calcuStr(o, c);
- if(v) o[b] = v;
- else flag = false;
- });
- //数式部分を文字列化
- for(var i = 0; flag && i < list.length; i++){
- v = list[i];
- if(v[0] != '"' && v[0] != "'"){
- v = calcuStr(o, v);
- if(v) list[i] = v;
- else flag = false;
- }
- }
- if(flag){
- //文字列と文字列化した数式を結合し引用符を削除
- durl = list.join('').replace(/["']/g, '');
- return durl;
- }
- }
- }
- }
- return false;
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement