Last active
May 26, 2016 08:36
-
-
Save divinity76/e3f1da78259ffc00a8765881f340f616 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var defele = document.querySelectorAll(".dc-description")[0]; | |
var fun = {}; | |
fun.name = defele.querySelector(".methodname").textContent; | |
//console.log("name is:"+fun.name); | |
fun.rettype = defele.querySelector(".type").textContent; | |
fun.returnsRealValue=(fun.rettype!=="resource" && !(defele.querySelector(".type") && defele.querySelector(".type").querySelector("a") && defele.querySelector(".type").querySelector("a").href.indexOf("pseudo-types") !== 1 )); | |
// console.log(defele.querySelector(".type").querySelector("a").href.indexOf("pseudo-types"));die(); | |
fun.parameters = []; | |
var parameters = defele.querySelectorAll(".methodparam"); | |
var i = 0; | |
var parameter; | |
if(parameters.length===1 && parameters[0].textContent.trim()==="void"){ | |
//nvm... | |
} else | |
for (i = 0; i < parameters.length; ++i) { | |
var tmp = parameters[i]; | |
parameter = {}; | |
parameter.name = tmp.querySelector(".parameter").textContent; | |
//console.log("name is:"+parameter.name); | |
parameter.isOptional = (tmp.previousSibling && tmp.previousSibling.textContent && tmp.previousSibling.textContent.trim()[0] === '['); | |
//console.log(tmp.previousSibling.textContent); | |
parameter.isRealType = !(tmp.querySelector(".type a") && tmp.querySelector(".type a").href.indexOf("pseudo-types") !== 1); | |
parameter.type = tmp.querySelector(".type").textContent; | |
parameter.initializer=(tmp.querySelector(".initializer") ? tmp.querySelector(".initializer").textContent : ""); | |
fun.parameters.push(parameter); | |
} | |
var ret = 'static function ' + fun.name; | |
ret+=' ( '; | |
//console.log("adding:"+'static function '+fun.name+' ( '); | |
if(fun.parameters.length===0){ | |
ret+="/*void*/ "; | |
} else | |
for (i = 0; i < fun.parameters.length; ++i) { | |
parameter = fun.parameters[i]; | |
if (parameter.isRealType && parameter.type !== "resource") { | |
ret += parameter.type + " " + parameter.name; | |
} else { | |
ret += "\x2f\x2a" + parameter.type + "\x2a\x2f" + " " + parameter.name; | |
} | |
if(parameter.initializer){ | |
if(parameter.initializer.trim().match(/\(\n*\)/)){ | |
console.log("this matches () !: "+parameter.initializer.trim()) | |
ret+=" = null "+"\x2f\x2a "+parameter.initializer.trim()+" \x2a\x2f "; | |
} else { | |
console.log("this does NOT match () !: "+parameter.initializer.trim()) | |
ret+=" "+parameter.initializer.trim(); | |
} | |
} else if (parameter.isOptional) { | |
ret += " = null"; | |
} | |
if (i + 1 < fun.parameters.length) { | |
ret += ', '; | |
} | |
} | |
ret += ")"; | |
if(!fun.returnsRealValue || fun.rettype.trim()==="void"){ | |
ret+="\x2f\x2a"+":"+fun.rettype+"\x2a\x2f"; | |
}else { | |
ret+=":"+fun.rettype; | |
} | |
ret+=" {\n"; | |
ret+= " $args=func_get_args();\n" | |
ret += " $ret=call_user_func_array('" + fun.name + "',$args);\n"; | |
ret += " if(false===$ret){\n"; | |
ret += " "; | |
ret += "throw new RuntimeException('" + fun.name + "() failed. last error: '.self::_return_var_dump(error_get_last()).'. socket_last_error: '.self::_return_var_dump(socket_last_error($socket)).'. socket_strerror: '.self::_return_var_dump(socket_strerror(socket_last_error($socket))));\n"; | |
ret += " }\n"; | |
ret += " return $ret;\n"; | |
ret += "}\n"; | |
ret=" "+ret.split(/\n/g).join("\n "); | |
console.log(ret); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment