[Gambas-devel] patch for Auto ChangeLog generator

Yizhou He yizhou_he at ...143...
Sat Aug 7 10:42:18 CEST 2004


This one save change in all the class into one file 
 
'------changed function in class FEditor  
 
 
PUBLIC FUNCTION Save() AS Boolean  
  
  DIM iLig AS Integer  
  DIM iProc AS Integer  
  DIM iFull AS Integer  
  DIM sLig AS String  
  DIM iPosProc AS Integer  
  DIM sData AS String  
  DIM iLine AS Integer  
  DIM iCol AS Integer  
  DIM bChange AS Boolean  
  DIM iCount AS Integer  
  DIM iVoidLine AS Integer  
'---Yizhou He Start----  
  DIM iBackup AS Integer  
  DIM iSaved AS Integer  
  DIM sBackup AS String  
  DIM sSaved AS String  
  DIM aBackup AS String[]  
  DIM aSaved AS String[]  
  DIM sChange AS String  
  DIM iInd AS Integer  
  DIM bFoundChange AS Boolean  
  DIM sLog AS String   
  IF NOT Exist(path & "." & project.Version) THEN COPY path TO path  
& "." & project.Version    
  CreateMenu  
'---Yizhou He Ended---  
  IF Project.ReadOnly THEN RETURN  
  IF NOT $bModify THEN RETURN  
  
  Save.Begin(Path)  
  
  IF $bCleanOnSave THEN  
  
    iProc = -1  
    iLine = edtEditor.Line  
    iCol = edtEditor.Column  
  
    iCount = edtEditor.Lines.Count  
    FOR iLig = 0 TO iCount  
  
      IF iLig < iCount THEN  
        sLig = RTrim(edtEditor.Lines[iLig])  
      ELSE  
        sLig = "SUB gambas()"  
      ENDIF  
  
      IF NOT LTrim(sLig) THEN  
        INC iVoidLine  
        CONTINUE  
      ENDIF  
  
      IF IsProc(sLig) THEN  
        IF iProc >= 0 THEN  
          IF iFull < 2 THEN  
            bChange = TRUE  
            sData = Left(sData, iPosProc)  
            IF iLine > iProc THEN  
              IF iLine < iLig THEN  
                iLine = iProc - 1  
              ELSE  
                iLine = iLine - (iLig - iProc + 1)  
              ENDIF  
            ENDIF  
          ENDIF  
        ENDIF  
        iProc = iLig  
        iFull = 0  
        iPosProc = Len(sData)  
      ELSE  
        INC iFull  
      ENDIF  
  
      IF iLig < iCount THEN  
        sData = sData & String(iVoidLine, "\n") & sLig & "\n"  
        iVoidLine = 0  
      ENDIF  
  
    NEXT  
  
    IF Len(sData) <> Len(edtEditor.Text) THEN  
  
      File.Save(Path, sData)  
  
      edtEditor.Frozen = TRUE  
      edtEditor.Text = sData  
      TRY edtEditor.Line = iLine  
      IF Error = 0 THEN  
        TRY edtEditor.Column = iCol  
      ENDIF  
      edtEditor.Frozen = FALSE  
  
    ENDIF  
  
  ENDIF  
  
  IF NOT bChange THEN File.Save(Path, edtEditor.Text)  
  
  $bModify = FALSE  
  DrawTitle  
  
  Save.End()  
'--------Yizhou He Start----------------------  
IF NOT bChange THEN   
  sSaved=edtEditor.Text & "\n"  
  sBackup=File.Load(path & "." & project.Version) & "\n"  
  iBackup=1  
  iInd=0  
  aBackup=NEW String[]  
  aSaved=NEW String[]  
  WHILE iBackup>0  
    iSaved=iBackup  
    iBackup=Instr(sBackup,"\nEND\n",iBackup+1)  
    IF iBackup>0 THEN   
      aBackup.Add(Mid(sBackup,iSaved,iBackup-iSaved+5),iInd)  
      iBackup=iBackup+5  
      iInd=iInd+1  
    ENDIF  
  WEND  
    
  iBackup=1  
  iInd=0  
  WHILE iBackup>0  
    iSaved=iBackup  
    iBackup=Instr(sSaved,"\nEND\n",iBackup+1)  
    
    IF iBackup>0 THEN   
      aSaved.Add(Mid(sSaved,iSaved,iBackup-iSaved+5),iInd)  
      iBackup=iBackup+5  
      iInd=iInd+1  
    ENDIF  
  WEND  
  
  iBackup=0  
  iSaved=0  
  FOR EACH sBackup IN aBackup  
    FOR EACH sSaved IN aSaved  
      IF Trim(sBackup)=Trim(sSaved) THEN  
          aBackup[iBackup]=""  
          aSaved[iSaved]=""  
        EXIT  
      ENDIF  
      iSaved=iSaved+1      
    NEXT  
    iBackup=iBackup+1      
    iSaved=0  
  NEXT  
  sChange=""  
  IF Exist(File.Dir(path) & "/Changelog " & project.Version &  
".txt") THEN   
    sChange=File.Load(File.Dir(path) & "/Changelog " &  
project.Version & ".txt") & "\n"  
    IF Instr(sChange,"'#----Changes in class " & Name & "  
Start----\n\n")>0 THEN  
      iBackup=Instr(sChange,"'#----Changes in class " & Name & "  
Start----\n\n")  
      iSaved=Instr(sChange,"'#----Changes in class " & Name & "  
Ended----\n\n")+Len("'#----Changes in class " & Name & "  
Ended----\n\n")  
      
      sChange=Left(sChange,iBackup-1) &  
Right(sChange,Len(sChange)-iSaved)  
    ENDIF  
  ENDIF  
  bFoundchange=FALSE  
  sLog= "'#----Changes in class " & Name & " Start----\n\n"  
    
  sLog=sLog & "'#----Sub that will be removed----\n\n"  
  FOR EACH sBackup IN aBackup  
    IF Trim(sBackup)<>"" THEN   
      sLog=sLog & Trim(sBackup) & "\n"   
      bFoundchange=TRUE  
    ENDIF  
  NEXT  
  sLog=sLog & "'#----Sub that will be added----\n\n"  
    
  FOR EACH sSaved IN aSaved  
    IF Trim(sSaved)<>"" THEN   
      sLog=sLog & Trim(sSaved) & "\n"        
      bFoundChange=TRUE  
    ENDIF  
  NEXT    
  sLog=sLog & "'#----Changes in class " & Name & " Ended----\n\n"  
  IF bFoundChange THEN sChange=sChange & sLog  
  file.Save(File.Dir(path) & "/Changelog " & project.Version &  
".txt",sChange)  
    
ENDIF  
'--------Yizhou He Ended----------------------  
CATCH  
  
  RETURN Save.Error()  
  
END  
  
Yizhou He  
Research Technician (Xiong Lab)  
Lineberger Comprehensive Cancer Center  
University of North Carolina at Chapel Hill  
Chapel Hill, NC 27599-7295  
Tel: (919)-962-2143





More information about the Devel mailing list