إعـــــــلان

تقليص
لا يوجد إعلان حتى الآن.

Yasc 1.0

تقليص
X
 
  • تصفية - فلترة
  • الوقت
  • عرض
إلغاء تحديد الكل
مشاركات جديدة

  • Yasc 1.0

    Yet Another Source code line counter
    بيدعم C, C++, C#, Java
    و Python, Perl, Ruby, PHP, BASH

    مكتوب عشان يستخدم كModule فعشان كدا مش إهتميت قوى بطريقة الإستخدام
    script min|max file
    كود:
    #!bin/python
    
    ################################################
    # Written by : Ahmed Youssef
    # Purpose    : Yet Another Source Code Counter
    # Date       : 11/4/2007
    # Site       : Programming-Fr34ks.net
    ################################################
    
    
    
    class LineCounter(object):
        
           def __init__(self, filename, MAX=False, MIN=False):
                 if MAX==MIN:
                     raise Exception, "MAX OR MIN only Should be true"
                 self.shelllike=["python", "ruby", "bash", "perl", "php"]
                 self.clike=["c", "csharp", "cpp", "java"]
                 self.filename=filename
                 if MAX:
                     self.countingType="MAX"
                 else:
                     self.countingType="MIN"
                 
                 fileExt=filename.split(".")[-1] #Get the extension.
                 if fileExt=="py":
                     self.filetype="python"
                 elif fileExt=="java":
                     self.filetype="java"
                 elif fileExt=="cs":
                     self.filetype="csharp"
                 elif fileExt=="cpp" or fileExt=="c":
                     self.filetype="cpp"
                 elif fileExt=="pl":
                     self.filetype="perl"
                 elif fileExt=="rb":
                     self.filetype="ruby"
                 elif fileExt=="php":
                     self.filetype="php"
                 else:
                      self.filetype=None
                 if self.filetype in self.shelllike:
                     self.lang="Scripting"
                 elif self.filetype in self.clike:
                     self.lang="CLike"
                 else:
                        pass #Not yet!.
    
           def countLines(self):
               src=file(self.filename, "r").read()
               lines=src.splitlines()
               strippedLines=[line.strip() for line in lines if not line=='']
               tmp=[line for line in strippedLines if line!='']
               strippedLines=tmp
               
               linesno=0
               if self.countingType=="MAX":
                   linesno=len(lines)
                   return linesno
               else: #MIN
                   if self.lang=="Scripting":
                       for line in strippedLines:
                           if line.startswith("#"):
                               continue
                           else:
                               linesno += 1
                       return linesno
                   elif self.lang=="CLike": #"C-Like"
                        tmp=[]
                        for line in strippedLines:
                            if line.startswith("//"):
                                continue
                            else:
                                tmp += [line]
                        strippedLines=tmp
                        del tmp
    
                        txtSrc='\n'.join(strippedLines)
                        count=0
                        while count<=txtSrc.count("/*"):
                               start, end=txtSrc.index("/*"), txtSrc.index("*/")
                               txtSrc=txtSrc[:start]+""+txtSrc[end+2:]
                               count += 1
                        li=txtSrc.splitlines()
                        linesno=len(li)
                        return linesno
    
    
    ##################################
    # Next, =begin =end like Comments.
    ##################################
                  
    
    import sys
    
    def usage():
        print "Usage: <%s> [Max|Min] <filename>"%(sys.argv[0])
        exit()
                        
    if __name__=="__main__":
        
        if len(sys.argv) != 3:
            usage()
            
        fu=sys.argv[1]
        if fu.lower()=="max":
            MAX, MIN=True, False
        elif fu.lower()=="min":
            MIN, MAX=True, False
    
            
        filename=sys.argv[2]
    
        lc=LineCounter(filename, MIN=MIN, MAX=MAX)
        print lc.countLines()
    مش إهتميت غير بال Standard Coding Styles
    ال Scripting langs بتستخدم ال One-Line Comment حتى لو بتدعم Multi-Line Comments -إذا معترض- تقدر تدعمها بكل سهولة بإستخدام ال while, count trick !


    adios
    التعديل الأخير تم بواسطة StrikerX; الساعة 04-11-2007, 07:16 AM.
    Programming-Fr34ks[dot]NET
    Ma Weblog
    ابدأ بتعلم Python | Ruby
    كتاب البايثون متوافر الآن
    لا اتواجد بهذا المنتدى ... للإتصال

  • #2
    nice work StrikerX

    بس معرفش ال python عندي في حاجه غلط

    تعليق


    • #3
      Sorry كان ال test اللى ضفته .. تم التعديل
      Programming-Fr34ks[dot]NET
      Ma Weblog
      ابدأ بتعلم Python | Ruby
      كتاب البايثون متوافر الآن
      لا اتواجد بهذا المنتدى ... للإتصال

      تعليق


      • #4
        Great Work My Brother .. Thank You So Mach

        -
        The
        Exciting World Is That World Full Of
        Technology

        Microsoft Is Not The Answer. Microsoft Is The Question. No ! ( Or Linux ) Is The Answer



        تعليق

        يعمل...
        X