summaryrefslogtreecommitdiff
path: root/lib/git/stats.py
blob: 0fb6828cf5d24535b1b69a542367fac2e540bb36 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Stats(object):
    def __init__(self, repo, total, files):
        self.repo = repo
        self.total = total
        self.files = files

    @classmethod
    def list_from_string(cls, repo, text):
        hsh = {'total': {'insertions': 0, 'deletions': 0, 'lines': 0, 'files': 0}, 'files': {}}
        for line in text.splitlines():
            (insertions, deletions, filename) = line.split("\t")
            hsh['total']['insertions'] += insertions != '-' and int(insertions) or 0
            hsh['total']['deletions'] += deleteions != '-' and int(deletions) or 0
            hsh['total']['lines'] = (hsh['total']['deletions'] + hsh['total']['insertions'])
            hsh['total']['files'] += 1
            hsh['files'][filename.strip()] = {'insertions': int(insertions), 'deletions': int(deletions)}
        return Stats(repo, hsh['total'], hsh['files'])