webForumDet fria alternativet

Tabba aspkod - automatiskt

ASP

2 svar · 283 visningar · startad av erik_nordell

Medlem sedan aug. 2000431 inlägg
Frågan#1

Jag har under åren lärt mig att strukturera min kod med tabbar och kommentarer bättre och bättre...

men, jag har en del "gamla projekt"/filer utan vettig tabbning och långa och klumpiga filer.

Vad jag menar är att jag då inte tabbade ut vid ifsatser, forsatser etc.

Min fråga är, om någon känner till något program som "tabbar ut" automatiskt på rätt ställen så jag slipper tabba mig igenom flera tusen rader kod.

har kollat på google etc. men har inte hittat något, men vad vet jag, det kanske inte kallas autotabbning som jag kallar det :-)
någon som vet något program? i värsta fall får man väl koda ihop ett script som fixar sina aspfiler - om det inte finns något program som redan gör detta (vilket det borde finnas)

Medlem sedan aug. 2000431 inlägg
#2

Sagt som gjort.

skrev ett litet program som autotabbar alla aspfiler i en katalog.

se koden nedan, fattas lite reg.exp. för funktioner och subs men annars fungerar det fint.

<%
'Fixar till alla .asp filer i denna dir.
'Backup/ är backmål.

katalog = "test/"
on error resume next
Set MyDirectory=Server.CreateObject("Scripting.FileSystemObject") 
Set MyFiles=MyDirectory.GetFolder(Server.MapPath(katalog)) 

Set fs=Server.CreateObject("Scripting.FileSystemObject")
if not fs.FolderExists(server.mappath(katalog & "backup/")) = true then
	fs.CreateFolder(server.mappath(katalog & "backup/")) 
end if
		
For Each filefound In MyFiles.files 
	filnamn = filefound.Name
	fil = ""
	
	if right(filnamn,3) = "asp" then

		if fs.FileExists(server.mappath(katalog & "backup/"&filnamn)) = true then
			fs.DeleteFile server.mappath(katalog & "backup/"&filnamn)
		end if
		
		fs.MoveFile server.mappath(katalog & filnamn),server.mappath(katalog & "backup/"&filnamn)

		Set f=fs.OpenTextFile(Server.MapPath(katalog & "backup/"&filnamn),1) 
		do while f.AtEndOfStream = false
			fil = fil & replace(replace(f.ReadLine,vbtab,""),"  ","") & "+++++" 
		loop
		f.Close 
		Set f=Nothing 

		fil = split(fil,"+++++",-1)
		  
		Set objRegExp = New regexp
		objRegExp.Global = True
		objRegExp.IgnoreCase = True

		patt_up = "IF(.*?)THEN|ELSEIF(.*?)THEN|ELSE|DO(.*?)WHILE(.*?)|DO(.*?)UNTIL(.*?)|^FOR(.*?)\=(.*?)TO(.*?)"
		patt_down = "END(.*?)IF|ELSEIF(.*?)THEN|ELSE|^LOOP|^NEXT" 
		tab = 0  
		  
		set f=fs.CreateTextFile(server.mappath(katalog & filnamn),true)  
		for i = 0 to ubound(fil) 
			tmp = "" 
		    
		    objRegExp.Pattern = patt_down
		    Set myMatches = objRegExp.Execute(fil(i)) 
		    For each item in myMatches 
				tab = tab - 1
		    next 
			
		    for k = 0 to tab-1
				tmp = tmp & vbtab 
		    next 
			
			'Skriver till filen
		    f.WriteLine(tmp & fil(i))
		  	
		    objRegExp.Pattern = patt_up
		    Set myMatches = objRegExp.Execute(fil(i)) 
		    For each item in myMatches 
			tab = tab + 1
		    next 
		next

		f.Close
		set f=nothing
		response.write filnamn & " är fixad.<br>"
	end if
	 

Next 
set fs=nothing
Set MyDirectory= Nothing
Set MyFiles= Nothing %>
Medlem sedan jan. 20012 204 inlägg
#3

Nice!

264 ms totalt · 4 externa anrop · v20260731065814-full.e96017d9
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)