Skip to content

Instantly share code, notes, and snippets.

@koher
Last active August 4, 2017 08:25
Show Gist options
  • Save koher/5fd8f29a99de47457431cded99987d4f to your computer and use it in GitHub Desktop.
Save koher/5fd8f29a99de47457431cded99987d4f to your computer and use it in GitHub Desktop.
extension CountableRange {
public func contains(_ range: CountableRange<Bound>) -> Bool {
return lowerBound <= range.lowerBound && range.upperBound <= upperBound
}
public func contains(_ range: CountableClosedRange<Bound>) -> Bool {
return lowerBound <= range.lowerBound && range.upperBound < upperBound
}
public func contains(_ range: Range<Bound>) -> Bool {
return lowerBound <= range.lowerBound && range.upperBound <= upperBound
}
public func contains(_ range: ClosedRange<Bound>) -> Bool {
return lowerBound <= range.lowerBound && range.upperBound < upperBound
}
}
extension CountableClosedRange {
public func contains(_ range: CountableRange<Bound>) -> Bool {
return lowerBound <= range.lowerBound && range.upperBound <= upperBound.advanced(by: 1)
}
public func contains(_ range: CountableClosedRange<Bound>) -> Bool {
return lowerBound <= range.lowerBound && range.upperBound <= upperBound
}
public func contains(_ range: Range<Bound>) -> Bool {
return lowerBound <= range.lowerBound && range.upperBound <= upperBound.advanced(by: 1)
}
public func contains(_ range: ClosedRange<Bound>) -> Bool {
return lowerBound <= range.lowerBound && range.upperBound <= upperBound
}
}
extension Range where Bound: Strideable, Bound.Stride: SignedInteger {
public func contains(_ range: CountableRange<Bound>) -> Bool {
return lowerBound <= range.lowerBound && range.upperBound <= upperBound
}
public func contains(_ range: CountableClosedRange<Bound>) -> Bool {
return lowerBound <= range.lowerBound && range.upperBound < upperBound
}
}
extension Range {
public func contains(_ range: Range<Bound>) -> Bool {
return lowerBound <= range.lowerBound && range.upperBound <= upperBound
}
public func contains(_ range: ClosedRange<Bound>) -> Bool {
return lowerBound <= range.lowerBound && range.upperBound < upperBound
}
}
extension ClosedRange where Bound: Strideable, Bound.Stride: SignedInteger {
public func contains(_ range: CountableRange<Bound>) -> Bool {
return lowerBound <= range.lowerBound && range.upperBound <= upperBound.advanced(by: 1)
}
public func contains(_ range: CountableClosedRange<Bound>) -> Bool {
return lowerBound <= range.lowerBound && range.upperBound <= upperBound
}
public func contains(_ range: Range<Bound>) -> Bool {
return lowerBound <= range.lowerBound && range.upperBound <= upperBound.advanced(by: 1)
}
}
extension ClosedRange {
public func contains(_ range: Range<Bound>) -> Bool {
return lowerBound <= range.lowerBound && range.upperBound <= upperBound
}
public func contains(_ range: ClosedRange<Bound>) -> Bool {
return lowerBound <= range.lowerBound && range.upperBound <= upperBound
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment