Skip to content

Commit 4e5e2e9

Browse files
author
myrddin89
authored
Range interface for Intervals (#76)
* Range interface for Intervals * Fixing error for unsupported keyword syntax * Fixing error for unsupported keyword step and length * Fix error constructing range with older Julia versions * New version 0.5.3 for range support on closed intervals
1 parent 76a5a2a commit 4e5e2e9

File tree

3 files changed

+30
-1
lines changed

3 files changed

+30
-1
lines changed

Project.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name = "IntervalSets"
22
uuid = "8197267c-284f-5f27-9208-e0e47529a953"
3-
version = "0.5.2"
3+
version = "0.5.3"
44

55
[deps]
66
Dates = "ade2ca70-3891-5945-98fb-dc099432e06a"

src/IntervalSets.jl

+21
Original file line numberDiff line numberDiff line change
@@ -250,6 +250,27 @@ UnitRange{T}(i::TypedEndpointsInterval{:closed,:closed,I}) where {T<:Integer,I<:
250250
UnitRange(i::TypedEndpointsInterval{:closed,:closed,I}) where {I<:Integer} = UnitRange{I}(i)
251251
range(i::TypedEndpointsInterval{:closed,:closed,I}) where {I<:Integer} = UnitRange{I}(i)
252252

253+
"""
254+
range(i::ClosedInterval; step, length)
255+
range(i::ClosedInterval, len::Integer)
256+
257+
Constructs a range of a specified step or length.
258+
"""
259+
range(i::TypedEndpointsInterval{:closed,:closed}; step=nothing, length=nothing) =
260+
range(leftendpoint(i); stop=rightendpoint(i), step=step, length=length)
261+
range(i::TypedEndpointsInterval{:closed,:closed}, len::Integer) = range(i; length=len)
262+
263+
"""
264+
range(i::Interval{:closed,:open}; length)
265+
range(i::Interval{:closed,:open}, len::Integer)
266+
267+
Constructs a range of a specified length with `step=width(i)/length`.
268+
"""
269+
range(i::TypedEndpointsInterval{:closed,:open}; length::Integer) =
270+
range(leftendpoint(i); step=width(i)/length, length=length)
271+
range(i::TypedEndpointsInterval{:closed,:open}, len::Integer) = range(i; length=len)
272+
273+
253274
"""
254275
duration(iv)
255276

test/runtests.jl

+8
Original file line numberDiff line numberDiff line change
@@ -697,6 +697,14 @@ struct IncompleteInterval <: AbstractInterval{Int} end
697697
@test Base.Slice(1..5) == Base.Slice{UnitRange{Int}}(1..5) == Base.Slice(1:5)
698698
end
699699

700+
@testset "range" begin
701+
@test range(0..1, 10) == range(0; stop=1, length=10)
702+
@test range(0..1; length=10) == range(0; stop=1, length=10)
703+
@test range(0..1; step=1/10) == range(0; stop=1, step=1/10)
704+
@test range(Interval{:closed,:open}(0..1), 10) == range(0; step=1/10, length=10)
705+
@test range(Interval{:closed,:open}(0..1); length=10) == range(0; step=1/10, length=10)
706+
end
707+
700708
@testset "IteratorSize" begin
701709
@test Base.IteratorSize(ClosedInterval) == Base.SizeUnknown()
702710
end

0 commit comments

Comments
 (0)