Ejemplo n.º 1
0
    def test_get_relative_path(self):
        path   = "./test/test.html"
        parent = "./"
        relative_path = xutils.get_relative_path(path, parent)
        self.assertEqual("test/test.html", relative_path)

        path   = "./test.html"
        parent = "./"
        relative_path = xutils.get_relative_path(path, parent)
        self.assertEqual("test.html", relative_path)

        path = "./test/test.html"
        parent = "./test"
        relative_path = xutils.get_relative_path(path, parent)
        self.assertEqual("test.html", relative_path)
Ejemplo n.º 2
0
    def get_line_infos(self, path, recursive=False, type=None, skip_func = lambda fname: False):
        line_infos  = []
        filter_text = self.filter_text
        ext_list    = None

        if type is not None:
            ext_list = CODE_EXT_DICT.get(type)

        if ext_list is None:
            ext_list = CODE_EXT_LIST

        for root, dirs, files in os.walk(path):
            # if root.startswith(blacklist):
            #     # print(root,"is in blacklist")
            #     continue
            for fname in files:
                fpath = os.path.join(root, fname)
                relative_path = xutils.get_relative_path(fpath, path)
                if skip_func(relative_path):
                    continue
                _, ext = os.path.splitext(fname)
                if ext not in ext_list:
                    continue
                try:
                    text = xutils.readfile(fpath)
                    if len(text) == 0:
                        continue
                except:
                    line_infos.append(LinesInfo(fpath))
                    continue
                if filter_text not in text:
                    continue
                lines = text.count("\n") + 1  # 换行符数量+1,最后一行有效
                blanklines = 0
                for line in text.split("\n"):
                    line = line.strip()
                    if line == "":
                        blanklines+=1
                line_infos.append(LinesInfo(fpath, lines, 
                    blanklines = blanklines, root=path))
            if not recursive:
                break

        total_lines  = 0
        total_blanks = 0
        for info in line_infos:
            total_lines  += info.lines
            total_blanks += info.blanklines
        total = LinesInfo("Total", total_lines, 
            blanklines = total_blanks)
        total.fname = None

        if self.lines_sort:
            line_infos.sort(key = lambda info: -info.lines)
        else:
            line_infos.sort(key = lambda info: info.display_name)
        
        line_infos.insert(0, total)
        return line_infos
Ejemplo n.º 3
0
 def __init__(self, fname, lines=0, comments=0, blanklines=0, root=None):
     super(LinesInfo, self).__init__()
     self.fname = fname
     self.lines = lines
     self.comments = comments
     self.blanklines = blanklines
     self.validlines = lines - blanklines
     self.display_name = fname
     if root:
         self.root = root
         self.display_name = xutils.get_relative_path(fname, root)
Ejemplo n.º 4
0
def get_webpath(fpath):
    rpath = xutils.get_relative_path(fpath, xconfig.DATA_DIR)
    return "/data/" + rpath
Ejemplo n.º 5
0
def get_display_name(fpath, parent):
    path = xutils.get_relative_path(fpath, parent)
    return xutils.unquote(path)