Skip to content

Instantly share code, notes, and snippets.

@AvdLee
Created April 10, 2020 08:35
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save AvdLee/fa2bf376795b02c8ad59066355fecfff to your computer and use it in GitHub Desktop.
Save AvdLee/fa2bf376795b02c8ad59066355fecfff to your computer and use it in GitHub Desktop.
A quality check for a repository issues count
struct IssuesCountQualityCheck: RepositoryQualityCheck {
let id: String = UUID().uuidString
let title = "Issues count"
let score: Int
init(repository: Repository) {
switch repository.issuesCount {
case 0..<10:
score = 100
case 10..<20:
score = 75
case 20..<30:
score = 50
case 30..<40:
score = 25
default:
score = 0
}
}
}
@munirwanis
Copy link

Using ClosedRange

struct IssuesCountQualityCheck: RepositoryQualityCheck {
    let id: String = UUID().uuidString
    let title = "Issues count"
    let score: Int

    init(repository: Repository, in range: ClosedRange<Int> = 0...50) {
        if let last = range.last, repository.issuesCount >= last {
            score = 0
        } else {
            score = 100 - Int(Double(repository.issuesCount) / Double(range.count) * 100)
        }
    }
}

Or using maximum count:

struct IssuesCountQualityCheck: RepositoryQualityCheck {
    let id: String = UUID().uuidString
    let title = "Issues count"
    let score: Int

    init(repository: Repository, maximumIssues: Int = 50) {
        if repository.issuesCount >= maximumIssues {
            score = 0
        } else {
            score = 100 - Int(Double(repository.issuesCount) / Double(maximumIssues) * 100)
        }
    }
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment