Packages

Interval/range operations on Decimal, DateTime, Integer, Float, etc. Ecto support for Postgres range types like int4range, daterange, tstzrange, etc. Implement intervals over your own custom data.

Current section

Files

Jump to
interval CHANGELOG.md
Raw

CHANGELOG.md

# Changelog
## HEAD (v0.2.0)
- Allow opting out of built in implementations by configuring `:interval, Interval.Float: false`
- Adding `Interval.Intervalable` protocol, which allows you to define what interval implementation
to use for value types. This is purely for ergonomic reasons.
- Various `RuntimeError`s handling bad input to a function has been converted to `ArgumentError`s
- Simplified various things
- `Point.previous(a)` and `Point.next(a)` became `point_step/2` in the `Interval.Behaviour`.
- The idea of a "zero" point was removed because it doesn't make sense for all intervals.
- Special-case for empty intervals, which doesn't require implementation-specific behaviour.
- `Interval.new/1` now requires a `:module` option of the specific implementation to use,
however the implementation has a `new/1` that infers this when creating new intervals.
- Ditching the `Interval.Point` protocol in favor of a behaviour for the entire interval.
- Adding `Interval.contains_point?/2`
- Adding `Interval.partition/2`
- Adding `Interval.size/1` and removing the `/2`
## v0.1.3
- Fixed a bug in `Interval.intersection/2` and `Interval.union/2` that causes incorrect bounds
in some cases.
- The internal `Endpoint` struct has been replaced by a simple 2-tuple.
- Empty intervals are now represented by two identical exclusive points.
- Added `Interval.size/2`.
- Added parameterized typespec `t:Interval.t/1`
## v0.1.2
- Fixed a correctness bug in intersection, where intersections between
intervals containing unbounded endpoints would be incorrectly computed.