| 536 | } |
| 537 | |
| 538 | func filterByLanguage(repos []map[string]interface{}, lang string) []map[string]interface{} { |
| 539 | langLower := strings.ToLower(lang) |
| 540 | |
| 541 | // Build set of accepted languages |
| 542 | accepted := map[string]bool{langLower: true} |
| 543 | // JavaScript ecosystem includes TypeScript |
| 544 | if langLower == "javascript" { |
| 545 | accepted["typescript"] = true |
| 546 | } |
| 547 | if langLower == "typescript" { |
| 548 | accepted["javascript"] = true |
| 549 | } |
| 550 | |
| 551 | filtered := make([]map[string]interface{}, 0) |
| 552 | for _, r := range repos { |
| 553 | repoLang := strings.ToLower(fmt.Sprintf("%v", r["language"])) |
| 554 | if accepted[repoLang] { |
| 555 | filtered = append(filtered, r) |
| 556 | } |
| 557 | } |
| 558 | // If filter removed everything, return unfiltered |
| 559 | if len(filtered) == 0 { |
| 560 | return repos |
| 561 | } |
| 562 | return filtered |
| 563 | } |
| 564 | |
| 565 | func filterJunkRepos(repos []map[string]interface{}) []map[string]interface{} { |
| 566 | filtered := make([]map[string]interface{}, 0, len(repos)) |