سلام ، چطوری ؟
حتمآ تا به حال به این مشکل برخوردی که Source یک برنامه را خواستی بخونی ، ولی بخاطر این که تمام فاصله ها را از بین بردن ، قادر به این کار نیستی
مثل برنامه زیر که با "جاوا اسکریپت" نوشته شده.
function Neme( ){var a=0;var b=1;var c=2;var d=4;for(i=0;i<13;++i){alert("i => "+i);if(i%2&a)b=i;else if(!(i%2)&b)a=i;}alert("a => "+a);alert("b => "+b);}
خوندن این جور برنامه ها خیلی سخته ، مخصوصآ وقتی تعداد خطا زیاد بشه !!
فکر کنم همه قبول دارن برنامه زیر قابل فهم تر از بالای هست :
function Neme( ){
var a=0;
var b=1;
var c=2;
var d=4;
for(i=0;i<13;++i){
alert("i => "+i);
if(i%2 a) b=i;
else if( !(i%2) b) a=i;
}
alert("a => "+a);
alert("b => "+b);
}
خوب چون خودم احتیاج داشتم تا Source یک برنامه را بخونم و متآسفانه این برنامه مثل مثال صفر ، تمام فاصله هاش حذف شده بود ، تصمیم گرفتم برنامه ساده ای بنویسم که Source های که این مشکل را دارند درست کنه ، یعنی مثال اول را به دومی تغییر بده .
خلاصه این که یه چیز کوچیک نوشتم ، بعد فکر کردم شاید به درد تو هم بخوره
این برنامه با JavaScript نوشته شده تا همه راحت بتونن استفاده کنن و همون طور که گفتم ، خیلی ساده نوشته شده و زیاد روش کار نکردم ، پس احتمال داره بعضی نکات در نظر گرفته نشده باشه یا این که bug داشته باشه .
خوب خروجی این برنامه دو قسمت بیشتر نداره ، یه جا برای نوشتن Code برنامه مورده نظر که قراره فاصله های حذف شده از آن برگردانده بشه و یک دکمه که باعث تغییرات در Code میشود ، تغییرات حاصل در همان قسمت که Code اولیه نوشته شده ، درج میشود .
برای امتحان میتونی همین مثال اول را در قسمت ورودی برنامه کپی کنی که بعد از فشار دادن دکمه ، مثال دوم بدست میاد .
<html><head><script type=text/javascript>
function s0urc3_Editor(){
textAreaObject=document.getElementById('c0d3_String');
var c0deString=textAreaObject.value;
var c0deSpace='';
var stringLength=c0deString.length;
for(c0de_i=0;c0de_i<stringLength;++c0de_i){
var char__1=c0deString.charAt(c0de_i-1).toLowerCase();
var char_0=c0deString.charAt(c0de_i).toLowerCase();
var char_1=c0deString.charAt(c0de_i+1).toLowerCase();
if(char_0=='f'&char_1=='o'
c0deString.charAt(c0de_i+2).toLowerCase()=='r'
(char__1==' '||char__1=='\n'||char__1=='\t'||
char__1==';'||char__1=='')){
c0de_i+=3;
var EPfor=0;
while((char_0=c0deString.charAt(c0de_i))===' '
c0de_i<stringLength--)
c0deString=c0deString.substring(0,c0de_i++)+
c0deString.substring(c0de_i--);
while(c0de_i<stringLength)
if((char_0=c0deString.charAt(++c0de_i))=='(')++EPfor;
else if(char_0==')')
if(EPfor)--EPfor;
else break;
else if(char_0=="'"||char_0=='"')
while(c0de_i++<stringLength)
if(char_0==c0deString.charAt(c0de_i))break;
else if(c0deString.charAt(c0de_i)=='\\')++c0de_i;
}
else if((char_0==" "||char_0=="\t"||char_0=="\n")
(char_1==" "||char_1=="\t"||char_0=="\n")
--stringLength){
c0deString=c0deString.substring(0,c0de_i++)+
c0deString.substring(c0de_i--);
--c0de_i;
}
else if(char_0=="{"){
c0deSpace+=' ';
c0deString=c0deString.substring(0,c0de_i+1)+"\n"+
c0deSpace+c0deString.substring(1+c0de_i);
c0de_i+=c0deSpace.length+1;
stringLength+=c0deSpace.length+1;
}
else if(char_0=='}'){
while((c0deString.charAt(c0de_i-1)===" "||
c0deString.charAt(c0de_i-1)=="\n")
c0de_i--<stringLength--)
c0deString=c0deString.substring(0,c0de_i)+
c0deString.substring(c0de_i+1);
if((c0deSpaceLength=c0deSpace.length)!=0)
c0deSpace=c0deSpace.substring(0,c0deSpaceLength-6);
c0deString=c0deString.substring(0,c0de_i)+"\n"+
c0deSpace+"}\n"+c0deSpace+
c0deString.substring(1+c0de_i);
c0de_i+=2*c0deSpaceLength-10;
stringLength+=2*c0deSpaceLength-10;
}
else if(char_0==";")
{
c0deString=c0deString.substring(0,c0de_i+1)+"\n"+
c0deSpace+c0deString.substring(1+c0de_i);
c0de_i+=c0deSpace.length+1;
stringLength+=c0deSpace.length+1;
}
else if(char_0=="'"||char_0=='"')
while(c0de_i++<stringLength)
if(char_0==c0deString.charAt(c0de_i))break;
else if(c0deString.charAt(c0de_i)=='\\')++c0de_i;
}
textAreaObject.value=c0deString;
}</script>
</head><body Style="background-color:black"><center>
<textarea id='c0d3_String' Style="width:100%;height:90%;"></textarea>
<br><br><button onclick='s0urc3_Editor()'>Change</button>
</center></body></html>
این C0de زیر ، همون بالای هستش ، این به درد کسای میخوره که بخوان Source برنامه را بخونن ، چون سعی شده فاصله ها در این قسمت از بین نره .
خوشحال میشم برنامه های که مینویسی ببینم ، شاید به کاره منم اومد.
Counter