0.0.4 • Published 2 years ago

@djuleayo/intv v0.0.4

Weekly downloads
-
License
ISC
Repository
-
Last release
2 years ago

Intv

intervals like in mathematics - closed, open or half and half

Useful for Dates or any other kind of fun you are making!

How to use

//disjuncted dist 0
const a = i`(1, 0)`
const b = i`(1, 2)` 

console.log(`${a} ∩ ${b} = ${a.intersect(b)}`) // undefined

//intersect of pow 0
const a1 = i`(0, 1]`
const b1 = i`[1, 2)`

console.log(`${a1} ∩ ${b1} = ${a1.intersect(b1)}`) // 1

//and non edge-case intersects

const a2 = i`(0, 2]`
const b2 = i`[1, 2)`

console.log(`${a2} ∩ ${b2} = ${a2.intersect(b2)}`) // i`[1, 2)`

Alergic to strings ?

const intv = i(0, 1, true, false);

Features

  • intersections
  • minus
  • visitor pattern
  • heavily tested

Incoming

  • union
  • RSS - Real subset
type Basic = 
  | undefined
  | number
  | [number, number, boolean, boolean]
  ;
type RSS =
  | Basic
  | Basic[]
  ;

Test

Test was written as brute force of input combinations. One interval can be open and closed in 4 ways. 16 ways for both. Take one interval as pivot and the limits of other can be

  • lower than min
  • same as min
  • inside lower point
  • inside higher point
  • same as max
  • higher than max

For each combination of positions and each combination of open/closed - TEST for each operation This should give you trust to not loose your own eyes taking care for EVERY character of this kind of code!

0.0.4

2 years ago

0.0.3

2 years ago

0.0.2

2 years ago

0.0.1

2 years ago