mirror of https://github.com/go-gitea/gitea.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
48 lines
1013 B
48 lines
1013 B
// Copyright 2020 The Gitea Authors. All rights reserved. |
|
// SPDX-License-Identifier: MIT |
|
|
|
package git |
|
|
|
import ( |
|
"strings" |
|
"unicode" |
|
) |
|
|
|
const ( |
|
fileSizeLimit int64 = 16 * 1024 // 16 KiB |
|
bigFileSize int64 = 1024 * 1024 // 1 MiB |
|
) |
|
|
|
// mergeLanguageStats mergers language names with different cases. The name with most upper case letters is used. |
|
func mergeLanguageStats(stats map[string]int64) map[string]int64 { |
|
names := map[string]struct { |
|
uniqueName string |
|
upperCount int |
|
}{} |
|
|
|
countUpper := func(s string) (count int) { |
|
for _, r := range s { |
|
if unicode.IsUpper(r) { |
|
count++ |
|
} |
|
} |
|
return count |
|
} |
|
|
|
for name := range stats { |
|
cnt := countUpper(name) |
|
lower := strings.ToLower(name) |
|
if cnt >= names[lower].upperCount { |
|
names[lower] = struct { |
|
uniqueName string |
|
upperCount int |
|
}{uniqueName: name, upperCount: cnt} |
|
} |
|
} |
|
|
|
res := make(map[string]int64, len(names)) |
|
for name, num := range stats { |
|
res[names[strings.ToLower(name)].uniqueName] += num |
|
} |
|
return res |
|
}
|
|
|