Apie indų programerius dirbančius už 2 baksus per valandą
Kadangi turbūt niekam nepaslaptis, kad turiu polinkį į Php, ir visos kitose programavimo kalbose(funkcinėse, objektinėse, skriptinėse) stengiuosi emuliuoti Php galimybes (C++’e nesugebu apsieti be explode();),
tai šiandien negalėjau apsiieiti be dar vienos labai šaunios Php funkcijos – tai print_r();. Jos esmė ta, kad priešingai nei kitų prog. kalbų kurėjai, kurie neturi kažko panašaus į print_r(), print_r nuosekliai išprintina n’tai masyvo, objektų sarašo visus elementus rekursiškai – užtenka paduoti seką į parametrus
.
Taigi šios idėjos vedamas, susiradau alternatyvą print_r(); bene populiariausiai skriptine kalbai – javascript.
Po to kai programa į downtime’ą keletui minučių pasiuntė visą dedikuotą servą, atsidaręs skripto autoriaus puslapį kažkodėl nenustebau – Bandula Binny Bandulay iš Indijos
. Nebūtų non-sense’as, jeigu ne faktas – kad šito Binny’io source kodas yra pirmoje pozicijoje Google
DD.
/**
* Function : dump()
* Arguments: The data - array,hash(associative array),object
* The level - OPTIONAL
* Returns : The textual representation of the array.
* This function was inspired by the print_r function of PHP.
* This will accept some data as the argument and return a
* text that will be a more readable version of the
* array/hash/object that is given.
*/
function dump(arr,level) {
var dumped_text = "";
if(!level) level = 0;
//The padding given at the beginning of the line.
var level_padding = "";
for(var j=0;j<level+1;j++) level_padding += " ";
if(typeof(arr) == 'object') { //Array/Hashes/Objects
for(var item in arr) {
var value = arr[item];
if(typeof(value) == 'object') { //If it is an array,
dumped_text += level_padding + "'" + item + "' ...\n";
dumped_text += dump(value,level+1);
} else {
dumped_text += level_padding + "'" + item + "' => \"" + value + "\"\n";
}
}
} else { //Stings/Chars/Numbers etc.
dumped_text = "===>"+arr+"<===("+typeof(arr)+")";
}
return dumped_text;
}
Norint užlenkti visą sistemą užteko ją pabandyt
:
alert(dump(document.getElementById("xc_obj").childNodes));
Moralas tas – jeigu jau dedi sūrsą, kuris gūglėj bus pirmoj pozicijoj, bent jau jį patikrink.
Nes jeigu tokie pat išminčiai būtų rašę kokį TinyMCE, ar PhpExcel, tai beieškodamas klaidų ir užmiršti kam tau to skripto reikėjo, būtų galima…
(dalyje plačiau – įmečiau pilnai gerai veikiantį kodą).